GPU、SSE 命令、またはマルチスレッドを使用するためにバイナリを書き換えることができるツールはありますか? シングル スレッドのプログラムがあり、多くの予備サイクルがありますが、ソースがありません。
1 に答える
0
ループなどの些細なケースを除いて、コードを並列化するにはそれを理解する必要があるため、このタスク用の汎用ツールはありません。
多かれ少なかれ自明な並列化を行うためにソースレベルで動作できるツールがありますが、コードがコンパイルされると、多くの意味情報が失われます。
複数のプロセスを生成することにより、より高いレベルで並列化を試みることができます。
たとえば、このバイナリがパラメータnを取り、その実行時間がnに関して線形である場合、 pプロセスの生成はせいぜい実行時間をpで割ることができます。
もちろん、このプログラムが並列化と互換性のないことを実行しないようにする必要があります。実際に混乱を招く可能性があるためです。このプログラムがファイルを使用して一時データを保存すると想像してください。2 つのインスタンスを実行すると、ファイルが破損する可能性があります。
そのため、並列インスタンスを実行する前に、バイナリの境界 (ファイル、データベース、システム リソース (ミューテックス、セマフォなど)) を慎重に決定してください。同じフォルダーにあるファイルを使用している場合は、バイナリをpフォルダーにも複製する必要があります。
于 2013-11-13T20:50:51.677 に答える