Industry and research communities face increasing workforce preparedness challenges in parallel (and distributed) computing, due to today’s ubiquitous multi-/many-core and cloud computing. Underlying the excitement over technical details of the newest platforms is one of the thorniest questions facing educators and practitioners -- What languages, libraries, or programming models are best suited to make use of current and future innovations?
At IDF 2011, a panel of industry and academic experts will debate these questions and then help lead workshops with attendees to come up with recommendations.
The panel will be followed by moderated breakouts for further discussion and to gather ideas from participants about industry and research needs regarding workforce preparedness in parallel computing.
Please attend in person if you can. We can provide free passes for interested for educators. Register now for a free IDF day pass using promo code DCPACN1.
Come prepared to discuss. Participants' views and suggestions may be integrated with results from similar discussions at past and up-coming events in a forthcoming article.
Panelists and disicussion leaders include- Dr. John Gustafson, Intel Labs; Dr. Benedict Gaster, AMD (Yes. That AMD); Kevin Goldsmith, Adobe; Dr. Tim Mattson ,Intel Research; Steve Teixeira, Microsoft & Dr. Matthew Wolf, Georgia Tech/Oak Ridge Labs .
In the coming days, many of the panelist will write blogs on the topic. I'll point to them from here when I get them, but untill then, I'll post some of their ideas.
John Gustafson, is moderator, and thus forbidden from having an opinion on a specfic model, but looking down from his august postion he coments on the larger picture.
"Teaching parallel programming is the same as teaching programming; it is too important to be something you “add on” to an undergraduate education after serial programming has been mastered. It should pervade computer science the same way the understanding of data structures and numerical representation pervades computer science: from the freshman year. We should also stop repeating the myth that “parallel programming is MUCH harder than serial programming”; sometimes it’s actually more natural than, say, expressing a loop to accomplish a data-parallel task. The truth is that ALL programming is difficult to do well, and parallelism only seems hard to those entrenched in serial thinking or who already have serial software to convert."
He adds, “Also, the most important thing to teach isn’t the concurrency part of parallel programming; concurrency is easy . The tough part is data placement. Any teaching program that abstracts away the cost of placing and moving data is doing a disservice to its students.”
Dr. Gaster writes that specific languages are beside the point. "The move towards Multicore and Manycore has again pushed the envelope in computer science for the development of new programming languages and paradigms but is this really what's needed?
New languages and paradigms make it hard for educators to know what they should teach... There are too many programing languages to mention, each of which have their advantages and disadvantages, but many of them lack concurrency abstractions and ones that do have them often emit a strong model for reasoning about communication and shared access to data.
The last few years have seen an effort to define stronger memory models for shared memory programming with respect to data race free programs (DRF), c.f. Java and C++11, and with this direction comes hope. Not because DRF shared memory programming is necessarily the final answer but because it looks beyond a particular programming language or paradigm and instead tries to address the fundamentals of building software for Multicore and Manycore machines, by providing a clear semantics for when and how data can be shared with others. With this in mind it is not what programming language should be taught but the foundations, architectures, memory models, design patterns, and so on that will lead the next generation of students to develop applications that will scale from today's Multicore and Manycore systems to tomorrow's one zillion core machines."
Tim Mattson, gave me a lengthy preamble to his ideas. Here's the first two paragraphs , click more below to read the whole arguement (It's worth it.) "The programming model doesn’t matter as long as the focus is on industry standard models people actually use. And the approach used must stress mapping algorithms onto the details of a computer’s architecture.
Before “functional programmers” and other “abstraction loving lunatics” start foaming at the mouth, let me provide some background to my answer. First off, my target is computer science undergraduates. As educators, we have a duty to prepare them for the labor market they will face. And the fact of the matter is, external factors dictate the programming model; not the preferences of the programmer. Hence, a professional programmer must be flexible and able to make progress with any model that is available. And as the famous essay “Worse is better” makes abundantly clear, “portable and available everywhere” wins over “elegance” any day . . . more"
Kevin Goldsmith, who leads teams working on photoshop and other Adobe flagship products is concerned the skill-sets possessed by Computer Science graduates. He told me that he when he looks at who to hire, he looks for candidates who understand parallel models and have used them to solve real problems. He wants to hire people who can reason about trade-offs and reason over solutions to problems.
Matt Wolf, who will be leadingthe breakouts adds "This is not the way of the future, it’s already here. Injecting paralleism into the curriculum, and teahing it, is not as hard as you think. He enciourages both attendees and readers of this blog to think about a few key questions:
- As a hiring manger, what is the portfolio of a well-rounded engineer? What are the things that you want you want your developers to know now such that they will still be valuable to your company when technology has changed?
As an educator, given the rate of change, what can you teach them now so that they will still be viable when they graduate and technology has moved on
The session is convened by the Educational Alliance for a Parallel Future (EAPF.org), an organization with wide-ranging industry/academia/research membership, including Intel, ACM, AMD, and other prominent technology corporations.
The EAPF has an on-going interest in propagating best practices and novel ideas from an educational perspective, as well as technical interests in the space.