This page contains a Flash digital edition of a book.
heterogeneous computing


are meanwhile being sold by many vendors. Because of their highly parallel nature, though, the problem of programming them remains one stumbling block to their widespread adoption. ‘If GPUs are to become pervasive, we need a standardised code base,’ says Barry Bolding, VP of the products division at Cray. ‘This consists of three things: no need to have multiple apps for CPU-only and CPU/GPU systems, a complete set of development tools, and the ability to mix and match these tools without any worries. Only then will engineers move to highly scalable systems.’


T


GPU = heterogenous By its very nature, writing GPU code is writing heterogeneous code notes Sumit Gupta, Tesla product manager at Nvidia, because systems generally never have a GPU alone. As for programming them, there are


several beliefs circulating in the scientific community he regards as myths. One is that GPU programming is extremely difficult. ‘It’s not that GPU programming in itself is tough, it’s that we’ve all been educated in sequential programming, so moving to the parallel paradigm is difficult for most people. However, it can’t be all that difficult if we have 150,000 people programming in Cuda today.’ He adds that you often have to modify


Overcoming hurdles to


an application so it doesn’t hide its own parallelism. Restructuring code literally forces you to think of a problem in a new way, and you’ll see performance boosts even on multicore systems that have no GPUs. He adds that, ‘we all have to start learning to parallelise our programs. There is simply no other choice.’ Gupta then points to three primary


parallelisation


Suppliers are working feverishly to provide tools and methods that make it easier to program heterogeneous CPU/GPU systems, as Paul Schreier discovers www.scientific-computing.com


programming options for Nvidia GPUs. First is to use Cuda C or a similar dedicated compiler, but this definitely requires the restructuring of some parts of the code. Next are function libraries or the use of programs such as Matlab, which incorporate such libraries. This, he says, is currently the easiest for new programmers, and in a few weeks of work speedups of 2x to 3x are easily possible. Third are compiler directives, which Gupta indicates are becoming very popular, where a month or two of work can lead to a 2x to 5x speed-up. It’s interesting that Nvidia is not


developing its own directives, and to his OCTOBER/NOVEMBER 2011 27


he scientific community has recognised the enormous benefits of accelerators such as GPGPUs, and systems with CPU/GPU combinations


Page 1  |  Page 2  |  Page 3  |  Page 4  |  Page 5  |  Page 6  |  Page 7  |  Page 8  |  Page 9  |  Page 10  |  Page 11  |  Page 12  |  Page 13  |  Page 14  |  Page 15  |  Page 16  |  Page 17  |  Page 18  |  Page 19  |  Page 20  |  Page 21  |  Page 22  |  Page 23  |  Page 24  |  Page 25  |  Page 26  |  Page 27  |  Page 28  |  Page 29  |  Page 30  |  Page 31  |  Page 32  |  Page 33  |  Page 34  |  Page 35  |  Page 36  |  Page 37  |  Page 38  |  Page 39  |  Page 40  |  Page 41  |  Page 42  |  Page 43  |  Page 44  |  Page 45  |  Page 46  |  Page 47  |  Page 48  |  Page 49  |  Page 50  |  Page 51  |  Page 52