0
私は何百ものjpg画像をdicomに変換する必要があります。私はこの作品がもともとNode.jsで作られたWebアプリケーションを持っていますが、非常に遅いです。私はCで行い、次のコードを並列化するためのOpenMPを使用することを考えた:openmpを使ってjpg2dicomを変換するには?
int main(){
DIR *dir;
struct dirent *arq;
dir = opendir("./jpg");
char cmd1[255] = "./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/";
char cmd_aux[255] = "./dcm4che-2.0.23/bin/jpg2dcm -c dcm4che-2.0.23/etc/jpg2dcm/jpg2dcm.cfg jpg/";
char buf[255];
char nomeArq[255];
int i;
//Stretch in which I use openmp
while ((arq = readdir(dir)) != NULL){
strncpy(nomeArq, arq->d_name, 255);
if(nomeArq[0] != '.'){
sprintf(buf, " dcm/imagem-%d.dcm", i);
strcat(cmd1, nomeArq); // cmd1 + nomeArquivo
strcat(cmd1, buf);
system(cmd1);
strncpy(cmd1, cmd_aux, 255);
}
i++;
}
closedir(dir);
return 0;
}
は、どのように私は、このコードはI/Oバウンドである、私は本当にOpenMPでは任意のスピードアップを得ることができない場合はお願いしたいと思い知っています。そして可能であれば、openmpを使ってこのループを並列化する方法。もし私が非常に明確でなかったら、申し訳ありません!私はまだ英語を勉強しています!
すでに外部コマンドを使用している場合は、使用を検討してください[GNUパラレル](https://www.gnu.org/software/parallel/)、または[ 'xargsの-P'](HTTPS:/ /linux.die.net/man/1/xargs)、それほどコードを書く必要はありません – dvhh
ありがとう、dvhh!私は見てみましょう! :) – Thales