7
dizesinde işlev dizisine geçirme dizisi OpenCL'deki bir işleve nasıl geçebilirim?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?
}
Düzenlenen kaynağı, I doğrultusunda c [n] = FindIndexFromArray (a, 3) şamandıra * " "tipi parametresi uyumsuz" _global float * hatası" tipi ..argument" var kod:..
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?
}
Hala birkaç uyarı alıyorum ama bu hata iletisidir: 'İşlenen türleri uyumsuz (" float "ve" __global float * "' bu satırda '' (myArray [i] == Key) '. MyArray ve Key'i __global türü olarak bildirdiğimi düşünmüştüm. Bunu nasıl düzeltirim? –
düzenlenmiş kaynak kodunuzu gösterebilir misiniz? – ardiyu07
Düzenlenmiş kaynak kodumu göstermek için sorumu düzenledim. –