Halberdier
Halberdier

Reputation: 1204

Any Lisp extensions for CUDA?

I just noted that one of the first languages for the Connection-Machine of W.D. Hillis was *Lisp, an extension of Common Lisp with parallel constructs. The Connection-Machine was a massively parallel computer with SIMD architecture, much the same as modern GPU cards.

So, I would expect that an adaptation of *Lisp to GPGPU - maybe to nVidia CUDA, as it is the most advanced de facto standard - would be quite natural.

So far, besides the nVidia SDK for C/C++, I only found PyCUDA, a Python environment. Has anybody heard anything about Lisp?

Upvotes: 17

Views: 5641

Answers (4)

Gwang-Jin Kim
Gwang-Jin Kim

Reputation: 9865

For Clojure, fast matrix calculations using gpu, neanderthal and clojureCUDA by Dragan Djuric will bring it. From the same author, clojurecl is for OpenGL. For Tensors and Neural Networks deep-diamond.

Upvotes: 0

Knut Gjerden
Knut Gjerden

Reputation: 71

A while ago I made a library to call CUDA-functions/libraries from common lisp. Its purpose was to do things like

(let ((myarray (make-array ...))
      (another-array (make-array ...)))
  ;fill myarray
  (cublas-saxpy n -1.0 another-array 1 myarray 1)
  (cufft-nocopy myarray n :forward t :normalize nil)
  ;use results
  )

Check it out at https://github.com/knutgj/cl-cudalib

The specific functions are currently limited to what I have had use for, but it is trivial to extend to complete cuBLAS and cuFFT as well as roll your own CUDA libraries. Currently only SBCL is supported, but this should also be easy to extend.

I am considering to make a similar package for openCL and the AMD APPML.

Upvotes: 3

masayuki takagi
masayuki takagi

Reputation: 452

I recently start developing cl-cuda which is a library to use NVIDIA CUDA in Common Lisp programs. Although it has just been started and in the very early stage of development, you can try some simple sample codes like large vector addition.

Please see, https://github.com/takagi/cl-cuda

If you are interested in this project, any feedbacks are welcome.

Upvotes: 11

Terje Norderhaug
Terje Norderhaug

Reputation: 3689

Penumbra is an idiomatic wrapper for OpenGL in Clojure. Calx is an idiomatic wrapper for OpenCL to target CPUs, GPUs, and more exotic hardware. See also calling CUDA from Clojure.

CL-OPENGL is a set of Common Lisp bindings to the OpenGL, GLU and GLUT APIs. CL-GPU is a translator from a subset of Common Lisp to CUDA for writing GPU kernels. ECL-COMPUTE is a DSL for SSE/CUDA computation in Embeddable Common Lisp.

Upvotes: 22

Related Questions