我正在尝试计算许多向量对的点积。每个点积可以使用多个线程,但由于数据依赖性,不应同时执行两个或多个点积。这里可以证明多线程的最小向量大小是多少?我意识到没有人能够给我一个准确的答案,所以我只是在寻找粗略的估计。
为问题添加更多上下文:我的程序需要计算很多点积,但一次只能计算一个点积。
double serial_dot_product(const double* x, const double* y, size_t length);
我想重写点积以使其成为多线程。但是如果length
太小,使用多个线程不会有任何好处。
编辑。谢谢各位的意见。看起来答案取决于太多因素——编译器、CPU、内存、线程库等。