12

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

我想编写一些高性能计算的东西来取乐。

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

4

3 回答 3

12

是的!

输入OpenCL.jl

*如何安装?

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

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

于 2015-06-10T16:32:27.823 回答
5

我使用Julia wrapper成功使用了ArrayFire库。它同时支持 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
于 2016-10-16T16:52:54.517 回答
4

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

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

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

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

于 2015-06-15T18:15:48.670 回答