1

WPA事前共有キーを作成するために、辞書から単語をハッシュするアプリケーションを作成する必要があります。これは、「ネットワークセキュリティ」コースの私の論文です。パフォーマンスを向上させるには、アプリケーションを並列化する必要があります。私はIT研究からMPIの経験がありますが、それをCUDAと結び付けたいと思います。アイデアは、MPIを使用して負荷をクラスターのノードに均等に分散し、CUDAを利用してノードのGPU内で個々のチャンクを並列に実行することです。

MPIを使用して負荷を分散することは、私が過去に簡単に実行できたことです。また、CUDAを使用したコンピューティングは私が学ぶことができるものです。私がやらなければならないことを多かれ少なかれ(実際にはもっとたくさん)行うプロジェクト(pyrit)もあり、そこからアイデアを得ることができます。

MPIとCUDAを接続する方法についてアドバイスをお願いします。このようなものを作った人がいたら、彼のアドバイスや提案をいただければ幸いです。また、このトピックに関するリソースを知っている場合は、私に教えてください。

イントロが長かったので申し訳ありませんが、背景を説明する必要があると思いました。

4

1 に答える 1

3

この質問はより自由形式であるため、明確な答えを出すのは困難です。これは、ハイパフォーマンスマーク、私、ジョナサンドゥルシのコメントの要約です。私は著者であるとは主張しないので、この回答をコミュニティwikiにしました。

MPIとCUDAは直交しています。前者はIPCミドルウェアであり、プロセス間(場合によっては別々のノードに存在する)の通信に使用され、後者はそれを使用する各プロセスに高度なデータ並列共有メモリコンピューティングを提供します。タスクを多くの小さなサブタスクに分割し、MPIを使用して、ネットワーク上で実行されているワーカープロセスにそれらを配布できます。マスター/ワーカーのアプローチは、この種のアプリケーションに適しています。特に、辞書内の単語の長さが大きく異なり、処理時間の変動が予想される場合に適しています。必要なすべての入力値が提供されると、ワーカープロセスはCUDAを使用して必要な計算を並行して実行し、MPIを使用して結果を返すことができます。MPIは、マルチノードジョブの起動と制御に必要なメカニズムも提供します。

MPIとCUDAは別々に使用できますが、最新のMPI実装は、これら2つの間の境界を曖昧にするいくつかのメカニズムを提供します。必要に応じてCUDA関数を透過的に呼び出してメモリをコピーするMPI通信操作でのデバイスポインタの直接サポート、またはメインメモリへの中間コピーなしでデバイスメモリとの間のRDMAのサポートのいずれかです。前者はコードを単純化し、後者はアルゴリズムの構造に応じてさまざまな時間を節約できます。後者には、障害のある新しいCUDAハードウェアとドライバー、および新しいネットワーク機器(たとえば、新しいInfiniBand HCA)の両方が必要です。

直接GPUメモリ操作をサポートするMPIライブラリには、MVAPICH2とOpenMPIのトランクSVNバージョンが含まれます。

于 2012-07-09T12:58:56.887 に答える