|
|
第12回:OpenACCを使ったICCG法の高速化つづき < 初級編 最終回 >
2021年3月
|
前回に引き続き、OpenACCを使ったICCG法の高速化手法について考えてみます。
オリジナルのプログラムは東大情報基盤センターの講習会、「OpenMPによるマルチコア・メニィコア並列プログラミング入門」のページから入手できます。 ダウンロードしたmulticore-c.tarを解凍した後に出来る、マルチカラー並列化されたICCGソルバーのmulticore-c/L2/src/solver_ICCG_mc.c をベースに解説します。 |
第11回:OpenACCを使ったICCG法の高速化
2020年12月
|
OpenACCの基本的な考え方や使い方については、前回まででおおよそ説明しきってしまいました。
それでは習うより慣れろということで、今までの総仕上げとして、ICCG法プログラムのOpenACC実装についてご紹介します。 |
第10回:OpenACCでできる最適化とは?
2020年11月
|
前回は、OpenACCプログラムにおけるGPU向けライブラリプログラムの呼び出し方の解説に加え、行列積のような計算量オーダーの大きな計算パターンにおいては、GPUの性能を発揮するためのプログラムの最適化を十分に行えず、満足な性能が得られない可能性があることを解説しました。
今回はここをもう少し掘り下げて、GPUプログラミングにおける最適化とOpenACCの関係性について解説します。 |
第9回:速くならない?とりあえずライブラリに頼ろう!
2020年10月
|
前回に引き続き、OpenACCでうまく行かないケースとその解決策について学びます。
特に計算が複雑になればなるほど、思ったほどの性能が出ないケースが増えてきます。 そんな時はどうしたら良いのでしょうか? |
第8回:OpenACCでも扱えるけど面倒な構造体
2020年09月
|
はじめに、OpenACCで扱えないわけではないけど、扱うのがとても面倒な構造体について紹介します。構造体の面倒な点は2つあります。
面倒 ①:そもそもGPUの仕組み的に、構造体は速度低下の原因になり得る。 面倒 ②:CPUとGPUのメモリが独立していることに起因する、ディープコピーと呼ばれる問題。 |
第7回:今あるプログラムを楽に速くするためには
2020年08月
|
今回で 拡散方程式のプログラム 例は終わりです。
ここまで学んだこと(+α)のまとめとして、何をすればどのくらい速くなるのかを見ていきます。 ここまでで解説した指示文(+α)を使って最適化した場合、どのくらい速くなるのか確認してみましょう。 図1のグラフは、東京大学のReedbushスパコン を使い、CPUとGPUの性能比較をしたものです。 CPUはIntel Xeon E5-2695v4 (Broadwell-EP) を1ソケット(18 コア)、GPUはNVIDIA Tesla P100を1基使っています。 |