Lopata Hall, Room 101
Efficient and Functional Parallelism
Recent advances in hardware has brought shared-memory parallelism to the mainstream. From $40 hobby kits (e.g., Raspberry Pie) to million dollar supercomputers, nearly every computing device today is a parallel computer. Although parallel hardware has come of age, parallel software is in its infancy and writing parallel programs continues to be a major challenge. Perhaps the most important problem is that many procedural programming languages such as C/C++, Java, are unable to differentiate between parallelism and concurrency, and suffer from so called "concurrency bugs" that usually lead to incorrect and even deadly outcomes. Many researchers have claimed that parallel functional programming can solve this problem, because they simply avoid all concurrency bugs. But, parallel functional programming languages today do not usually deliver performance that can match those of procedural languages.
I believe that the problems of functional languages are far less serious than the problems of procedural ones and that their efficiency challenges can be solved. In this talk, I present results to support this hypothesis. These results exploit several structural properties of parallel functional programs to achieve efficiency and scalability. I specifically focus on the memory management problem (memory allocation and automatic reclamation or garbage collection), the thread scheduler, and their interaction. At Carnegie Mellon, we have been implementing these techniques in the context of the Parallel ML language and evaluating them. Our results thus far supports our basic hypothesis---that parallel functional programming can be efficient. The results also point to many new and interesting research directions in the design and development of programming languages.
Umut Acar is an Associate Professor at Carnegie Mellon University. He is interested in the theory and practice of programming and applying computer science to improve quality and accessibility of education.