0
나는 나의 cuda 커널을 가속화하는데 문제가 있습니다. 그것은 커널이 단독으로 작동하는 것처럼 보입니다. 이전의 thread를 기다리는 모든 thread. 병렬로 작동하지 않습니다.Cuda 커널이 매우 느리게 작동합니다.
가 여기 내 커널 호스트에
__global__ void kernel(char* BiExponent, int lines)
{
const int threadID = blockIdx.x * blockDim.x + threadIdx.x;
if(threadID<1000){
mp_int BiNumber; //various from LibTom
mp_int RNumber;
mp_int ANumber;
mp_int MNumber;
mp_int TempNumber;
mp_init_device(&RNumber);
mp_init_device(&ANumber);
mp_init_device(&MNumber);
mp_init_device(&TempNumber);
mp_init_device(&BiNumber);
mp_read_radix_device(&RNumber, "100648686727131257488671170806992645347098870006145705670894593595064198763504906829344253213869592972491529868272101131220921074193778137252965944155929765587582637231372264910012095142603377767870875822235936330880194126549443874542394830706956638044950273189050162374717380508672959124318834975983480937576",10);
mp_read_radix_device(&ANumber, "39805067790951086730573861588172121787196543962580983242598202413750011891252460890446709601730030154661775311984755147556289281733978635511703976267279217024606927800989962204783456250825578178354787716873876536014210063984216741307040544888447847197648475195752689213083224036785420625437224428658490304276",10);
mp_read_radix_device(&MNumber, "129135516335051440235803237491679224882957576030599162234748304648924718545589827797866156951847154321645009878340207570056281485244329202363518578978799475118300745910542939512857296428327440920812107991347416747733387762031164387998805210106456861835748765549471962882426089437101578019500113090139371006775",10);
mp_read_radix_device(&TempNumber, "0",10);
char* cstr = new char[YDIM];
for(int i=0; i<YDIM; i++){
cstr[i] = BiExponent[(threadID*YDIM)+i];
}
mp_read_radix_device(&BiNumber,cstr ,10);
mp_exptmod_device(&ANumber, &BiNumber, &MNumber,&TempNumber); //TEMP = (A^Bi)mod M
if(mp_cmp_device(&RNumber,&TempNumber)==MP_EQ){ // IF(TEMP==R)
printf("TRUE\n");
}
mp_clear_device(&BiNumber);
mp_clear_device(&RNumber);
mp_clear_device(&MNumber);
mp_clear_device(&ANumber);
mp_clear_device(&TempNumber);
delete [] cstr;
// printf("x = %d\n", threadID);
}}
시작 커널 (나는 쿠다 커널 라이브러리 LibTom 수정) : 80 :
kernel <<< 1024, 1 >>> (dev_Bi2dChar, lines);
작동 1000 개 번호를 실행합니다. 매우 느리고 버그가 언제인지 알지 못합니다. :/내가 앱을 가속화 할 수있는 방법에 대한 팁이 필요합니다.
kernel <<< 1024, 1 >>>
이 당신이 원하는 정말 : 사용하는 경우
는'커널 <<<1,1024> >> 또는 <<<2,512> >>, <<<8,128>은 >> ...'작동하지 않습니다 (/kernel.cu:4545 코드 = 30 (cudaErrorUnknown는)) –
카드 모델은 무엇인가? – lolando
내 카드는 nvidia geforce입니다. gt555M –