OpenCL内核使用std :: vector中的所有其他值计算每个值

问题描述 投票:0回答:1

我正在尝试进行计算,以便每个值与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内核中的所有其他值?我应该将第二个向量值传递给内核吗?

c++ opencl
1个回答
2
投票

你应该在循环qazxsw poi中与解除引用的指针进行比较。

避免在循环的每次迭代中计算j < *vector_sizepow(vector[i],2)在第一个代码片段中就足够了解智能解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.