2 votes

openMP avec cuda donne une erreur de segmentation lorsqu'il est exécuté dans un autre gpu plutôt que dans 0

Je travaille avec cuda et j'utilise openMP pour le threading parallèle :

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

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

Il fonctionne toujours avec cpu_thread_id=0 même si j'ai 4 gpus. Donc, lorsque je change le cpu_thread_id à un autre nombre 1,2, et 3 pour le test. J'ai obtenu : segmentation fault. Avec cette erreur, je n'ai aucune idée de la raison de ce problème.

Vous avez remarqué quelque chose ?

Merci d'avance

0voto

olidev Points 3052

J'ai ajouté un mutex entre les threads et ça marche. Je ne sais pas pourquoi c'est comme ça...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X