[LLVMdev] ANN: libclc (OpenCL C library implementation)

Ralf Karrenberg Chareos at gmx.de
Wed Oct 19 14:52:14 PDT 2011

Hi Micah,

The numbers from the paper were measured with the ATI Stream SDK v2.1 
(it's only mentioned in the references I think).
The most recent measurements I have were done with the current v2.5.


Am 19.10.2011 23:43, schrieb Villmow, Micah:
> Ralf,
>   What version of the SDK were you using for your analysis? I don't see that in the slides/pdf.
> Thanks,
> Micah
>> -----Original Message-----
>> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
>> On Behalf Of Ralf Karrenberg
>> Sent: Wednesday, October 19, 2011 2:13 PM
>> To: llvmdev at cs.uiuc.edu
>> Subject: Re: [LLVMdev] ANN: libclc (OpenCL C library implementation)
>> Hi everybody,
>> the compiler design lab at Saarland University (chair of Sebastian
>> Hack)
>> is also working on an LLVM-based OpenCL driver.
>> The project started as a use-case for our "Whole-Function
>> Vectorization"
>> library, which allows to transform a function to compute the same as W
>> executions of the original code by using SIMD instructions (W = 4 for
>> SSE/AltiVec, 8 for AVX).
>> The algorithm, a few details on the OpenCL driver, and some results
>> were
>> published at CGO'11:
>> http://dx.doi.org/10.1109/CGO.2011.5764682
>> In contrast to Clover and pocl, we aimed at maximum performance before
>> full support of the API (which simply requires more manpower than one
>> PhD student).
>> The driver was evaluated using benchmarks from the AMD APP SDK, e.g.
>> Mandelbrot, NBody, FastWalshTransform, Histogram, BlackScholes, DCT,
>> ...
>> Our measurements show that our driver outperforms both Intel's and
>> AMD's
>> CPU driver for almost all of the benchmarks.
>> We plan to release both the vectorization library as well as the OpenCL
>> driver under a BSD-style license, but there is still significant work
>> to
>> be done in terms of stability and feature completeness (e.g. the ICD
>> mechanism only works as expected under Windows).
>> Also, due to simplicity we currently employ AMD's OpenCL-to-LLVM
>> frontend and OpenCL-library from an earlier SDK. libclc sounds like the
>> perfect fit for us to get rid of that.
>> I agree on the fact that we should try to merge the different
>> open-source OpenCL projects, but at least at first glance they do not
>> seem to share too many design decisions.
>> More information on Whole-Function Vectorization and our driver can be
>> found on the project web page:
>> http://www.cdl.uni-saarland.de/projects/wfv
>> Best regards,
>> Ralf
>> Am 19.10.2011 17:38, schrieb Hal Finkel:
>>> Do we have a list of these open-source LLVM-based OpenCL projects
>>> somewhere? Off the top of my head, we have:
>>> libclc: http://www.pcc.me.uk/~peter/libclc/
>>> pocl: https://launchpad.net/pocl
>>> clover: http://cgit.freedesktop.org/~steckdenis/clover/
>>> (I think that all of these have BSD- or MIT-style licenses).
>>> Are there any others?
>>>    -Hal
>>> On Wed, 2011-10-19 at 14:47 +0100, Peter Collingbourne wrote:
>>>> Hi,
>>>> This is to announce the availability of libclc, an open source, BSD
>>>> licensed implementation of the library requirements of the OpenCL C
>>>> programming language, as specified by the OpenCL 1.1 Specification.
>>>> libclc is intended to be used with Clang's OpenCL frontend.
>>>> libclc website: http://www.pcc.me.uk/~peter/libclc/
>>>> libclc is designed to be portable and extensible. To this end,
>>>> it provides generic implementations of most library requirements,
>>>> allowing the target to override the generic implementation at the
>>>> granularity of individual functions.
>>>> libclc currently only supports the PTX target, but support for more
>>>> targets is welcome.
>>>> How does this project relate to the recently announced Portable
>> OpenCL
>>>> (POCL) project?  Unlike POCL, this project is not intended to
>> provide
>>>> an OpenCL host library (i.e. the OpenCL Platform Layer and OpenCL
>>>> Runtime specified in sections 4-5 of the OpenCL specification).
>>>> Instead, it provides only the requirements for the OpenCL C
>>>> Programming Language (section 6 et seq).  It is intended to be used
>>>> with an existing host library implementation, and comply with its
>>>> ABI requirements.
>>>> An example of such a host library is NVIDIA's OpenCL host library
>>>> for PTX -- the intention is to at some point provide a mechanism
>>>> for using the NVIDIA implementation of OpenCL with Clang, libclc
>>>> and LLVM's PTX backend instead of NVIDIA's own OpenCL compiler.
>>>> Another example would be POCL's host library, and the POCL
>> developers
>>>> have expressed an interest in using libclc as their OpenCL C library
>>>> instead of developing their own.
>>>> I will hope to find time over the next few weeks to add libclc
>> support
>>>> to the Clang driver.  The intention is that compiling OpenCL C
>> programs
>>>> to PTX would be as easy as (something like this):
>>>> clang -target ptx32 -S file.cl
>>>> such that the driver would automatically locate the libclc headers,
>>>> add them to the include path and pre-include the main header file.
>>>> (The libclc support will of course be optional, and a -cl-stdlib=
>>>> flag will be provided to allow for switching between OpenCL standard
>>>> library implementations.)
>>>> Thanks,
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list