私はこれがニッチな質問であることを理解していますが、100x100 から 500x500 までのサイズの行列で、行列行列乗算のアルゴリズムを誰かが知っているかどうか疑問に思っています。 ?
xgemm と xgemm3m が優れていることはわかっていますが、残念ながら、1000x1000 を超える行列では大きなフロップが発生します。
助けてくれてありがとう :)
私はこれがニッチな質問であることを理解していますが、100x100 から 500x500 までのサイズの行列で、行列行列乗算のアルゴリズムを誰かが知っているかどうか疑問に思っています。 ?
xgemm と xgemm3m が優れていることはわかっていますが、残念ながら、1000x1000 を超える行列では大きなフロップが発生します。
助けてくれてありがとう :)
答えではありませんが、コメントするには長すぎます。
インテルのデータから間違った結論を引き出していると思います。考えているようですね
ああ、dgemm は、大きな行列の場合は 300GFLOP/s で高速で移動できますが、小さな行列の場合は悲惨な 100GFLOP/s でしか実行できません。小さな行列を 300GFLOP/s で乗算する方法はどこにありますか?
私はこれらの線に沿って考えます
Ah-ha dgemm は、大規模な配列で最も効率的です。うーん、小さなジョブサイズでは比較的パフォーマンスが低いように見える、それを呼び出すことに付随する固定費があるのではないかと思います。これらの小さな行列のためのより高速なアルゴリズムがあれば、インテルの優秀な人々がそれらを実装し、任意の問題サイズに対して適切な内部コードパスを選択するのに十分なほど賢く dgemm を作成したと思います。結局のところ、密行列乗算は LINPACK の重要な部分であり、そのすべての欠点のために、高性能コンピューターのベンチマークによく使用され、Intel はそのようなベンチマークを使用して機械の卓越性を実証することに非常に意欲的です。
あなたが Intel の人たちほど頭が良くないと言っているのではありませんし、私の思考回路に欠陥があるかもしれませんが、あなたが自分よりも優れたコードを書いたり、取得したりするのに苦労するだろうと言いたいのですdgemm
。 Intel ハードウェア上の小さな行列。私はこれについて私が間違っているという証拠を見るのを楽しみにしています.