SourceForge has been redesigned. Learn more.

Cloo / News: Recent posts

Cloo 0.9.1

This is a maintenance release (with a small breaking change).
0.9.1 incorporates some recommendations and tips from the community like the DebuggerBrowsableAttribute hint (thanks vicviper) and a Cloo initialization improvement, if OpenCL is not installed in the system. The later can now be checked through the ComputePlatform.Platforms collection, which contains no platforms if OpenCL is not present (instead of crashing with DllNotFoundException).
Deprecated ComputeKernel.SetArgument methods were removed. You are now responsible for kernel argument tracking until the kernel finishes execution.
As always, you can find more info in ChangeLog.txt.
Upgrading from 0.9.0 is recommended.

Posted by nythrix 2012-01-11

Cloo 0.9 is finally out

This is a minor upgrade over the previous alpha release bringing some small updates, bugfixes and documentation edits.
The most notable change is the deprecation of some of the ComputeKernel.SetArgument methods, which will be removed in the near future. These so called "tracking" variants used to keep track of kernel arguments to prevent them from being garbage collected until kernel execution. This is problematic however, because at the library level it is impossible to determine, when the kernel finishes. The application is now responsible for tracking these objects.
Asynchronous command queue calls are now more robust and carry a bit less overhead. The ComputeEvent callback mechanism has been much improved. Unlike in previous versions the ComputeEventBase.Completed and ComputeEventBase.Aborted events are now guaranteed to trigger under all circumstances.

Posted by nythrix 2011-05-01

Cloo 0.9.alpha2

The second 0.9 preview is out.
The major feature is a whole new set of OpenCL object handles, which can be used with the redesigned bindings. This final major change is the result of the efforts aiming at bringing the low level part of the library up to par with the rest of the code. So, if you wanted a basic set of fast, type safe and still very friendly OpenCL bindings that completely bypasses the object oriented layer, you're finally served!
As for some bad news, in order to take advantage of the new handle types the ComputeObject handles now use them as well. Which means you'll have to upgrade your code if you were working directly with handles in previous versions. However, it is very unlikely that this will affect many applications (if any).
Some other, but much smaller changes have shaped the new interface as well (acquiring and releasing OpenGL objects, ReadFromBuffer methods). As always checking the Changelog in the documentation folder is heartily recommended.
This was the last large set of the planned features for Cloo. So, what you see here is basically what Cloo 1.0 will look like!
Stay tuned!

Posted by nythrix 2011-02-05

Cloo 0.9.alpha1 - Call for help

This is the first of the (two or possibly three) alpha releases that precede Cloo 0.9. It is an experimental release which brings three major changes:

1) The library is now CLS-compliant and contains no unsafe code including the low-level bindings. This means it is fully usable from every CLI-compatible language out there.
2) Deprecated bits from the previous versions have been removed. Those of you considering upgrade to Cloo 0.9 will need to check their compiler warnings for obsoleted methods/properties. Fear not, though. Every feature can be replaced by a better and more solid one.
3) Clootils have been completely redesigned. The editor is gone but what's left is a bit more usable and much more extensible (at least from a programmer's point of view).... read more

Posted by nythrix 2011-01-29

Cloo 0.8.2

Welcome to another maintenance release in the 0.8 series.
This version fixes some discovered bugs affecting extension loading, asynchronous program build, command-queue methods handling ComputeImage2Ds and error checking in some of the ComputeObject.Get*Info methods. It also adds a workaround to prevent Clootils from hanging with the latest Nvidia drivers and another one to help prevent Cloo initialization errors in a multithreaded environment.
New functionality includes support for the cl_ext_device_fission extension.
For the first time ever, Cloo was tested against the Intel OpenCL SDK. Although alpha, Intel's implementation is the first of the lot to successfully pass all the current Clootils tests! Kudos to Intel!
Upgrade from 0.8.1 or 0.8.0 is recommended.

Posted by nythrix 2011-01-25

Clootils editor to be discontinued

Starting with Cloo 0.9 the Clootils editor/OpenCL C syntax checker will be discontinued. This very simple editor was conceived in a time when no such tools existed and the only way to test a kernel was to compile a whole OpenCL program. However, the goals of this project never included a full blown OpenCL C editor. And so, with time, this little tool has fallen behind.

You are strongly encouraged to take advantage of the better alternatives that have emerged. Both AMD and Intel now provide such tools.... read more

Posted by nythrix 2011-01-22

Cloo 0.8.1

This is a maintenance release which fixes a highly critical bug on OpenCL platforms that make use of a device without cl_krh_fp16 or cl_khr_fp64 support. The bug prevented 0.8.0 from initializing in such environments. This release also gets rid of the occasional IOException in the ComputeEvent bowels. Upgrade from 0.8.0 is strongly recommended.

Posted by nythrix 2010-09-04

Cloo 0.8

Cloo 0.8 is finally out! Since the initial plans three months have passed. During this time Khronos updated the OpenCL specification and, as it happens, some (actually a lot) of the new OpenCL functions do exactly what I was going to implement myself. So, a big thank you to those guys is in place.

These are some of the new bits you can expect in this version:
- Massive rewrite of the ComputeCommandQueue class. More than 40 new methods with a consistent interface for seamless and safe data transitions between .NET arrays (1, 2, and 3 dimensional) and OpenCL buffers and images were added. Most of them provide automatic argument tracking (pinning, referencing and releasing on completion) if invoked as non-blocking calls.
- Events fitted with... well... events, which are fired on command completion or abortion.
- OpenCL 1.1 user events (ComputeUserEvent)
- OpenCL 1.1 sub buffers (ComputeSubBuffer)
- OpenCL 1.1 related ComputeKernel queries (GetPreferredWorkGroupSizeMultiple, GetPrivateMemorySize)
- OpenCL 1.1 related ComputeDevice properties (NativeVectorWidth*, HostUnifiedMemory, OpenCLCVersion, OpenCLCVersionString, VersionString)
- Two new data types: SysIntX2 and SysIntX3. They are used (and can be enforced) wherever a size_t[3] is expected in the OpenCL API.
- Added new OpenCL 1.1 test to Clootils.... read more

Posted by nythrix 2010-08-30

Cloo 0.7.3 released!

The first milestone towards 0.8.0 has been released. It brings raw OpenCL 1.1 support (bindings and enum symbols), the cl_khr_icd and cl_ext_migrate_memobject extensions, optional manual device queries and more.
The single most notable new feature however is the doxygen generated offline documentation (Documentation/html folder). A lot of work has been put into it even though some pieces are still missing (exceptions). Don't hesitate to ask questions or suggest changes. For me english is a bit harder than C# so improvements are most welcome.
On the other hand this version deprecates some of the methods in ComputeCommandQueue. They're marked [Obsolete] and the compiler should issue a warning/error if you use them. At this point I cannot say whether 0.8.x will include these methods or not. This will be clear once the fitting of the OpenCL 1.1 functionality into the OO layer is over. As a rule of thumb you should use the Read/Write/Copy methods with the longest signatures in the respective bunch of the overloads. While this looks like a backstep, I believe it'll help avoid future confusion and (especially) IntelliSense fighting.

Posted by nythrix 2010-07-22

Back on track

After about eight weeks of real-life fun (tm), I'm really glad to announce that development is on its way again.

I'm carefuly reading my way through the OpenCL 1.1 specs. That along with the list of bugs and feature requests shall serve as a basis for the 0.8.0 release.
If you have any other ideas this is the time to share them!

See you soon,

Posted by nythrix 2010-07-01

Cloo 0.7.2 released!

This is a minor release , which focuses only on Clootils. The list of bugfixes is comprised of some reported issues regarding the configuration dialog and a severe bug affecting the syntax checker.
Cloo hasn't been modified so if you're not using Clootils you can skip this update.

Posted by nythrix 2010-04-22

Cloo 0.7.1 released

A new version of Cloo is available for download.
The most notable new feature is a bunch of overloads in ComputeCommandQueue which will help you skip over a lot of unnecessary parameters and keep your code size out of The New Testament league.

I also managed to introduce and then fix a couple of bugs in Clootils, so you're welcome to grab your favourite unzip.exe and check what's in the package.

Posted by nythrix 2010-03-25

Cloo 0.7.0

A new version of Cloo has just left the factory.
This release is not backward compatible due to the changes affecting the Read/Write methods of ComputeCommandQueue. The application is now responsible for allocating and freeing memory/GCHandles and passing valid pointers to these methods (see VectorAddTest.cs for an example). Although, in theory it is possible to handle these situations inside Cloo, in practice it involves a lot of possibly unnecessary operations which could hurt the performance of real world applications.
Speaking of which, the raw OpenCL bindings are now public. For those of you living on the edge, this gives you the finest degree of control (or endless headaches if something goes wrong).

Posted by nythrix 2010-03-13

Cloo 0.6.2 released!

A new version of Cloo is out.
It introduces a tracking mechanism for kernel arguments (sampler or memory objects) which prevents them from being claimed by the GC in case the user application doesn't refer to them in later code. This behaviour has been backported to the existing Set*Argument methods since it is safer. You can override auto-tracking using the newly added overloads.
A critical bug affecting image read operations together with some other minor glitches were fixed.
As for breaking changes rename any ComputeImage.PixelSize to ElementSize and you're good to go.... read more

Posted by nythrix 2010-02-18

Cloo 0.6.1 released!

This is mainly a maintenance oriented release. It fixes some critical memory leaks that affect most previous versions of the library. It also enables Clootils to run properly with ATI Stream.
Breaking changes over 0.6.0 are minimal (see changelog.txt) and all existing users should upgrade.

Posted by nythrix 2010-02-08

Cloo 0.6.0 released!

A new version of Cloo has been released.
Added functionality includes image support, extension loading, a new layer of flat bindings and enums, OpenCL/OpenGL sharing support and more.
The release comes with Clootils, a small toolkit for OpenCL info querying and running tests. It also includes a handy OpenCL compiler which can be used for syntax checking your OpenCL programs.
Please note that this release is not compatible with 0.5.1 or earlier. Given the amount and nature of breaking changes, you are strongly encouraged to take advantage of an IDE to ease the process of update. And don't forget to back up your code first!... read more

Posted by nythrix 2010-01-31