私は、次のMATLABコード走った:私のMacAir(インテル(R)Core(TM)i5-4260U CPUの@の1.40GHz)でラップトップと比べて7コアのワークステーションで行列乗算が遅くなるのはなぜですか?
rng(1)
matrix_size = 200;
iterations = 100000;
A = rand(matrix_size);
B = rand(matrix_size);
profile on
for i = 1:iterations
A * B;
end
profile off
を、これは39Sをとります。 7つのコア(Intel(R)Xeon(R)CPU E5-2687W v4 @ 3.00GHz)を搭載したワークステーションでは、62秒かかる。
-singleCompThread
を指定しませんでした。ワークステーションには12のコアがありますが、5つのシングルスレッドプロセスが実行されていました。私は(ほとんど)7本のコアを持っていました。彼らは全期間にわたって最大にされました。
これはどのようにすることができますか?
-singleCompThread
で上記のコードを実行すると、54秒で完了します。 Mathworks社サポートチームpost引用
このテストは、ランダムな行列ではなく特定の行列で実行する必要があります。ランダム性が要因になる可能性があります。 – Wolfie
これらの行列は両方のマシンで同じですが、これは種を設定する 'rng(1)'のためです。 – Kappie001
['timeit'](https://www.mathworks.com/help/matlab/ref/timeit.html)を使って同じテストを行うとどうなりますか? i = 1の場合、 'f = @():iterations;を試してください。 A * B;最後に '' t = timeit(f); 'となります。 – craigim