Lets talk some OpenCL…
[b]"Two months after giving developers a sneak preview of its OpenCL development toolkit, Nvidia claims to have released the “world’s first OpenCL 1.0 conformant drivers for Windows XP and Linux.”
This “conformant” driver isn’t downloadable by just anyone, mind you. Interested parties must first sign up as part of Nvidia’s GPU Computing registered developers program. Still, the driver itself purportedly supports all CUDA-enabled graphics processors, which should cover pretty much all GeForce 8 and later offerings (not to mention more esoteric products like the Tesla series).
Aside from graphics drivers for 32-bit and 64-bit flavors of Windows XP and Linux, Nvidia’s driver pack includes:
Updates to the OpenCL SDK code samples
A new SDK “oclsobelFilter” sample
OpenCL compiler and driver binaries
OpenCL for compute-capable GPUs documentation
Nvidia boasts that it was the “first to submit its OpenCL 1.0 drivers to the Khronos OpenCL Working Group for certification in May 2009.” AMD may not be too far behind, thoughâ€”last we heard, it was also planning beta OpenCL support for the first half of this year".
When GPU work is presented onto Windows 7, it could be written in numerous languages. Some are…
Compute Shader, 4.0, 4.1, and 5.0 (Used for Video Transcoding.)
These applications could also opt to use an API:
(API = Applications with libraries to access, that generate the actual images.)
Could be a real time physics engine such as: PhysX.
Could be a real time physics engine such as: Havok.
Could be a GPU Computing API, such as DirectX Compute and OpenCLâ„¢ on the CUDA Architecture.
Could be a Graphics API such as Direct3D and OpenGL.
These instructions, no matter what language the come in as, must be converted into underlying native hardware instructions, before the work can be processed on the GPU.
For Nvidia this technology is called CUDA. (From Wikipedia, the free encyclopedia.)
“CUDA (an acronym for Compute Unified Device Architecture) is a parallel computing architecture developed by NVIDIA. Simply put, CUDA is the computing engine in NVIDIA graphics processing units or GPUs, that is accessible to software developers through industry standard programming languages. Programmers use ‘C for CUDA’ (C with NVIDIA extensions), compiled through a PathScale Open64 C compiler, to code algorithms for execution on the GPU. CUDA architecture supports a range of computational interfaces including OpenCL  and DirectX Compute . Third party wrappers are also available for Python, Fortran and Java”.
You gain access to the CUDA engine through various languages - C, Fortran, OpenCL, DirectX CS etc…
For AMD this technology is called Stream.
“ATI Stream technology is a set of advanced hardware and software technologies that enable AMD graphics processors (GPU), working in concert with the systemâ€™s central processor (CPU), to accelerate many applications beyond just graphics”.
So the biggest thing about Nvidia getting ‘OpenCL conformant drivers’, is that OpenCL will offer a standard way, for developers to access both CPU and GPU Multi-Core Acceleration, from within their app.
I found some OpenCL related videos that some might like to see.
nVIDIA’s Ian Buck interview, talking about OpenCL
Looks like Ian is a good man to have on the job too…
First OpenCL demo on a GPU
Havok Cloth Demo, OpenCL on AMD GPU (Note: CPU accelerated only)
AMD OpenCL multi-core CPU demo at Siggraph Asia 2008
How Jen-Hsun Huang CEO of Nvidia, feels about his 'Totally Programmable General Purpose GPU processors’, and Larrabee. (The codename for a GPGPU chip that Intel is developing separately from its current line of integrated graphics accelerators.)
I just like that one… I do think he is a smart man.
I like to hear any points that are made about the General Purpose, Completely Programmable processors, now found in the 200 Series GPU’s.
I have 240 ‘C Programmable Shaders’ on my GTX 280, and another 480 on my GTX 295, for a total of 720 processors/shaders on my system.
I only have 4 cores on my CPU…
If OpenCL is going to let developers have better access to all 720 processors, I say put them to work…
There would just have to be some extra performance found in doing so.
I don’t know how big of a point Huang has, about that GPU’s should have X86 Binary Compatibility, with both the CPU, and with Windows?
I run a 295 for Graphics, and a 280 in dedicated PhysX mode on my system.
I wonder how the OpenCL driver would handle the Havok physics engine’s work, as far as routing it to a GPU.
Would it go the the Graphics GPU, or the dedicated PhysX GPU?
I would rather it go to my 280 running in dedicated PhysX mode, and keep it off of my 295 doing Graphics.
If it did go to my 280, we would no longer just be running just a GPU operating in Dedicated PhysX Mode, we would rather be running a GPU dedicated to PhysX, Havok, and any other OpenCL compliant physics engine already in existence…
This article is a good read…
“He also explained that OpenCL can enable “pipelined computation.” For example, a DSP might begin a process, then pass it off to the CPU, which then would pass it to the GPU. Each would perform the part of the task they’re best suited for, then free themselves for other work”.
"For example, a system’s CPU could handle code elements that most require complex programming, the GPU could handle the massively parallel needs of media processing, and a DSP could handle the specialized tasks for which it was created - audio processing, for example.
In this cooperative manner, performance could be increased far beyond what any single chunk of silicon could accomplish on its own".
Both make OpenCL sound like it has a bright future… :magic:
On another note: The Havok physics engine has already been ported over to run on OpenCL…
“What the duo is showing off are a couple of subsets of Havok ported to and running on the OpenCL platform. Both Havok Cloth and Havok Destruction are at least far enough along in development to be shown to the public. By moving these application APIs to OpenCL, Havok is enabling them to run on any OpenCL compliant processor - an AMD Phenom II or AMD Radeon HD 4870, for example. They were able to switch on the fly from CPU-driven computing of the physics models to GPU-accelerated physics with a simple button press - indicative of what developers will be able to do in software. Unfortunately, at this time, performance results of such a switch were not shown as AMD simply stated that today’s demonstration was a proof-of-concept and development is still heavily ongoing”.
New havok physics with nvidia.
“OpenCL has been developed on Nvidia GPUs and the company was one of the first to show working OpenCL. Nvidia is the graphics chip supplier for Apple’s MacBooks.
Other computer graphics-related companies supporting OpenCL include Imagination Technologies and ARM. The complete list is long and includes 3DLABS, Broadcom, Electronic Arts, Freescale, IBM, Intel, Nokia, Samsung, and Texas Instruments”.
A few more words from my Hero, on OpenCL and Windows 7’s Compute…
“The chips are too power hungry. And so the computer industry is at a bit of a crossroad. And that’s why GPU computing, this technology that we invented, has captured the imagination of the whole industry. Microsoft, with Windows7, is going to include Direct X computing, which is basically GPU computing. Apple computer, with the Snow Leopard operating system, is going to have Open CL, which is their version of GPU computing for their operating system. So all of a sudden the two most important operating systems in the world will include GPU computing or [use] the GPU’s parallel computing technology core into it”.
The GPU -vs- CPU revolution has begun…
OpenCL is just one more tool, that will help to facilitate this epic and impending battle to take place.
May the fastest Computing Device win!
My numerous banks of programmable GPU processors, stand ready to be assigned some task.