the Fiddler's picture

C# OpenCL bindings ready for testing

Update: current efforts are focused on Cloo (object-oriented CL wrapper), which can be found here. It provides a much cleaner OpenCL API compared to raw bindings (which are also available in case you need them).

The generator now supports generating C# OpenCL wrappers from the C headers. The OpenCL wrappers reside under the OpenTK.Compute.CL10 namespace of SVN trunk. An OpenCL sample has also been added to Examples.exe: if you have access to an OpenCL implementation, please run the VectorAdd sample and report your results here.

AMD has released a public beta of its OpenCL implementation that you can download from AMD's developer website (free registration needed). This implementation runs on all SSE3-capable CPUs and is available for Window and Linux platforms.

There is a lot of fine-tuning left to do for OpenTK's OpenCL wrappers and the sooner you test the bindings, the sooner they will become ready for release.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
nythrix's picture

Ouch, I forgot about the CPU :D

viewon01's picture


I have download the AMD Stream SDK at :

I have download this one : " (109MB)"

But I can't find any OpenCL dll !!!! Even during installation I can't find any option regarding OpenCL :-(

viewon01's picture

Sorry, I have forgot to download a module !!


chrisse27's picture

After adding <dllmap os="osx" dll="opencl.dll" target="/System/Library/Frameworks/OpenCL.framework/OpenCL"/> to OpenTK.dll.config the VectorAdd Sample seems to work correctly on my Snow Leopard system. It outputs correct sums of random integers.

the Fiddler's picture

Thanks, added to r2564, and I'll backport this to trunk soon.

CodyIrons's picture


My system is an AMD Phenom2 X4 940 with 3 * 4870 1GB (they are in crossfireX) on Vista x64, i am running the recently released 9.12 hotfix drivers and i have installed the ati-stream-sdk-v2.0-beta4-vista-win7-64.exe (59.3MB).
I am using VSExpress C# 2008 with the OpenTK-0.9.9-3 and running the VectorAdd from trunk I am seeing the following error (i added additional Error checks after each setting of error):

Launching sample: "Vector Addition"
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Exception: InvalidKernelName
   at Examples.VectorAdd.Main() in C:\Users\Cody\Documents\Downloads\opentk-0.9.9-3\opentk-0.9.9-3\Source\Examples\OpenCL\VectorAdd.cs:line 77
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Examples.ExampleBrowser.RunSample(Control parent, ExampleInfo e) in C:\Users\Cody\Documents\Downloads\opentk-0.9.9-3\opentk-0.9.9-3\Source\Examples\ExampleBrowser.cs:line 335

Pointing at this :

            CL.BuildProgram(hProgram, 0, (IntPtr[])null, null, IntPtr.Zero, IntPtr.Zero);
            // create kernel
            cl_kernel hKernel = CL.CreateKernel(hProgram, "vectorAdd", out error);
            if (error != ErrorCode.Success)
                throw new Exception(error.ToString());
            // allocate host  vectors

I see your comment on the Invalid Kernel Name exception above but that was back in late October and i was hoping this was addressed by these latest drivers. Is there anything i should check on my end to see if something is not setup properly?

CodyIrons's picture

Sorry, i should have read more on the site, i see the bug entered for this already and we are waiting on beta 5 from ati. I have run this on my nvidia based laptop and it is working fine.

nythrix's picture

A friend of mine suggested I put a line here, given the amount of people (inluding him) ending up reading this thread and never finding the oo wrapper mentioned above. So here goes:

Cloo, the .NET, object oriented OpenCL API wrapper, is finally available and can be downloaded from its sourceforge pages.

the Fiddler's picture

Updated the OP to reflect this.

nythrix's picture

What is the OP?

Edit: Original Post, got it.