Любые расширения Lisp для CUDA?
Я только отметил, что одним из первых языков для Connection-Machine W.D. Hillis был * Lisp, расширение Common Lisp с параллельными конструкциями. Connection-Machine - это многопроцессорный компьютер с архитектурой SIMD, почти такой же, как и современные графические карты.
Итак, я ожидал бы, что адаптация * Lisp к GPGPU - возможно, к nVidia CUDA, так как это самый продвинутый стандарт де-факто - будет вполне естественным.
До сих пор, помимо SDK nVidia для C/С++, я нашел только PyCUDA, среду Python. Кто-нибудь слышал что-нибудь о Lisp?
Ответы
Ответ 1
Penumbra является идиоматической оболочкой для OpenGL в Clojure. Calx - это идиоматическая оболочка для OpenCL для целевых процессоров, графических процессоров и более экзотического оборудования. См. Также вызов CUDA из Clojure.
CL-OPENGL представляет собой набор Common Lisp привязки к API OpenGL, GLU и GLUT. CL-GPU является переводчиком из подмножества Common Lisp в CUDA для написания ядер GPU. ECL-COMPUTE - это DSL для вычисления SSE/CUDA в Встраиваемый Common Lisp.
Ответ 2
Недавно я начал разработку cl-cuda, которая является библиотекой для использования NVIDIA CUDA в Common Lisp программах. Хотя он только что был запущен и на самой ранней стадии разработки, вы можете попробовать несколько простых примеров кода, таких как добавление большого вектора.
Пожалуйста, смотрите,
https://github.com/takagi/cl-cuda
Если вас интересует этот проект, любые отзывы приветствуются.
Ответ 3
Недавно я создал библиотеку для вызова CUDA-функций/библиотек из общего lisp. Его цель состояла в том, чтобы делать такие вещи, как
(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.