OpenCL works like OpenGL, it has a specification, and various
vendors provide
implementations (normally in the form of dynamically or statically linked libraries). For
OpenGL, implementations include, but are not limited to, Windows GL (OpenGL32.DLL on most editions of Windows), ATi/AMD (Provided in their drivers), NVidea (also in their drivers), Intel, etc etc.
For
OpenCL, implementations include ATi/AMD's Stream, which you should use if you own an ATi/AMD graphics card -
Stream Homepage;
NVidia's CUDA implementation -
homepage here, which is the better option if you own an Nvidia graphics card.
Other companies probably also have OpenCL implementations - the aim is to provide a way of accelerating (mostly) floating point calculations using GPUs ("graphics cards") and other similar dedicated floating point processors (such as Nvidia's PhysX accelerator) etc.
Simply - pick an implementation that best matches your target hardware, if you intend to distribute, then include code that detects the system's hardware and installs the appropiate implementation and then use the OpenCL specification guide to get started on using OpenCL.
Back to the original topic - I made a major error in uploading the wrong file, so don't expect anything special from the one I uploaded.

I am currently working to make it more in keeping with the existing cl.pp package.
As a note, the existing package doesn't work with ATi/AMD's implementation yet, I'll fix that as well. (Currently generating a hard-to-trace floating point exception)
=====================EDIT=====================
OK, caught up with myself and the uploading mistakes.

Progress:
I have changed my "OpenCL.pas" to be entirely compatible* with the cl.pp package.
My test program, and the similar "clinfo" example within the "cl" package both compile and run on my Vista x64 machine, but as 32-bit binaries, dynamically linking to ATi/AMD Stream. 64-bit testing to come later.
The last example, "basicsample.pas" does compile and run, but generates a SIGFPE during the call to "clBuildProgram". The cause of this is unknown, however, there is a comment in basicsample.pas that notes that "CL_DEVICE_TYPE_CPU" doesn't seem to work on Windows, as I only have access to a CPU (My ATi HD2600 isn't ATi/AMD Stream enabled

) I am going to go out on a limb and suggest that the cause is neither my bindings nor the program, but the
implementation. (This is backed up by the fact the existing bindings also fail, with not only the same error, but the same ASM at the same location according to Lazarus' debugging features).
It would be appreciated if anyone with an ATi/AMD graphics card in the "Supported Cards" table on
this page could download, compile and then run "basicsample.pas" from the FreePascal SVN repository (links earlier in thread) which should then provide some output and shed light on the matter. (If you happen to have any other OpenCL 1.0 compatible device and implementation, that is also fine)
* The remaining issues, of which only #2 is a major concern:
1) Static linking has been replaced by dynamic linking, but this is now transparent to the user.
2) The major issue is that I chose to use "var" parameters in a lot of places where I thought it would be best to (which does include a couple of places where the parameters
can be nil, but I didn't feel you would ever call that function in that way, generally where vital info relating to the size of buffers was returned) which means that you get a series of "got XXX expected YYY messages". There is no fix for this, besides changing existing code, or a change of my declarations.
Attatched: New version of OpenCL.txt (should be .pas - is there a reason the forums prevent the uploading of pas files?) which is almost entirely compatible with "cl.pp".
AlmightyFirebat
PS: Thank you for being so patient.