|
Maximizing the benefits of parallel computing goes hand in hand with making the best use of parallel human resources. With teams of developers, architects, project managers, and testers often scattered across the globe, coordinating the human element becomes just as important as leveraging added computing power. Multiple-core processing may be hogging the spotlight, but parallel computing commonly involves multiple-processor systems and distributed, heterogeneous processor systems as well. However, parallelism requires adaptation on the part of programmers as well as organizational management. Traditional sequential programming models can be tweaked for parallelism, but doing so is both tedious and error-prone. It's better to go with dataflow languages, which handle parallel branches more naturally and offer developers a more graphical representation of the process. Ideally, a programming language hides most threading challenges from users, and minimizes the effects of deadlocks and processor caches. As cores have increased in number, so PCs have become more like high-performance computers, making the intelligent layout of computation critical. The use of new 'software-defined silicon' (also known as 'elemental computing arrays') can help with this. On the human side, globally distributed staffing is a reality due not only to low-cost labor but also the access to talent and 24-hour workdays it enables. However, human parallelism requires constant, effective communication, regular travel, and balancing the experience levels of everyone involved. Scheduling daily tests and frequent project synchronization points, as well as making good use of expat and local talent, are also key elements.
|