This paper addresses the question of whether message passing provides an adequate programming model to address current needs in programming multicore processors. It studies the pitfalls of message passing as a concurrency model, and argues that programmers need more structure than what is provided by today's popular message passing libraries. Collective operations and design patterns can help a great deal, but as the use of concurrency in programming increases, application programmers will have increasing difficulty identifying and combining these into complex operations. Moreover, some challenges, such as ensuring data determinacy and managing deadlock and buffer memory, are extremely subtle, and require considerable expertise to implement correctly. This paper illustrates this point by giving a few problematic examples. I argue that application programmers should not have to deal with many of these challenges, but with today's message passing libraries, they have no choice. The solution is to provide infrastructure-level support implementing more disciplined concurrent models of computation (MoCs). I show excellent implementations of the requisite mechanisms, thus enabling application programmers to focus on the functionality of the application rather than on avoiding the pitfalls of concurrent programming.




Download Full History