首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用SSE/AVX指令有效地乘以64位整数的2x2矩阵?

如何使用SSE/AVX指令有效地乘以64位整数的2x2矩阵?
EN

Stack Overflow用户
提问于 2019-12-20 22:58:31
回答 2查看 299关注 0票数 0

有无符号64位整数的2x2矩阵使用SSE或AVX相乘的方法,

这比不使用SSE/AVX指令更有效?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-22 20:02:54

如果你只想得到最后64位的结果,事情就更容易了。假设ymm0包含矩阵A的四个值和矩阵B的四个值,您可以按以下方式计算乘积:

代码语言:javascript
运行
复制
vpermq        ymm2,ymm0,0x8D
vpermq        ymm3,ymm1,0x4E
vpermq        ymm0,ymm0,0xD8
vpclmullqlqdq xmm4,xmm0,xmm1
vpclmulhqlqdq xmm5,xmm0,xmm1
vpclmullqhqdq xmm6,xmm0,xmm1
vpclmulhqhqdq xmm7,xmm0,xmm1
vpclmullqlqdq xmm8,xmm2,xmm3
vpclmulhqlqdq xmm9,xmm2,xmm3
vpclmullqhqdq xmm10,xmm2,xmm3
vpclmulhqhqdq xmm11,xmm2,xmm3
vpunpcklqdq   xmm0,xmm4,xmm6
vpunpcklqdq   xmm1,xmm5,xmm7
vpunpcklqdq   xmm2,xmm8,xmm10
vpunpcklqdq   xmm3,xmm9,xmm11
vinserti128   ymm0,ymm0,xmm1,1
vinserti128   ymm2,ymm2,xmm3,1
vpaddq        ymm0,ymm0,ymm2

因此,ymm0包含矩阵积的四个底部64位整数。

票数 1
EN

Stack Overflow用户

发布于 2019-12-22 20:35:02

如果您想要完整的128位结果,事情就会稍微复杂一些(同样,ymm0 =矩阵A和输入的ymm1 =矩阵B):

代码语言:javascript
运行
复制
vpcmpeqq      ymm12,ymm12,ymm12
vpermq        ymm2,ymm0,0x8D
vpermq        ymm3,ymm1,0x4E
vpermq        ymm0,ymm0,0xD8
vpsllq        ymm12,ymm12,63
vpclmullqlqdq xmm4,xmm0,xmm1
vpclmulhqlqdq xmm5,xmm0,xmm1
vpclmullqhqdq xmm6,xmm0,xmm1
vpclmulhqhqdq xmm7,xmm0,xmm1
vpclmullqlqdq xmm8,xmm2,xmm3
vpclmulhqlqdq xmm9,xmm2,xmm3
vpclmullqhqdq xmm10,xmm2,xmm3
vpclmulhqhqdq xmm11,xmm2,xmm3
vpunpcklqdq   xmm0,xmm4,xmm5
vpunpckhqdq   xmm1,xmm4,xmm5
vpunpcklqdq   xmm2,xmm6,xmm7
vpunpckhqdq   xmm3,xmm6,xmm7
vpunpcklqdq   xmm4,xmm8,xmm9
vpunpckhqdq   xmm5,xmm8,xmm9
vpunpcklqdq   xmm6,xmm10,xmm11
vpunpckhqdq   xmm7,xmm10,xmm11
vinserti128   ymm0,ymm0,xmm2,1
vinserti128   ymm1,ymm1,xmm3,1
vinserti128   ymm2,ymm4,xmm6,1
vinserti128   ymm3,ymm5,xmm7,1
vpaddq        ymm2,ymm2,ymm0
vpaddq        ymm3,ymm3,ymm1
vpxor         ymm4,ymm12,ymm0
vpxor         ymm5,ymm12,ymm2
vpcmpgtq      ymm6,ymm4,ymm5
vpsubq        ymm3,ymm3,ymm6
vpunpcklqdq   ymm0,ymm2,ymm3
vpunpckhqdq   ymm1,ymm2,ymm3

然后得到ymm0和ymm1中的四个128位矩阵乘积系数.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59432154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档