【发布时间】:2018-03-07 01:03:12
【问题描述】:
我正在尝试进行计算,以便每个值与 OpenCL 中 std::vector 中的所有其他值进行计算。
通常顺序:
for(int i = 0; i < vector.size(); i++){
currentValue = vector[i];
for(int j = 0; j < vector.size(); j++){
out_val += pow(currentValue,2) + pow(vector[j],2);
}
out_vector[i] = out_val;
}
我想在 OpenCL 中实现,所以在 OpenCL 内核中:
__kernel void calc(__global const float * vector, __global const int *vector_size, __global float *out_vector){
int i = get_global_id(0);
float out_val = 0;
for(int j = 0; j < vector_size; j++){
out_val += pow(vector[i],2) + pow(vector[j],2);
}
out_vector[i] = out_val;
}
但是我不能在内核中访问 vector[j],有没有办法访问 OpenCL 内核中的所有其他值? 我应该将第二个向量值传递给内核吗?
【问题讨论】:
-
为了将 std::vector 共享到您的 OpenCL 设备,您需要获取指向第一个元素的指针并共享该内存。 OpenCL 内核不做标准库。