Mój system ma kartę graficzną. Nie gram w gry.Czy mogę używać Julii do programowania mojego GPU i procesora?
Chcę zaprogramować coś dla komputerów o wysokiej wydajności dla zabawy.
Czy mogę używać JULIA lang, aby wykorzystać mój sprzęt?
Mój system ma kartę graficzną. Nie gram w gry.Czy mogę używać Julii do programowania mojego GPU i procesora?
Chcę zaprogramować coś dla komputerów o wysokiej wydajności dla zabawy.
Czy mogę używać JULIA lang, aby wykorzystać mój sprzęt?
TAK!
Wprowadź OpenCL.jl
* jak zainstalować?
Pkg.add("OpenCL");
Pkg.update()
kliknąć na poniższy link, aby sprawdzić różne OpenCL platform obliczeniowych na sprzęcie
https://github.com/JuliaGPU/OpenCL.jl/blob/master/examples/performance.jl
CUDA jest propietary dla NVIDIA ale jest szeroko stosowany w obliczeniach naukowych. Julia ma kilka pakietów związanych z CUDA, ale używam CUDArt, który działa całkiem dobrze dla mnie.
https://github.com/JuliaGPU/CUDArt.jl
Zazwyczaj trzeba ręcznie przydzielić wolnej pamięci na GPU, ale ten pakiet ma zajęcia CudaArray które są zarejestrowane z Julia GC, więc nie trzeba się martwić o wycieki pamięci. Gdy Twoje potrzeby pamięciowe są bardziej wymagające, możesz oczywiście zarządzać pamięcią ręcznie.
Kiedy zaczynasz pisać swoje własne jądra, możesz je również wywołać bezpośrednio z Julii, jeśli skompilujesz je do PTX (nie do wspólnych obiektów/bibliotek dll). Możesz przeżyć na żywo je w ramach istniejącej sesji Julii, jeśli podejdziesz do tego w ten sposób.
Nice. Ale nie mam karty graficznej NVIDIA. Używam radeona. I OpenCL jest agnostykiem Vendora, jak sądzę. – suryakrupa
Z powodzeniem używam biblioteki przy użyciu the Julia wrapper. Obsługuje zarówno CUDA, jak i OpenCL (i CPU).
Jest to dość łatwe do zrozumienia i zastosowania:
#Random number generation
a = rand(AFArray{Float64}, 100, 100)
#Basic arithmetic operations
c = sin(a) + 0.5
d = a * 5
Oto wzorzec run:
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
czy ArrayFire.jl jest nadal rozwijany? obecnie zawodzi Julia 0.4 i 0.5. –
byłbym zainteresowany, aby zobaczyć kilka porównań między OpenCL i pakietu CUDAnative kiedy to rozwój jest kompletny . Oczywiście przy OpenCL unikaj blokady dostawcy. –