首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DPC++ oneAPI提高性能

使用DPC++ oneAPI提高性能
EN

Stack Overflow用户
提问于 2020-12-07 01:33:08
回答 1查看 62关注 0票数 1

我是OpenCL/OneAPI的新手。如何将此嵌套循环更改为使用oneAPI图形处理器:

代码语言:javascript
复制
try {
        for (int i = 0; i < count; i++) {
            for (int j = 0; j < count; j++) {
                if (a_array[i] * a_array[j] == max) {
                    p_found = a_array[i];
                    q_found = a_array[j];
                    
                    throw "found";
                }
            }
        }
    }
    catch (...) {
        std::cout << "q = " << q_found << " and p = " << p_found << std::endl;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 04:38:55

下面是该任务的OpenCL内核的样子:

代码语言:javascript
复制
#define count 1024
#define max 1.0f
kernel void find(const global float* a_array, gloabl float* pq_found) {
    const uint n = get_global_id(0); // parallelized across nested double loop
    cosnt uint i=n/count, j=n%count;
    const float a_arrayi=a_array[i], a_arrayj=a_array[j];
    if(a_arrayi*a_arrayj==max) {
        pq_found[0] = a_arrayi;
        pq_found[1] = a_arrayj;
    }
}

请注意,由于并行化,有一个小的复杂性:如果只有一次命中,一切都是正常的。然而,如果有多个命中,结果将是多个命中中的一个,并且它将是完全随机的。

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

https://stackoverflow.com/questions/65171011

复制
相关文章

相似问题

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