以下の関数を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);
}