julia系列10:apple m1 gpu编程

Posted IE06

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了julia系列10:apple m1 gpu编程相关的知识,希望对你有一定的参考价值。

1. julia安装

首先去官网,找到对应的版本下载,苹果m1芯片对应的M-series

然后打开julia,安装IJulia:

using Pkg
Pkg.add("IJulia")

然后打开jupyter,就可以新建julia页面了。

2. m1 gpu编程库:Metal

安装:

julia> import Pkg; Pkg.add("Metal")
julia> using Metal

使用方式和cuda库极为相似,参考下面这个例子:

function vadd(a, b, c)
   i = thread_position_in_grid_1d()
   c[i] = a[i] + b[i]
   return
end

a = MtlArray([1]); b = MtlArray([2]); c = similar(a);
@metal threads=length(c) vadd(a, b, c)
synchronize()

接下来我们用多项式计算对比测试一下性能:

using Metal
using Polynomials
function mpoly(a,c)
    i = thread_position_in_grid_1d()
    coef = 1:9
    for j in coef
        c[i] = j + c[i]*a[i]
    end
    return
end

function poly(a,c)
    p = Polynomial(9:-1:1) 
    for j in 1:size(a)[1]
        c[j]=p(a[j])
    end
    return
end

testa = MtlArrayFloat32(rand(10))
testc = similar(testa)
a = rand(1024*2048*64);
c = similar(a);
ma = MtlArrayFloat32(a);
mc = similar(ma);

@metal threads=10 grid=1  mpoly(testa,testc)
poly(testa,testc)

先小规模运行一遍,然后进行时间对比:

@time @metal threads=1024 grid=2048*64  mpoly(ma,mc)
@time poly(a,c)

结果为:
0.000421 seconds (132 allocations: 3.680 KiB)
0.604166 seconds (71.97 k allocations: 3.755 MiB, 3.64% compilation time)
耗时相差1400多倍,性能提升突出啊~

以上是关于julia系列10:apple m1 gpu编程的主要内容,如果未能解决你的问题,请参考以下文章

julia系列10:apple m1 gpu编程

用于双目重建中的GPU编程:julia-cuda

深度学习系列50:苹果m1芯片加速pytorch

深度学习系列50:苹果m1芯片加速pytorch

深度学习系列50:苹果m1芯片加速pytorch

Mac Apple Silicon M1/M2 homebrew miniforge conda pytorch yolov5深度学习环境搭建并简单测试MPS GPU加速