[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.

Best,
Ralf

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