[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