
以下のようにforループを使用して100個のファイルに対してPython関数を実行しようとしています。このプロセスは非常に遅いようです。 GPUが搭載されたHPCコンピュータを使用しているので、このプロセスをより高速にする方法があるかどうか疑問に思います。
#!/usr/bin/env bash
FILES="/directory_with_files/*.ply"
for i in $FILES;
do python3 function.py -file $i --odir /output_directory --verbose; done
答え1
プログラム自体がすでにGPUを使用していない限り、GPUは役に立ちません。しかし、私が主に使用するツールはGNUパラレル。多くのフラグがありますが、あなたのコマンドは次のようになると思います。
$ find /directory_with_files -name '*.ply' | parallel "python3 function.py -file {} --odir /output_directory --verbose"
デフォルトでは、コアごとに1つずつ、適切であると判断されるすべてのタスクを並列に実行します。
噂があるリモートジョブを実行するためにSSHを介してそれを使用することも可能でなければなりませんが、まだ試したことはありません。