M2搭載Mac miniを入手したのでごく軽くベンチマークを取ってみました。比較対象を含め、以下の3つのマシンで計測を行いました。言語はJulia1.8です。
- Apple M2 Pro macOS13.2
- Intel Xeon W-2245 Ubuntu 22.04(ハイパースレッディングは無効に設定しています)
- Intel Core i5 12600K Windows 11 Home(ハイパースレッディング有効)
全ての測定で、Juliaに明示的に与えるスレッド数は1です。しかし、BLAS.get_num_threads()
はマシン1〜3でそれぞれデフォルトの6、4、8となっています。
測定
ソース
#疎行列と(普通の)ベクトルの積
function bench_sparse(N ;n = 50)
Ms = [sprand(N,N, 1/N) for i in 1:n]
v = rand(N)
@benchmark begin
Y1 = deepcopy($v)
Y2 = similar($v)
for M in $Ms
mul!(Y2, M, Y1)
Y1, Y2 = Y2, Y1
end
Y1
end
end
#密行列とベクトルの積
function bench_dense(N ;n = 50)
Ms = [rand(N,N) for i in 1:n]
v = rand(N)
@benchmark begin
Y1 = deepcopy($v)
Y2 = similar($v)
for M in $Ms
mul!(Y2, M, Y1)
Y1, Y2 = Y2, Y1
end
Y1
end
end
#固有値分解
function bench_ed(N)
rnd = rand(N,N)
@benchmark eigen($rnd)
end
結果
ひとこと
こんなに拮抗するとは思わなかった。