点积 - SSE2 与 BLAS

发布于 2024-07-26 11:00:51 字数 229 浏览 7 评论 0原文

计算向量 x 与大量向量 y_i 的点积的最佳选择是什么,其中 x 和 y_i 的长度约为 10k 左右。

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

我只是在这里寻找一般指导,因此任何建议都会有用。
是的,我确实需要表演。 谢谢你的任何光。

What's my best bet for computing the dot product of a vector x with a large number of vectors y_i, where x and y_i are of length 10k or so.

  1. Shove the y's in a matrix and use an optimized s/dgemv routine?
  2. Or maybe try handcoding an SSE2 solution (I don't have SSE3, according to cpuinfo).

I'm just looking for general guidance here, so any suggestions will be useful.
And yes, I do need the performance.
Thanks for any light.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

对你再特殊 2024-08-02 11:00:52

手动编码 SSE2 解决方案并不是很困难,并且比纯 C 例程带来了很好的加速。 这会给 BLAS 例程带来多少影响,必须由您决定。

通过将数据结构化为一种格式可以获得最大的加速,以便您可以利用数据并行性和对齐。

Handcoding a SSE2 solution is not very difficult and will bring a nice speedup over a pure C routine. How much this will bring over a BLAS routine must be determined by you.

The greatest speedup is derived by structuring the data into a format, so that you can exploit data parallelism and alignment.

最偏执的依靠 2024-08-02 11:00:52

我使用GotoBLAS。 这是高性能内核例程。 比MKL和BLAS好很多倍。

I use a GotoBLAS. It's the hight perfomance kernel routines. The many times better than MKL and BLAS.

诗笺 2024-08-02 11:00:52

下面提供了使用 SSE 的 BLAS 级别 1(向量运算)例程。

http://www.applied-mathematics.net/miniSSEL1BLAS/miniSSEL1BLAS.html

如果您有 nVidia 显卡,您可以获得 cuBLAS,它将在显卡上执行操作。

http://developer.nvidia.com/cublas

对于 ATI (AMD) 显卡

http://developer.amd.com/libraries/appmathlibs/pages/default.aspx

The following provides BLAS level 1 (vector operations) routines using SSE.

http://www.applied-mathematics.net/miniSSEL1BLAS/miniSSEL1BLAS.html

If you have an nVidia graphics card you can get cuBLAS which will perform the operation on the graphics card.

http://developer.nvidia.com/cublas

For ATI (AMD) graphics cards

http://developer.amd.com/libraries/appmathlibs/pages/default.aspx

述情 2024-08-02 11:00:51

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

I think GPUs are specifically designed to perform operations like this quickly (among others). So you could probably make use of DirectX or OpenGL libraries to perform the vector operations. D3DXVec2Dot This will also save you CPU time.

埋情葬爱 2024-08-02 11:00:51

优化 BLAS 例程的替代方案:

  • 如果您使用 intel 编译器,您可以
    可以访问intel MKL
  • 对于其他编译器ATLAS 通常会提供不错的性能数据

Alternatives for optimised BLAS routines:

  • If you use intel compilers, you may
    have access to intel MKL
  • For other compilers ATLAS usually provides nice performance numbers
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文