gpt4 book ai didi

c++ - OpenCL 内核计算每个值与 std::vector 中的所有其他值

转载 作者:行者123 更新时间:2023-11-28 01:36:15 25 4
gpt4 key购买 nike

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

最佳答案

您应该在循环中与取消引用的指针进行比较 j < *vector_size .

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

关于c++ - OpenCL 内核计算每个值与 std::vector 中的所有其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com