我刚刚注意到,W.D。Hillis的Connection-Machine的第一种语言是* Lisp,它是Common Lisp的并行结构扩展。 Connection-Machine是具有SIMD架构的大型并行计算机,与现代GPU卡大致相同。
所以,我希望* Lisp适应GPGPU-也许适应nVidia CUDA,因为它是最先进的deacto标准-会很自然。
到目前为止,除了用于C / C ++的nVidia SDK外,我只发现了Python环境PyCUDA。有人听说过Lisp吗?
Penumbra是Clojure中OpenGL的惯用包装器。 Calx是OpenCL的惯用包装器,用于目标CPU,GPU和更多奇特的硬件。另请参阅calling CUDA from Clojure。
CL-OPENGL是对OpenGL,GLU和GLUT API的一组Common Lisp绑定。 CL-GPU是从Common Lisp子集到CUDA的转换器,用于编写GPU内核。 ECL-COMPUTE是用于Embeddable Common Lisp中SSE / CUDA计算的DSL。
我最近开始开发cl-cuda,这是一个在Common Lisp程序中使用NVIDIA CUDA的库。尽管它刚刚开始并且处于开发的早期阶段,但是您可以尝试一些简单的示例代码,例如大向量加法。
请看,https://github.com/takagi/cl-cuda
如果您对此项目感兴趣,欢迎您提供任何反馈。
不久前,我建立了一个库,以从通用Lisp调用CUDA函数/库。它的目的是做类似的事情
(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
)
在https://github.com/knutgj/cl-cudalib签出
特定功能目前仅限于我曾经使用过的功能,但是扩展以完成cuBLAS和cuFFT以及滚动自己的CUDA库是微不足道的。当前仅支持SBCL,但这也应该易于扩展。
我正在考虑为openCL和AMD APPML创建类似的软件包。
对于Clojure,使用Dragan Djuric的gpu,neanderthal和clojureCUDA进行快速矩阵计算即可。来自同一作者的clojurecl适用于OpenGL。对于张量和神经网络deep-diamond。