2012-04-26 13 views
2

私は、アルゴリズムのシリアルバージョンとパラレルバージョン(NSGA-IIアルゴリズムは正確にはdownload link here)を比較しなければならない比較研究に取り組んでいます。 NSGA-IIはヒューリスティックな最適化手法であり、したがって生成された初期ランダムな母集団に依存する。 CPUとGPUを使用して生成された最初の母集団が異なる場合、私は公平なスピードアップ研究を行うことができません。私の比較研究のフェルミアーキテクチャ可能な解決策?

私は、1.3の計算能力を持つNVIDIA-TESLA-C1060カードを所有しています。 this anwerおよびthis NVIDIA documentによれば、sm_13デバイスは常にIEEE-754準拠のfloat(単精度)値を生成することは期待できません。言い換えれば、私の現在のデバイスでは、シリアル対応のCUDAプログラムの公平なスピードアップ研究を行うことができません。

私の質問です:フェルミアーキテクチャに切り替えると問題は解決しますか?

+1

これについて他の質問に記載されている情報は、進め方を決めるのに十分なはずです。基本的には、「それは依存する」。 http://stackoverflow.com/questions/10334334/ieee-754-standard-on-nvidia-gpu-sm-13 –

答えて

3

浮動小数点演算はIEEE754をサポートしているかどうかにかかわらず、浮動小数点は連想ではないため、異なるアーキテクチャで異なる結果をもたらします。 x86上のコンパイラを切り替えるだけでも、通常は異なる結果が得られます。このwhitepaperは優れた説明を与えます。

あなたの本当の問題は、演算が生成する乱数に依存するデータ依存アルゴリズムがあることです。したがって、CPUとGPUで同じ数値を生成すると、両方の実行が同じパスに従います。 CPUとGPUの両方で同じ番号を生成できるcuRANDを使用することを検討してください。

+0

私は正しい方向に向けるためにそんなにありがとう。 – Abhinav

関連する問題