2

私は OpenCL を初めて使用し、RSA ファクタリング アプリケーションを作成しています。理想的には、アプリケーションは NV と AMD の両方の GPU ターゲットで動作するはずですが、各 GPU のコア/ストリーム プロシージャの総数を簡単に判断する方法が見つかりません。

任意のハードウェア プラットフォームにある合計コア/ストリーム プロシージャの数を特定し、利用可能な各コアでファクタリング スレッドを生成する簡単な方法はありますか? ターゲット RSA 係数は共有メモリ内にあり、各ファクタリング スレッドは係数に対して Rho ファクタリング攻撃を使用します。

また、OpenCL が GNU MP に似た多精度数学ライブラリをサポートして、大きな半素数を格納するという考えはありますか?

前もって感謝します

4

2 に答える 2

2

GPUでは、CPUの場合のように、コアごとに1つのスレッドを生成しません。代わりに、コアよりもはるかに多くのスレッドを開始する必要があります。特定のターゲットプラットフォームで利用可能なコアの正確な数については心配しません。代わりに、問題に最適なものに焦点を合わせないでください。

于 2012-04-05T23:04:10.540 に答える
2

ロジャーの回答に追加すると、コアよりも多くのスレッドが必要になる理由は、GPU が非常に効率的なコンテキスト スイッチングを実装してメモリ レイテンシを隠すためです。一般に、各メモリ アクセスは、プロセッサが要求されたデータを受信するのにかかる時間の点で、非常にコストのかかる操作です。ただし、スレッドがメモリ トランザクションを待機している場合は、スレッドを「一時停止」し、その間に別のスレッドをアクティブにして計算 (または他のメモリ アクセス) を実行できます。したがって、十分な数のスレッドがあれば、本質的にメモリ アクセスのレイテンシを隠すことができ、ソフトウェアはハードウェアの全計算能力で実行できます (それ以外の場合はめったに起こりません)。

これをロジャーの投稿へのコメントに入れたかったのですが、そのサイズは限界を超えています。

于 2012-04-06T03:38:50.660 に答える