1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems

Facebook RSS Twitter Twitter Google Plus

Phoronix Test Suite


In-Fighting Continues Over OpenACC In GCC


Published on 21 November 2013 11:47 AM EST
Written by Michael Larabel in Compiler

Last week I wrote about OpenACC 2.0 being worked on for GCC complete with NVIDIA GPU acceleration support. While it's quite exciting on the surface and great to see the open-source compilers supporting more parallel programming standards, underneath it's not necessarily a bright story. Here's an update.

After that story last week of Mentor Graphics working on the OpenACC 2.0 support for the GNU Compiler Collection in cooperation with NVIDIA and Oak Ridge National Labs, there was a Phoronix story of how NVIDIA and Mentor could harm GCC. The information in that article was from a trusted source on compilers.

Nathan Sidwell of Code Sourcery (owned by Mentor Graphics and frequently working on GCC) issued a statement last night on the matter of OpenACC in GCC:
There seems to have been some confusion about the OpenACC development that we're currently engaged in. I thought I'd write here to clarify some things.

As Thomas previously announced, we're working on an implementation of OpenACC 2.0 for x86-64/Linux host systems and PTX accelerator devices. OpenACC is specified at http://www.openacc-standard.org/. There are several proprietary implementations of OpenACC targeting a variety of accelerator devices. This is an opportunity to make OpenACC available in a free software compiler.

For this development the accelerated code will be PTX -- one has to start somewhere. PTX is an ISA for a virtual machine. Its specification is public and available at http://docs.nvidia.com/cuda/parallel-thread-execution/index.html. To get PTX code executed on a compute device (currently) requires use of Nvidia's driver library. That library is available for zero cost and its API is documented at http://docs.nvidia.com/cuda/cuda-driver-api/index.html. Although all those links contain the name 'cuda', don't be misled by that -- it's an accident of history.

Nothing in this project is preventing others from working on OpenACC support for different accelerator devices. Neither will anyone be forced to build OpenACC support -- as with OpenMP, there will be a configuration option allowing one to configure a compiler without it.

Targeting PTX, an ISA for use with a single manufacturer's devices, is not different from targeting the other single-manufacturer ISAs that GCC already supports. It is, of course, a steering committee decision as to whether a new backend is acceptable once it meets technical review.

GCC supports systems with proprietary runtimes. Historically GCC had to work with proprietary C libraries -- for instance, I started in GCC development using a sparc-solaris system. Now that Linux has become so prevalent, and its C library is glibc, there's the opportunity to build GCC with and for free software libraries. However, that in itself, hasn't caused any of the non-free host or target OS support to be removed. Nor should it, IMHO, prevent GCC from adding support for systems that have proprietary components (IIUC some CPUs rely on an opaque blob of microcode in order to function).

As many of you will know, CodeSourcery, which Mentor purchased a few years ago, has been contributing to GCC and other GNU projects for over 15 years. Several Sourcerers are maintainers of particular pieces of the GNU project (mainly toolchain components).

For those curious about what my confidential source had to say in response to this message, he wrote:
You're taking a piece of open source software and targeting a proprietary byte-code which also depends entirely on closed source software. This benefits nobody but NVIDIA. You may come across naive, but you and I both know ptxas and everything underneath is closed source.
Many proprietary and closed source solutions do have publicly available interfaces - This is no service to the community - it's simply the way NVIDIA has exposed their proprietary technology. AMD has pushed HSA and HSA IL as a standard and encouraged others to implement it. *That* is an example of something good and open - PTX is the exact opposite
It's not an accident - PTX targets and is limited to *NVIDIA* cuda capable devices.
Who are you kidding? You're getting paid to do this work by NVIDIA - If it was so great for the community someone would have volunteered a long time ago. PTX isn't an ISA - it's a byte-code.. Your statement above is slightly misleading. What's more is a libc runtime and the link time exception you refer to is all POSIX. (An open standard) Ironically the libc in solaris is now mostly open source.

You're trying to compare a minor runtime license exception with a fully encumbered target on top of a pseudo standard?

OpenACC started out as invite only
OpenACC has no representation from IBM, AMD, Intel or other significant HPC semiconductor companies
OpenACC is NVIDIA's show and their way to bypass waiting on OpenMP 4 to actually do what they want.
OpenACC is pay-to-play.
OpenACC validate testsuite is closed and private

What about OpenACC is really open? Their poorly documented attempt to define what the pragmas should do?

Here's the point - At which point should the community say no.

1) ptxas and nvidia runtimes are not freely redistributable
2) they are closed source
3) ptx only benefits nvidia

Should gcc just suck in every press release announcement? Who gave gcc community legal advice on this?

I expected the gcc community to maintain a certain threshold of ethics here. Give me 1 good reason why an open source compiler should allow itself to be sold to the most closed source backends anyway.

1) What's underneath PTX isn't publicly documented at all - it's closed
2) NVIDIA driver is all closed
3) NVIDIA's runtimes are closed

Just because Mentor graphics sold out - someone in the gcc community should have the guts to stand up and point out the problems with what's going on here..

Well, there's the views on OpenACC support in GCC from the two extremes. My own personal view is rather neutral in that it would be nice if this was a non-issue with an open-source NVIDIA driver at least supporting PTX if not other hardware, but that's not the case, and at least there's some commercial investment going into open-source compilers. When OpenACC patches come to GCC, I will happily benchmark them and I am a happy user of NVIDIA's binary drivers because they are simply the best right now for features, performance, and reliability. The open-source Linux GPU drivers from Intel, AMD, and NVIDIA are all behind their proprietary/Windows competition in key areas. For the binary driver out of AMD, Catalyst on Linux still has big problems like as shown in my AMD R9 290 review. NVIDIA's Linux driver is closed-source, but it's simply the best right now for those who want features/performance/reliability and are willing to pardon it for not being open-source.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. Intel Xeon E5-1680 v3 & E5-2687W v3 Compared To The Core i7 5960X On Linux
  2. Intel 120GB 530 Series SSD Linux Performance
  3. Btrfs/EXT4/XFS/F2FS RAID 0/1/5/6/10 Linux Benchmarks On Four SSDs
  4. AMD's Windows Catalyst Driver Remains Largely Faster Than Linux Drivers
Latest Linux Articles
  1. NVIDIA vs. Nouveau Drivers With Linux 3.18 + Mesa 10.4-devel
  2. Is The Open-Source NVIDIA Driver Fast Enough For Steam On Linux Gaming?
  3. Linux 3.18 File-System Performance Minimally Changed But Possible Regressions
  4. AMD Radeon Gallium3D Is Catching Up & Sometimes Beating Catalyst On Linux
Latest Linux News
  1. Linux 3.18-rc6 Released, A Worrisome Regression Remains
  2. HandBrake 0.10 Brings H.265 & VP8 Encoders
  3. Gngr: A New Web Browser Focused On Privacy
  4. Linux 3.18 Kernel: Not Much Change With Intel Haswell Performance
  5. More File-System Tests Of The Linux 3.18 Kernel
  6. Using NVIDIA's NVENC On Linux With FFmpeg
  7. There's Talk Again About An "Open To The Core" Ubuntu Laptop
  8. PowerVR SGX Driver Code Gets Leaked
  9. V2 Of KDBUS Published For Linux Kernel Review
  10. VirtualBox 4.3.20 Arrives, Still No Sign Of VirtualBox 4.4
Latest Forum Discussions
  1. PulseAudio 6.0 Is Coming & Other Linux Audio Plans For The Future
  2. Debian Developer Resigns From The Systemd Maintainership Team
  3. Roadmap to Catalyst 14.10 ?
  4. Updated and Optimized Ubuntu Free Graphics Drivers
  5. Cant get working Kaveri APU - A10-7850k
  6. Script for Fan Speed Control
  7. Debian Init System Coupling Vote Results
  8. The Slides Announcing The New "AMDGPU" Kernel Driver