[arch-dev-public] Opencl/Cuda headers

Stéphane Gaudreault stephane at archlinux.org
Sat Oct 30 00:45:58 EDT 2010


Since version 260.19.12, upstream developers of nvidia-utils dropped C headers 
for OpenCL and Cuda. After a discussion with Ionuț on IRC, we agreed that it 
would be good to ask other developers on the best way to provide these 
headers.
 
For those unfamiliar with these programming languages/libraries, there are 
part of the so-called GPGPU technologies (General-Purpose Processing on 
Graphical Processing Unit), where the primary objective is to perform any type 
of parallel computing on graphics processors. For example, I am using OpenCL 
in a personal programming project to speed up a partial differential equation 
solver. OpenCL is an open standard that has been recently (May 2009) ratified 
by The Khronos Group. C for Cuda is a similar proprietary solutions from 
Nvidia. Nvidia-utils contains the dynamic libraries for both OpenCL and Cuda. 
Other vendors, like AMD and Intel, provide or will provide soon an 
implementation of OpenCL for their GPUs.
 
To get a satisfactory OpenCL developement environment, it could be as simple 
as creating a new package that provide the header files. These headers can be 
either downloaded from The Khronos Group[1] (like this [2]) or extracted from 
the Nividia toolkit[3].
 
However, for Cuda, it might be a little more complicated because it must use a 
compiler provided by nvidia (nvcc).  A solution may be to create a package for 
the Cuda Toolkit. The main disadvantage of this solution is the addition of 
proprietary software for which we can only provide limited support in case of 
bugs or incompatibility with other updates. According to the maintainer of the 
Cuda package in AUR [4], Cuda requires gcc version 4.4 (it is broken with 
version 4.5) and sometimes releases depend on beta drivers[5]. I think it is 
probably better to wait until these dependency problems are fixed before 
thinking about inclusion in [extra] or [community].
 
My suggestion would be to package only OpenCL headers (Khronos version) and 
eventually discuss addition of Cuda if it becomes easier to maintain in a 
rolling release distribution. The new "khronos-opencl-headers" package could 
be added as optional dependencies for nvidia-utils which will also include a 
"provides=('libCL')"[6]. I tested this solution on several codes and it works 
well. It also seems that Debian is going to do something very similar[7].
 
So what do other people think about this problem ?
 
Stéphane
 
 [1] http://www.khronos.org/registry/cl
 [2] http://aur.archlinux.org/packages.php?ID=35367
 [3] http://developer.nvidia.com/object/cuda_3_2_toolkit_rc.html
 [4] http://aur.archlinux.org/packages.php?ID=3D23597
 [5] Personnal communication
 [6] cf. FS#20558
 [7] http://ftp-master.debian.org/new/khronos-opencl-
headers_1.0-2010.06.13-1.html


More information about the arch-dev-public mailing list