ちょっとうれしいこと
今日も職場で、幾何光学ソフトエンジン部分をCUDA on GPUで書きかえる作業に取り組む。自分は、試行錯誤の結果、kernel.cu内のある一つのif文が、計算時間を大幅に消費していることを、突き止めていた。プログラム自体は、正しい計算結果を出力していた。ただ、GPU内でのthreadsが、上手くタイミングが合っていないような感じだった。(自分は、そのように推測した。)
そこで、自分は、CPUでの処理を増やして、そのkernel.cu内でのif文が不要となるように、アルゴリズム自体の変更を行ってみた。自分の予想では、CPUでの計算時間が多少増えても、GPUが高速化するので、全体としては計算時間が大幅に短縮されるはずであった。
アルゴリズムの変更は手間のかかる作業と思っていたのだが、実際にやってみると、意外に早く終わった。そして、プログラムを実行してみると、通常のC言語プログラムの3倍程度の高速化が達成されていた。計算結果出力ファイルを調べてみると、正しい数値計算が行われている模様であった。自分は、この結果にほっとした。
その後、CPUの最適化オプションを/Oxにする等の工夫を加え、最終的に約4倍の高速化が得られた。
結果的に、kernel.cu内のif文は避けるべき、という原則を、身を以って体験することとなった。
このところ頑張っていたAbel-Plana公式の応用に関する計算で、誤りを見つける。このAbel-Plana公式は、無限級数を積分に変換してくれる公式である。それで、自分は、ある量子光学で頻出する級数の評価にこの公式を適用してみたのである。しかし、肝心の積分を実行する所で、計算間違いをしていたのであった。近日中に、計算間違いを直す予定である。
今日は、もう寝ようと思う。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- テレビを見なかった日(2009.11.04)
- 息子と苦労して算数の問題を解いたこと(2009.11.11)
- あまり作業が進まなかった一日(2009.11.08)
- 中学入試算数問題集を購入する(2009.11.07)
- 地下鉄車内で寝過ごす(2009.11.05)


コメント