【发布时间】:2022-07-01 16:02:22
【问题描述】:
我正在大学学习 SYCL,我有一个关于代码性能的问题。 特别是我有这个 C/C++ 代码:
我需要在 SYCL 内核中进行并行翻译,我这样做:
#include <sycl/sycl.hpp>
#include <vector>
#include <iostream>
using namespace sycl;
constexpr int size = 131072; // 2^17
int main(int argc, char** argv) {
//Create a vector with size elements and initialize them to 1
std::vector<float> dA(size);
try {
queue gpuQueue{ gpu_selector{} };
buffer<float, 1> bufA(dA.data(), range<1>(dA.size()));
gpuQueue.submit([&](handler& cgh) {
accessor inA{ bufA,cgh };
cgh.parallel_for(range<1>(size),
[=](id<1> i) { inA[i] = inA[i] + 2; }
);
});
gpuQueue.wait_and_throw();
}
catch (std::exception& e) { throw e; }
所以我的问题是关于 c 值的,在这种情况下我直接使用值 2 但这会影响我运行代码时的性能吗?我需要创建一个变量或者这种方式是正确的并且性能好?
提前感谢您的帮助!
【问题讨论】:
标签: parallel-processing gpu nvidia amd sycl