如何解决OpenACC 中是否有更快的 argmin/argmax 实现?
在 OpenACC 中计算 argmin 是否有比在最小缩减循环和另一个循环中拆分工作以实际找到最小值的索引更快的替代方法?
这看起来很浪费:
float minVal = std::numeric_limits<float>::max();
#pragma acc parallel loop reduction(min: minVal)
for(int i = 0; i < arraySize; ++i) {
minVal = fmin(minVal,array[i]);
}
#pragma acc parallel loop
for(int i = 0; i < arraySize; ++i) {
if(array[i] == minVal){
minIndex = i;
}
}
事实上,这成为我当前项目的瓶颈。
解决方法
我们收到了对 minloc/maxloc 的请求,但这很困难,而且很可能没有性能,所以没有添加。您使用的方法是对此的推荐解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。