【问题标题】:Can I use Julia to program my GPU & CPU?我可以使用 Julia 对我的 GPU 和 CPU 进行编程吗?
【发布时间】:2016-10-17 00:52:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: opencl julia gpu julia-gpu


    【解决方案1】:

    是的!

    输入OpenCL.jl

    *如何安装?

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

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

    【讨论】:

    • 我很想看看 OpenCL 和 CUDAnative 包在开发完成后的一些性能比较。当然,使用 OpenCL,您可以避免供应商锁定。
    【解决方案2】:

    我使用the 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
    

    【讨论】:

    • ArrayFire.jl 还在开发中吗?它目前在 Julia 0.4 和 0.5 中失败。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 不错。但是我没有NVIDIA显卡。我用拉登。我猜 OpenCL 与供应商无关。
    猜你喜欢
    • 2018-11-10
    • 2013-08-27
    • 2020-09-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2015-07-16
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多