We already have at least two GPGPU standards jostling for attention from multi-core coders, but compiler developer PathScale has revealed that it reckons it can better both OpenCL and CUDA with a new open GPGPU standard, in collaboration with other industry leading partners.
Speaking to THINQ, PathScale’s chief technology officer Christopher Bergström, explained that the creator of highly-optimised compilers hopes to develop "another open standard that will hopefully compete with OpenCL, and be just as high-performance, have an easier programming model and end up helping everybody."
Explaining where the idea came from, Bergström said, "PathScale is building an optimised GPU compiler, and we work on a very similar codebase to what Nvidia built for their Nvidia Toolkit. About a year ago, we thought that we could take basically CUDA and everything else, do further research on it and build something better optimised.
"We build highly-optimised compilers,' continues Bergström, "and with Nvidia we realised we had to go a step deeper. You have to handle the runtime and kernel driver in addition, so therefore we need people in the open source community helping us build drivers and so on. We might be traditionally a compiler company, but we’re also trying to promote and advocate open source drivers, so that they run well with our compiler."
As such, PathScale has started offering free Fermi cards to open source developers in a bid to encourage the development of solid open source drivers.
So why do we need another GPGPU computing standard? Bergström explains that OpenCL and CUDA are a long way behind software development in terms of coder-friendliness.
"Currently Nvidia is still pushing their antiquated, dare I say crappy, CUDA programming model," says Bergström, "which is highly explicit and very expensive for people who write large bodies of code. The scientific community for specialised code has bitten the bullet and done it, but for the most part we’re not porting lines and lines of code to CUDA, and we’re definitely not porting it to OpenCL.
"There have basically been three evolutions of GPGPU," says Bergström. "There's the fully new language that explicitly defines everything for offloading to the GPU – OpenCL and CUDA.
"Then there’s the middle ground approach that just needs an incremental change of code to offload to the GPU. Then there’s the third evolution of offloading – the fully automatic solution, where zero code changes and your typical SIMD or vectoriser will recognise that this loop should be offloaded to the GPU."
Specific details of the project are still under wraps at the moment, but Bergström did say that PathScale was already working with other developers in the field of multi-core and GPGPU programming, and that it was currently in the process of alpha-testing its work. Although it's being developed with other partners, Bergström says that PathScale's implementation of the new programming model will be fully open source.
However, Bergström says that Nvidia hasn’t been involved in any of the work so far. "Nvidia has nothing to do with this," he says. "It’s just a situation where we think we can build something better than them, and basically kick their ass and push open source.”