簡體   English   中英

如何降低DPC++中parallel_for的時間成本?

[英]How to reduce the time cost of parallel_for in DPC++?

我在 DPC++ 中編寫了以下代碼來測試時間消耗。

// 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.6s。

當用一個parallel_for 測試一個隊列時,它花費了大約0.15s。

測試時發生了一件更連貫的事情

q[i].submit([&](auto &h) {h.memcpy(...);});

當復制的數組較小時,此命令幾乎不消耗時間。

如何在run()中優化上述代碼? 很感謝!

如果您在不同的設備上運行,那么所有隊列將並行執行。

如果要在單個設備上運行,則需要為每個隊列創建一個上下文,然后它將以並行方式執行。

context c1{};
queue q1{c1,gpu_selector()};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM