сокращение openCL и передача 2d-массива

Вот цикл, который я хочу преобразовать в openCL.

for(n=0; n < LargeNumber; ++n) {    
    for (n2=0; n2< SmallNumber; ++n2) {
        A[n]+=B[n2][n];
    }                                                         
    Re+=A[n];       
}

И вот то, что у меня есть на данный момент, хотя я знаю, что это неверно и в некоторых вещах упущено.

__kernel void openCL_Kernel( __global  int *A,
                         __global  int **B,  
                         __global  int *C, 
                         __global _int64 Re,
                                   int D) 
{

int i=get_global_id(0);
int ii=get_global_id(1);

A[i]+=B[ii][i];

//barrier(..); ?

Re+=A[i];

}

Я новичок в подобных вещах. Прежде всего я знаю, что я не могу передать глобальный двойной указатель на ядро ​​openCL. Если можете, подождите несколько дней или около того, прежде чем публиковать решение, я хочу выяснить это для себя, но если вы можете помочь указать мне в правильном направлении, я был бы благодарен.

7
задан MVTC 9 January 2012 в 14:48
поделиться