Optimization 如何在不使用运算符'的情况下分割两个浮点数/';?
我必须解决嵌套循环内的除法问题,以便允许英特尔编译器矢量化(使用C/C++) 我的问题集中在矢量化问题上,而不是分区的本质 在对问题进行分类之前,请仔细阅读 互联网上的普通搜索和英特尔指南都无法为这一问题提供具体的解决方案 我的前一个问题是这样表述的: '如何在不使用运算符'/'的情况下分割两个浮点数'。结果应该是浮动。”Optimization 如何在不使用运算符'的情况下分割两个浮点数/';?,optimization,floating-point,division,Optimization,Floating Point,Division,我必须解决嵌套循环内的除法问题,以便允许英特尔编译器矢量化(使用C/C++) 我的问题集中在矢量化问题上,而不是分区的本质 在对问题进行分类之前,请仔细阅读 互联网上的普通搜索和英特尔指南都无法为这一问题提供具体的解决方案 我的前一个问题是这样表述的: '如何在不使用运算符'/'的情况下分割两个浮点数'。结果应该是浮动。” 感谢你把家庭作业作为一种脑力锻炼……试着抽象出除法到底是什么 尝试创建一种方法,将变量a从变量b中减去,并增加变量c,直到它不能再减去为止,然后对于剩余部分,您可以对变量a的
感谢你把家庭作业作为一种脑力锻炼……试着抽象出除法到底是什么 尝试创建一种方法,将变量a从变量b中减去,并增加变量c,直到它不能再减去为止,然后对于剩余部分,您可以对变量a的1/10执行相同的操作,以创建十进制值,直到达到所需的精度 Var a=除数 Var b=除数
Var c=a进入b的次数我看到您标记了优化。编译器应该知道如何优化除法,它总是这样做,所以不用担心,我需要它来实现循环的向量化。如果循环中有除法运算,英特尔编译器不会将其矢量化
x*pow(y,-1)
?牛顿的方法是在配备浮点硬件的系统上唯一可行的软件方法,但即使如此,它也将超出特殊情况。@user2174850:那么x86体系结构进行支持向量划分。如果矢量化优化器没有生成所需的代码,请尝试强制循环数据并将对齐计数为提示。或者手动展开循环并使用SIMD内部函数(\u mm\u div\u ps
,或者\u mm\u rcp\u ps
,如果不需要精确取整,则与牛顿方法一起使用)。这是一个非常常见的任务–简单的谷歌搜索将为您提供大量资源。