OpenMPとcudaを使用すると、別のgpuで実行されているときにセグメント化エラーが発生する0

私はcudaを使って作業しており、並列スレッドにopenMPを使用しています:

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

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

私は4つのgpusを持っていても、常にcpu_thread_id = 0で動作します。だから、私はcpu_thread_idを別の番号1,2、および3に変更してテストします。私はセグメンテーションフォルトを持っています。このエラーで、私はなぜそれが問題であるか分かりません。

あなたは何か気付いたのですか?

前もって感謝します

2
すべてのCUDA GPUが正しく検出されていますか? cudaGetDeviceCountを呼び出して、正しい数のGPUを返すかどうかを確認してください。
追加された 著者 Tudor,
質問を編集して、カーネルで渡されている引数がどのように割り当てられているか(特にスレッディング)に関する情報を含めることができますか?また、どのCUDAバージョンでこれをやっていますか?
追加された 著者 talonmies,

1 答え

私はスレッド間にミューテックスを追加し、それは動作します。私はなぜそれがそうであるかわからない...

0
追加された
あなたはCuda APIを使って最後に遭遇したCudaエラーを特定し、それを印刷しようとすることができます。
追加された 著者 Tudor,