首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sse/sse2双矩阵浮点向量乘法

sse/sse2双矩阵浮点向量乘法
EN

Stack Overflow用户
提问于 2011-02-28 15:45:38
回答 2查看 2.1K关注 0票数 2

我必须使用sse/sse2实现矩阵-向量乘法。向量和矩阵都很大。矩阵为双精度,向量为浮点型。

重点是我必须在浮点数上做的所有计算-当我从矩阵中获得数据时,我将其提升为浮点数,进行计算并获得浮点数向量(稍后在浮点数上进行一些额外的计算后,我必须将一些浮点值(浮点数矩阵)添加到双精度值(双精度矩阵)中。

我的问题是,我如何使用SSE/SSE2来做这件事-问题是double-我有指向double*的指针,我必须以某种方式将4个double转换为4个浮点数以适应__mm128……有什么要做的介绍吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-28 23:08:07

需要调用__m128 _mm_cvtpd_ps (__m128d a) (CVTDP2PS)两次以获取两个单精度浮点向量,每个向量包含两个原始双精度值,然后使用__m128 _mm_shuffle_ps(__m128 a, __m128 b, unsigned int imm8) (SHUFPS)将这两个浮点向量合并为一个向量。

票数 1
EN

Stack Overflow用户

发布于 2011-02-28 16:07:47

double更改为float会降低精度级别,而不是提高精度级别。为了更准确,您应该在double上进行计算(将向量提升为该类型),然后可能在之后将结果向下强制转换为float。转换所需的指令是cvtps2pd (floatdouble)和/或cvtpd2ps (doublefloat)。它们一次只能转换两个值(因为一个SSE寄存器中只有两个double),所以您需要分两部分进行转换。

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

https://stackoverflow.com/questions/5139363

复制
相关文章

相似问题

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