Могу ли я использовать Julia для программирования моего GPU и процессора?

Моя система имеет графическую карту. Я не играю в игры.

Я хочу запрограммировать некоторые высокопроизводительные вычислительные материалы для удовольствия.

Можно ли использовать JULIA lang для использования моего оборудования?

Ответ 2

CUDA является проприетарным для NVIDIA, но широко используется в научных вычислениях. У Джулии есть несколько пакетов, связанных с CUDA, но я использую CUDArt, который работает для меня хорошо.

https://github.com/JuliaGPU/CUDArt.jl

Обычно вам приходится вручную освобождать память, которую вы выделяете на графическом процессоре, но этот пакет имеет классы CudaArray, зарегистрированные в GC Julia, поэтому вам не нужно беспокоиться о утечке памяти. Когда ваши потребности в памяти более требовательны, вы можете, конечно, управлять памятью вручную.

Когда вы начинаете писать свои собственные ядра, также можно быстро вызвать их из Julia, если вы скомпилируете их в PTX (не для общих объектов /dll ). Вы можете реально перезагрузить их в рамках существующей сессии Julia, если вы подходите к ней таким образом.

Ответ 3

Я успешно использую библиотеку ArrayFire, используя Julia обертка. Он поддерживает как CUDA, так и OpenCL (и CPU).

Это довольно легко понять и использовать:

#Random number generation
a = rand(AFArray{Float64}, 100, 100) 
#Basic arithmetic operations
c = sin(a) + 0.5
d = a * 5

Здесь выполняется эталонный тест:

julia> benchmark()
INFO: Warmup done!
INFO: Matmul
Time (CPU): 0.042887455
Time (GPU): 0.0417952754
INFO: FFT
Time (CPU): 0.074640831
Time (GPU): 0.009890463
INFO: Rand
Time (CPU): 0.089245094
Time (GPU): 0.0097255858
INFO: Vec sort
Time (CPU): 0.11730852
Time (GPU): 0.0384733068