![]() | Computational Intelligence Research Lab Graphics Processor Unit (GPU) Site |
|
This site was put online a while ago (2005 or 2006-ish), so we have a fair amount of Cg programming up here (Graphics API-based GPU programming, such as our FCM implementations), we do cover a little bit of GLSL (look at our geometry shader examples, which are geared towards graphics, not CI at the moment), and we are now opening the site up to CUDA (we have a fuzzy logic example and soon we will put a fuzzy logic image processing example up when the paper is accepted). There is a fair amount of initial overhead related to understanding GPU programming, design, and architecture. The newest trend/API that we would reccomend is NVIDIA's CUDA language (link). Getting a GPU program running is one thing, but getting the full performance of the device requires experience (such as how to design the program structure to maximize speed w.r.t. to operations such as ping-ponging, reduction, memory types and related access speeds, taking advantage of the SIMD architecture, CUDA-based operations, such as working with threads, blocks, grids, memory types, etc). CUDA allows for you to program w.r.t. C and-or C++, so many should like the idea of far less development time by doing it in a language that you are already familiar with. We have not done a real comparison of our algorithms in CUDA to a graphics-based API approach (GLSL, Cg, HLSL), but I bet you can find a fair number of comparisons on the web by now if you want to learn more about that. You can contact us at dtaxtd@mizzou.edu if you have any questions/concerns. I will not respond to basic/introductory questions or "how do I conduct my research" or "how do I write my specific application". The web is full of great GPU-related resources that can provide you guidance, but yes, you will have to work! Again, the art of GPU programming takes time and very broad and general questions about "how do I optimize my program", "how do I decompose my problem up into a format conductive for GPU programming", etc, are good questions, but most of the time, there is not an easy general answer. I wish I could build you all a list that you should follow for success, but you will have to read articles, keep up with technology, look at code, and learn the secrets to optimization. I really encourage some hero who has the TIME to sit down and compile such a long list of rules of thumb and ways to categorize types of applications and how to approach and optimize them and put it online for peer review and to help the mass of beginners (and even the experienced sometimes!). Until that day, this site will help you get on your way to learning about the world of GPGPU (general purpose GPU) programming. |
|
NEW: Good introduction to GPGPU programming by Dominik Göddeke (basic GPGPU concepts!) |
|
CIRL GPU Lessons - Cg Language |
|
CIRL GPU Lessons - GLSL Language |
|
CIRL GPU Lessons - CUDA |
|
Speed-up of Algorithms With Graphics Processing Units Presented by Robert Luke and Derek Anderson IEEE Computational Intelligence Society MU Chapter And National Library of Medicine Medical Informatics Training Grant Special Seminar Series Second Seminar Third Seminar Fourth Seminar |