Làm cách nào để chuyển mảng vào một hàm trong OpenCL? Tôi đã nhận lỗi" ..argument kiểu "float * _global" không tương thích với tham số có kiểu "float *" trong dòng c [n] = FindIndexFromArray (a, 3);Truyền mảng tới tham số hàm trong OpenCL
float FindIndexFromArray(float myArray[], float Key)
{
// simple looping to find the index
for (int i=0;i<sizeof(myArray);i++)
if (myArray[i]==Key)
return i;
}
kernel void ProcessArray(
global read_only float* myArray,
global read_only float* Key,
global write_only float* c)
{
int index = get_global_id(0);
c[index] = FindIndexFromArray(myArray, Key); // How do I pass myArray parameter?
}
nguồn thay đổi nội dung của tôi mã số:..
float FindIndexFromArray(__global read_only float* myArray[], __global read_only float* Key)
{
// simple looping to find the index
for (int i=0;i<sizeof(myArray);i++)
if (myArray[i]==Key)
return i;
}
kernel void ProcessArray(
__global read_only float* myArray,
__global read_only float* Key,
__global write_only float* c)
{
int index = get_global_id(0);
c[index] = FindIndexFromArray(myArray, Key); // How do I pass myArray parameter?
}
Tôi vẫn nhận được một số cảnh báo nhưng đây là thông báo lỗi: 'Các loại toán tử không tương thích (" float "và" __global float * "' trong dòng này 'if (myArray [i] == Key)'. Tôi nghĩ tôi đã khai báo myArray và Key là __global type. Làm thế nào để sửa lỗi này? –
bạn có thể hiển thị mã nguồn đã chỉnh sửa của mình không? – ardiyu07
Tôi đã chỉnh sửa câu hỏi của mình để hiển thị mã nguồn đã chỉnh sửa của mình. –