0

N個の行列ペアを乗算する必要があります。もし我々が行列を掛け合わせているならば、十分に大きいならば、コンパイラはすべてのコアを行列の乗算に使うことができる。簡単に言うと、要素ごとの乗算を行います。 しかし、パラレル化は最適ではありません。paralelまたはsequentionalyで複数の行列乗算を行う方が速いのですか?

もう一方の側から、Kがコアの数である単一スレッド乗算を使用してパラレルでK行列ペアを掛けることができます。私はそのような方法ではるかに多くのキャッシュミス率があり、この方法は遅くなると思う。私は正しい?

答えて

2

計算の分割に大量のオーバーヘッドがない限り、並列化は通常は直列化より高速です。したがって、あなたが求めている質問は、「この乗算を効率的に分割できますか?」です。

はい、私たちは可能です。実際にはΘ(n^2)のオーダで結果をスピードアップできます。 See here、特にキャッシュ動作に関するセクションがんばろう!

+0

この場合、「シリアル化」とは何ですか? –

+0

同時に分割して処理するのではなく、一度に1つのステップを実行する:https://en.wikipedia.org/wiki/Serialization – ultimatist

+0

パフォーマンスを向上させるための多くの方法がある良いリンク。 – Surt

関連する問題