2015-06-10 30 views

risposta

11

SI!

Enter OpenCL.jl

* come installare?

Pkg.add("OpenCL"); 
Pkg.update() 
  • Utilizzare il seguente Link per controllare le varie piattaforme di calcolo OpenCL sul vostro hardware

https://github.com/JuliaGPU/OpenCL.jl/blob/master/examples/performance.jl

+0

sarei interessato a vedere qualche confronto di prestazioni tra OpenCL e il pacchetto CUDAnative quando è lo sviluppo è completo . Ovviamente, con OpenCL si evita il blocco del fornitore. –

4

CUDA è proprietarie per NVIDIA, ma è ampiamente usato in calcolo scientifico. Julia ha diversi pacchetti relativi a CUDA, ma ho usato CUDArt che ha funzionato abbastanza bene per me.

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

Di solito si deve manualmente memoria libera di allocare sulla GPU, ma questo pacchetto ha classi CudaArray che sono registrati con la Julia GC, in modo da non dovete preoccuparvi di perdite di memoria. Quando le tue esigenze di memoria sono più impegnative, puoi ovviamente gestire la memoria manualmente.

Quando si inizia a scrivere i propri kernel, è anche possibile richiamarli direttamente da Julia se li si compila su PTX (non su oggetti condivisi/dll). Puoi effettivamente vivere ricaricarli all'interno di una sessione di Julia esistente se ti avvicini in questo modo.

+1

Bello. Ma non ho la scheda grafica NVIDIA. Io uso Radeon. E OpenCL è indipendente dal venditore, suppongo. – suryakrupa

4

Sto utilizzando la libreria ArrayFire utilizzando the Julia wrapper. Supporta sia CUDA che OpenCL (e CPU).

E 'abbastanza facile da capire e da usare:

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

Ecco un benchmark:

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 
+0

è ancora in fase di sviluppo ArrayFire.jl? al momento non funziona in Julia 0.4 e 0.5. –