首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何降低parallel_for在DPC++中的时间成本?

如何降低parallel_for在DPC++中的时间成本?
EN

Stack Overflow用户
提问于 2022-08-05 18:11:00
回答 1查看 74关注 0票数 0

我用DPC++编写了下面的代码来测试时间消耗。

代码语言:javascript
复制
// ignore sth for defining subdevices
cl::sycl::queue q[4] = {cl::sycl::queue{SubDevices1[0]}, cl::sycl::queue{SubDevices1[1]},
                        cl::sycl::queue{SubDevices2[0]}, cl::sycl::queue{SubDevices2[1]}};

void run(){
    for(int i = 0; i < 4; i++){
        q[i].submit([&](auto &h) {
        h.parallel_for(
            sycl::nd_range<2>(sycl::range<2>(1, 1), sycl::range<2>(1, 1)),
            [=](sycl::nd_item<2> it){
                // just empty
                }
            );
        });
    }
}

它的价格大约是0.6秒。

当使用一个parallel_for测试一个队列时,它的开销约为0.15秒。

测试时发生了一件更复杂的事情

代码语言:javascript
复制
q[i].submit([&](auto &h) {h.memcpy(...);});

当复制的数组很小时,此命令几乎不会占用时间。

如何在run()中优化上述代码?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-08-22 06:20:26

如果您在不同的设备上运行,那么所有队列都将并行执行。

如果要在单个设备上运行,则需要为每个队列创建上下文,然后以并行方式执行。

代码语言:javascript
复制
context c1{};
queue q1{c1,gpu_selector()};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73253782

复制
相关文章

相似问题

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