Какие-нибудь расширения Lisp для CUDA? - PullRequest
17 голосов
/ 18 мая 2011

Я только что заметил, что одним из первых языков для Connection-Machine W.D. Hillis был * Lisp, расширение Common Lisp с параллельными конструкциями. Connection-Machine представлял собой массивно параллельный компьютер с SIMD-архитектурой, почти такой же, как современные видеокарты.

Итак, я ожидаю, что адаптация * Lisp к GPGPU - возможно, к nVidia CUDA, так как это самый продвинутый де-факто стандарт - будет вполне естественной.

До сих пор, кроме nVidia SDK для C / C ++, я обнаружил только PyCUDA, среду Python. Кто-нибудь что-нибудь слышал о Лиспе?

Ответы [ 3 ]

21 голосов
/ 18 мая 2011

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 в Embeddable Common Lisp .

9 голосов
/ 02 июня 2012

Я недавно начал разработку cl-cuda, библиотеки для использования NVIDIA CUDA в программах на Common Lisp.Хотя он только начался и находится на очень ранней стадии разработки, вы можете попробовать несколько простых примеров кодов, таких как сложение больших векторов.Заинтересованы в этом проекте, любые отзывы приветствуются.

2 голосов
/ 25 октября 2013

Некоторое время назад я создал библиотеку для вызова 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.

...