点产品 - SSE2与BLAS

10 c optimization intrinsics

对于计算具有大量向量y_i的向量x的点积,我最好的选择是什么,其中x和y_i的长度大约是10k.

  1. 将y推入矩阵并使用优化的s/dgemv例程?
  2. 或者尝试手动编码SSE2解决方案(根据cpuinfo,我没有SSE3).

我只是在这里寻找一般指导,所以任何建议都会有用.
是的,我确实需要表现.谢谢你的光.

小智 4

我认为 GPU 是专门为快速执行此类操作(以及其他操作)而设计的。因此,您可以利用 DirectX 或 OpenGL 库来执行矢量运算。D3DXVec2Dot这也将节省您的 CPU 时间。

  • D3DXVec2Dot 不使用 GPU。除此之外,只有当您转换非常大的数据集或在 GPU 上使用非常“昂贵”的程序时,您才会看到 GPGPU 程序的加速。这是由于设置 GPU 来完成工作然后读回结果的成本所致。每次与 GPU 之间的数据传输都是一次非常昂贵的操作。 (2认同)