多くのベクトル ペアの内積を計算しようとしています。各ドット積は複数のスレッドを使用できますが、データの依存性のため、2 つ以上のドット積を同時に実行することはできません。ここで、マルチスレッドを正当化する最小ベクトル サイズはどれくらいですか? 誰も正確な答えを出すことができないことはわかっているので、大まかな見積もりを探しているだけです.
問題にもう少しコンテキストを追加するには: 私のプログラムは多くの内積を計算する必要がありますが、一度に実行できる内積は 1 つだけです。
double serial_dot_product(const double* x, const double* y, size_t length);
内積を書き直してマルチスレッド化したいと考えています。しかし、length
小さすぎると、複数のスレッドを使用しても何も得られません。
編集。ご意見をお寄せいただきありがとうございます。答えは、コンパイラ、CPU、メモリ、スレッド化ライブラリなど、あまりにも多くの要因に依存しているようです。