■ GPGPUにおける最適化
CUDAはC言語のようにGPUのコードを記述することができるが、パフォーマンスを上げるには最適化を行なう必要がある。そこで最適化について解説していくが、その前に前提知識として押さえておくべき事項をいくつか説明しておこう。
●最適化の優先順位
CUDAに限ったことではなく、広くプログラミングにおける最適化の一般論となるが、まずは「最適化とは」という上位概念から再確認しておこう。最適化では、各種命令のサイクル数を気にする前に、データをどのように分割するかを考えるべきだ。さらに、データ分割を考える前に、最適なアルゴリズムを検討するほうが優先される。どんなに高度なテクニックを使ってチューニングを行なっても、基となるアルゴリズムが遅いものであったら意味がないからだ。これは、粗悪な基礎のうえに豪華な家を建てるようなものといえる。
CUDAプログラミングについていえば、まずアルゴリズムの改良を検討し、次にデータ転送の最適化を検討していく。この「データ転送最適化」のステージにおいて、ほかにはないCUDA特有の最適化手法がいくつか用いられる。これはCUDAプログラミングにおいて最も面倒な部分であり、最も面白い部分でもある……(続く)。
●Warpの概念
ブロックが持つ多数のスレッドは、Streaming Multiprocessor(SM)のハードウェアスケジューラーによって、32スレッドずつ並列実行される。この32スレッドのまとまりが、「Warp」と呼ばれるCUDA特有の単位となる。
仮に64スレッドのブロックがあったとすると、SMはスレッドを2つのWarpに分割し、Warpごとのまとまりで処理を実行する(図1)。このことから、ブロックに持たせるスレッドの数は、Warpのサイズ(=32)の整数倍にしておくと効率がよくなることが容易に推測できるだろう……(続く)。
ASCII.technologies×ASCII.jp GPGPUセミナー
―― powered by フィックスターズ
開催概要
- 主催
- ASCII.technologies編集部、アスキー総合研究所、ASCII.jp編集部
- 協力
- フィックスターズ
- 日時
- 2010年3月19日(金)午後4時から午後7時まで
午後3時30分受付開始
(セミナー終了後に講師陣をまじえて軽食付き懇親会を実施予定) - プログラム
- 内容:NVIDIA CUDA環境のアプリケーション開発、ATI Stream環境の開発事情、OpenCLによる並列処理の共通化、など
講師:フィックスターズ http://www.fixstars.com/
GPGPUの基本・活用事例、NVIDIAとATIの最新GPU事情、GPGPU動作デモ、Q&Aなど
当日はGPGPUシステムの動作デモをご覧いただけます
会場では無線LANをご利用いただけますが、同時接続者数や利用状況によっては利用できない場合もございます - 場所
- アスキーメディアワークス社内第1会議室(懇親会は第7会議室にて実施予定)
東京都新宿区西新宿4-34-7 住友不動産西新宿ビル5号館
会場へのアクセス http://asciimw.jp/info/corp/map.php - 定員
- 30名(予定)
- 参加費
- 1万1000円(税込)
お申し込みはこちら(キャラアニのコマースサイトに移動します)
※ ご入力いただいた個人情報は、領収書発行、会場での参加者確認、並びに今後のセミナー告知のために、アスキー・メディアワークスで利用する場合があります。上記目的以外には使用しません。なお、決済代行としてキャラアニに業務を委託しております。 - 対象者
- GPUコンピューティングの開発、導入に関心をお持ちの方
※ ASCII.technologies 2009年12月号を基礎テキストとして参加者に当日配布します
お問い合わせ
お問い合わせ用メールフォームから、タイトルを「GPGPUセミナーについて」としてお送りください。のちほど担当者よりご連絡させていただきます。