I was wondering if anybody has (is thinking of) creating CUDA
bindings. I searched this forum archives, and rubyforge.org, but
couldn’t find any references to CUDA.
Wikipedia showed an example with python.
CUDA (Compute Unified Device Architecture), is a compiler and set of
development tools that enable programmers to use a variation of C to
code algorithms for execution on the graphics processing unit (GPU).
CUDA has been developed by NVIDIA and to use this architecture
requires an Nvidia GPU and drivers. The latest drivers all contain the
necessary CUDA components. CUDA works with all NVIDIA GPUs from the
G8X series onwards, including GeForce, Quadro and the Tesla line.
NVIDIA states that programs developed for the GeForce 8 series will
also work without modification on all future Nvidia video cards, due
to binary compatibility. CUDA gives developers access to the native
instruction set and memory of the massively parallel computational
elements in CUDA GPUs. Using CUDA, the latest NVIDIA GPUs effectively
become open architectures like CPUs (Central Processing Units). Unlike
CPUs however, GPUs have a parallel “many-core” architecture, each core
capable of running thousands of threads simultaneously - if an
application is suited to this kind of an architecture, the GPU can
offer large performance benefits. CUDA provides both deterministic low
level API and a higher level API.
On Tuesday 09 September 2008 05:43:46 jzakiya wrote:
I was wondering if anybody has (is thinking of) creating CUDA
bindings. I searched this forum archives, and rubyforge.org, but
couldn’t find any references to CUDA.
I was thinking about that few months back, but didn’t really get to it
due to
lack of time. Also there’s the problem of target audience - the number
of
people that would be interested in it can be counted on the fingers of
one
hand of blind butcher. (And those people can as well go the Python
route)
On Tuesday 09 September 2008 05:43:46 jzakiya wrote:
I was wondering if anybody has (is thinking of) creating CUDA
bindings. I searched this forum archives, and rubyforge.org, but
couldn’t find any references to CUDA.
I was thinking about that few months back, but didn’t really get to it due to
lack of time. Also there’s the problem of target audience - the number of
people that would be interested in it can be counted on the fingers of one
hand of blind butcher. (And those people can as well go the Python route)
Actually, I am interested and I’ll be a number of the folks on the
Beowulf
list would be interested.
– Matt
It’s not what I know that counts.
It’s what I can remember in time to use.
I know the Rubinius people were interested in using GPU-type features or
maybe CUDA. Evan P., the Rubinius head honcho, was even talking
about
using GPU features to accelerate things like method dispatch. Pretty
nuts.
Not quite CUDA, but I’ve written a very simple OpenCL wrapper library
for Ruby called Barracuda.
It currently only works on OSX 10.6 (Snow Leopard), but if you have the
OpenCL libs installed on your machine and are willing to hack the
Makefiles for a few minutes, you could probably get it to compile for
other platforms.
I think this posting falls into the category of being a replay to a
related question: “Attention: posting any kind of advertisement for
commercial products or services, unless in reply to a related question,
is prohibited.”
I have posted the KappaCUDA rubygem (under the MIT License). The Kappa
Library is a commercial library that uses the NVIDIA CUDA driver API to
give an object-oriented scheduler based interface to CUDA, C/C++ OpenMP,
Perl, and Python. The Kappa scheduler allows mixing these different
components together in combined tasks and libraries. The Kappa
scheduler ends up giving better performance on the current NVIDIA
hardware than directly using the NVIDIA APIs–even with pure C++ code.
The Perl and Python keywords are extensions to Kappa. The Perl and
Python keywords’ source code are MIT License–it should be easy for
anyone with knowledge of embedded Ruby to use these examples to create a
Ruby keyword so that you can not only have a task being executed by Ruby
but that it can combine CUDA, C/C++ OpenMP, Perl, Python, and Ruby.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.