2

私は、アルゴリズムのシリアルバージョンとパラレルバージョンを比較する必要がある比較研究に取り組んでいます(正確なダウンロードリンクはここにあるNSGA-IIアルゴリズム)。NSGA-IIはヒューリスティックな最適化手法であるため、生成された最初のランダムな母集団に依存します。CPUとGPUを使用して生成された初期の母集団が異なる場合、公平な高速化の調査を行うことはできません。

私は、1.3の計算能力を持つNVIDIA-TESLA-C1060カードを持っています。この回答このNVIDIAドキュメントによると、sm_13デバイスが常にIEEE-754準拠のfloat(単精度)値を生成することは期待できません。つまり、現在のデバイスでは、対応するシリアルに対応するCUDAプログラムの公平な高速化調査を実施できません。

私の質問は、Fermiアーキテクチャに切り替えることで問題は解決するでしょうか?

4

1 に答える 1

3

浮動小数点は連想的ではないため、浮動小数点演算は、IEEE754をサポートしているかどうかに関係なく、アーキテクチャごとに異なる結果をもたらします。x86でコンパイラを切り替えても、通常は異なる結果が得られます。このホワイトペーパーは、いくつかの優れた説明を提供します。

そうは言っても、実際の問題は、操作が生成する乱数に依存するデータ依存アルゴリズムがあることです。したがって、CPUとGPUで同じ番号を生成すると、両方の実行が同じパスをたどります。CPUとGPUの両方で同じ数値を生成できるcuRANDの使用を検討してください。

于 2012-04-26T16:38:57.753 に答える