2012-06-14 4 views
7

배열을 OpenCL의 함수에 전달하는 방법은 무엇입니까?배열을 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? 
} 

내 편집 소스; I 선에 C [N] = FindIndexFromArray (a, 3) 플로트 * ""유형의 매개 변수와 호환되지 않는 "_global 플로트 * 오류"형 ..argument "을 가지고 코드 :..

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? 
} 

답변

2

하면 그것은 오류 메시지에 명시된대로의 당신의 myArrayKey 따라서 다른 함수에 전달 동일한 유형을 선언해야 유형 globalread-only 함께 제공 한마디로 당신에게 FindIndexFromArray이 있어야한다

FindIndexFromArray(global read_only float* myArray, global read_only float* Key) 
+0

경고 메시지가 계속 표시되지만 다음과 같은 오류 메시지가 표시됩니다. '(myArray [i] == Key)'이 행에서 피연산자 유형이 호환되지 않습니다 ("float"및 "__global float *"'). myArray 및 Key를 __global 유형으로 선언했다고 생각했습니다. 이 문제를 어떻게 해결할 수 있습니까? –

+0

편집 된 소스 코드를 표시 할 수 있습니까? – ardiyu07

+0

편집 한 소스 코드를 보려면 내 질문을 편집했습니다. –

관련 문제