Подтвердить что ты не робот

Любые расширения Lisp для CUDA?

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

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

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

4b9b3361

Ответ 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.