OpenMP cuda bilan segmentning boshqa xatosini 0 ga emas, balki boshqa gpu da ishlayotganda beradi

Cuda bilan ishlash va parallel ishlov berish uchun OpenMP dan foydalanaman:

#pragma omp parallel
{
    unsigned int cpu_thread_id = omp_get_thread_num();
    cudaSetDevice(cpu_thread_id);

    if(cpu_thread_id==0) 
    {
       //call kernel function
    }
}

Har doim cpu_thread_id = 0 bilan ishlayman, hatto 4 gpus bor. Shuning uchun cpu_thread_idni sinov uchun boshqa 1,2 va 3 raqamlariga o'zgartirganimda. Men bor: segmentatsiya xatosi. bu xato bilan, men nima uchun bu muammo ekanini bilmayman.

Hech narsani ko'rganmisiz?

Oldindan rahmat

2
Barcha CUDA GPU-lari to'g'ri aniqlanganligiga ishonchingiz komilmi? CudaGetDeviceCount-ga qo'ng'iroq qilib, to'g'ri sonli GPU sonini qaytara oladimi.
qo'shib qo'ydi muallif Tudor, manba
Muammoni yadroda o'tgan argumentlarni qanday ajratish haqida ma'lumotni (masalan, ishora qilish) qanday qilib o'zgartirish mumkin? Bundan tashqari, CUDA versiyasi bilan buni qilasizmi?
qo'shib qo'ydi muallif talonmies, manba

1 javoblar

Mavzular orasida mutex qo'shib qo'ydim va u ishlaydi. Nima uchun bundayligini bilmayman ...

0
qo'shib qo'ydi
Siz Cuda APIni so'nggi duch kelgan Cuda xatosini aniqlash va chop etish uchun ishlatishingiz mumkin.
qo'shib qo'ydi muallif Tudor, manba