0

1 つのスレッドと 8 つのスレッドを使用して Eigen SGEMM 操作のベンチマークを行ったところ、パフォーマンスは 512x512 でピークに達しましたが、そのサイズを超えると低下しました。これには、おそらくより大きなマトリックスの複雑さを伴う何か特定の理由があるのではないかと思っていましたか? Eigen のウェブサイトでマトリックス - マトリックス操作のベンチマークを見ましたが、似たようなものは見当たりませんでした。

512x512 で、並行して 4 倍速くなりました。しかし、4096x4096 ではかろうじて 2 倍速くなりました。私は並列処理のために openMP を使用しており、それを 1 つのスレッドにするために num_of_threads を 2 に設定しています。

4

2 に答える 2

2

あなたの結果は、このアルゴリズムが主に大きなマトリックスサイズで制限されたメモリ帯域幅であることを示唆しています。4Kx4Kマトリックス(フロート?)は、単なる人間が利用できるCPUのキャッシュサイズを超えていますが、512x512は、ほとんどの最新のCPUのL3キャッシュに快適に収まります。

于 2012-11-09T11:01:24.250 に答える
-1

Eigen を含むいくつかの BLAS 実装を使用して、行列の乗算に関するいくつかのテストを実行しました。ここに結果を掲載しました。役に立つかもしれません。

于 2013-06-25T15:38:16.790 に答える