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

Villmow, Micah Micah.Villmow at amd.com
Wed Oct 19 14:43:49 PDT 2011


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