2012-04-05 9 views
2

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

ハードウェアプラットフォーム上に存在する総コア数/ストリーム数を簡単に判別し、利用可能なコアごとにファクタリングスレッドを生成する簡単な方法はありますか?ターゲットRSAモジュラスは、共用メモリ内にあり、モジュラスに対するRhoファクタリング攻撃を使用する各ファクタリングスレッドである。

また、OpenCLがGNU MPに似た複数精度の数学ライブラリをサポートしていれば、大きなセミプライム番号を格納することはできますか?あなたがCPUの場合と同様にGPUに予め

+0

2番目の質問を別の質問にすることをお勧めします。 –

答えて

2

おかげで、あなたは、各コアのための一つのスレッドを起動しません。代わりに、コアよりも多くのスレッドを開始する必要があります。特定のターゲットプラットフォームで利用可能なコアの正確な数については心配しません。代わりに、あなたの問題に最も適したものに焦点を当てないでください。

2

Rogerの回答に追加するには、GPUが非常に効率的に実装しているため、memory latencyを非表示にする理由があります。一般に、各メモリアクセスは、プロセッサが要求されたデータを受信するのに要する時間の点で非常に高価な動作である。しかし、あるスレッドがメモリトランザクションを待っている場合、そのスレッドは「一時停止」することができ、その間に別のスレッドを起動して計算(または他のメモリアクセス)を行うことができます。したがって、十分なスレッドがあれば、基本的にメモリアクセスのレイテンシを隠すことができ、ソフトウェアはハードウェアの完全な計算能力で動作することができます(まれに起こることはほとんどありません)。

私はこれをRogerの投稿にコメントしましたが、そのサイズは制限を超えています。

関連する問題