1

以下の関数をOpenMPで並列化しようとしています。使用する#pragma omp parallel for private(dbf,t_tmp)と、データベース ファイルの読み取り中に BAD_EXEC が発生しました。これPreFilterは、並列化する必要がある最も計算集約的なタスクです。最適なケースは、IO 用の 1 つのマスター スレッドと 用のスレーブですPreFilter。これは OpenMP で可能ですか、それとも pthreads を使用する必要がありますか?

for(int it=1; it <= dbfiles->size(); ++it) 
{
    ...

    dbf = openFILE(db_result->db_name,(char *)&id);
    ...
    readHMMFile(dbf,db_result->db_name,filename,t_tmp[curr_index],start_pos);   
    if(curr_index==0){ // modulo 4 ==0
          t_vec[bin]->MapFourHMMsToHMM4(t_tmp[0],t_tmp[1],t_tmp[2],t_tmp[3]);
          PreFilter(q_vec,t_vec[bin]);
    }
    fclose(dbf);
}
4

0 に答える 0