我可以使用Julia来编程我的GPU&中央处理器?

时间:2015-06-10 16:32:28

标签: opencl gpu julia gpu-programming julia-gpu

我的系统有显卡。我不玩游戏。

我想编写一些高性能计算的东西以获得乐趣。

我可以使用JULIA lang来利用我的硬件吗?

3 个答案:

答案 0 :(得分:11)

是<!/强>

输入OpenCL.jl

*如何安装?

Pkg.add("OpenCL"); 
Pkg.update()
  • 使用以下链接检查硬件上的各种OPENCL计算平台

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

答案 1 :(得分:4)

CUDA是NVIDIA的支柱,但广泛用于科学计算。 Julia有几个与CUDA相关的软件包,但我一直在使用CUDArt,它对我来说效果很好。

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

通常你必须手动释放你在GPU上分配的内存,但是这个软件包具有在Julia GC中注册的CudaArray类,因此你不必担心内存泄漏。当您的内存需求更高时,您当然可以手动管理内存。

当你开始编写自己的内核时,如果将它们编译为PTX(而不是共享对象/ dll),也可以直接从Julia调用它们。如果你以这种方式接近它,你实际上可以在现有的Julia会话中重新加载它们。

答案 2 :(得分:4)

我使用ArrayFire成功使用the Julia wrapper库。它支持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