Моя система имеет графическую карту. Я не играю в игры.
Я хочу запрограммировать некоторые высокопроизводительные вычислительные материалы для удовольствия.
Можно ли использовать JULIA lang для использования моего оборудования?
Моя система имеет графическую карту. Я не играю в игры.
Я хочу запрограммировать некоторые высокопроизводительные вычислительные материалы для удовольствия.
Можно ли использовать JULIA lang для использования моего оборудования?
ДА!
Введите OpenCL.jl
* как установить?
Pkg.add("OpenCL");
Pkg.update()
Используйте следующую ссылку для проверки различных платформ OPENCL на вашем оборудовании.
https://github.com/JuliaGPU/OpenCL.jl/blob/master/examples/performance.jl
CUDA является проприетарным для NVIDIA, но широко используется в научных вычислениях. У Джулии есть несколько пакетов, связанных с CUDA, но я использую CUDArt, который работает для меня хорошо.
https://github.com/JuliaGPU/CUDArt.jl
Обычно вам приходится вручную освобождать память, которую вы выделяете на графическом процессоре, но этот пакет имеет классы CudaArray, зарегистрированные в GC Julia, поэтому вам не нужно беспокоиться о утечке памяти. Когда ваши потребности в памяти более требовательны, вы можете, конечно, управлять памятью вручную.
Когда вы начинаете писать свои собственные ядра, также можно быстро вызвать их из Julia, если вы скомпилируете их в PTX (не для общих объектов /dll ). Вы можете реально перезагрузить их в рамках существующей сессии Julia, если вы подходите к ней таким образом.
Я успешно использую библиотеку 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