1. 現在の位置 : ホーム
  2. 提供科目
  3. 2011年度の科目
  4. 計算科学演習A

計算科学演習AExercise on Computational Science A

授業の概要・目的

今日においても計算機の性能向上は著しいものがあるが、CPUの動作周波数の向上は近年停滞している。現在の計算機の性能向上は、CPUコアもしくはGPUコア内の一サイクルあたりに同時実行される演算(SIMD演算)数の向上、CPUGPUのチップ一個あたりの計算コア数の向上、更には、ネットワークで結合されたこれら計算ノードの数の向上によって得られている。これらの向上要因に共通するのは、「並列性の向上」である、ということができる。よって、今日の計算機システムの性能向上の恩恵を受けるためには、プログラムを並列化する必要がある。この授業では、チップ当たりのコア数増大を活かす為のスレッド並列において広く使われているOpenMP及びCUDAを始めとするGPU利用環境、ノード数の増大を活かすためのプロセス並列において広く使われているMPI、といった並列化をする際に必須となる言語拡張もしくは通信ライブラリの使用法を、粒子法のコードの作成と並列化を一から始めて完成させることによって、受講者が取得することを目的としている。

【研究科横断型教育の概要・目的】

並列計算プログラムを作成する能力を得ることができれば、逐次計算プログラムでは到底成し得ない大規模・高精度計算を実行することができる。そこで、提供部局である情報学研究科にとどまらず全学の以下に挙げるような学生、即ち、シミュレーションの大規模化もしくは高精度化によってブレークスルーが期待できるものの手元には逐次プログラムしかない学生、シミュレーションを使った研究をこれから志す学生、大規模シミュレーション用プログラムがどの用に開発されているのかに興味のある学生、に対し、実際に並列プログラム開発を経験することによって、自身のアプリケーションを並列化できる能力を身につけてもらうようにするのがこの講義の目的である。

授業計画と内容

OpenMP,MPI,CUDAの順にそれぞれの概要の説明と、簡単な問題の並列化の演習を最初に行う。その後、多数の粒子の軌道を粒子間の相互作用を計算しながら積分していくN体法の解説を行った後に、その逐次プログラムを白紙の状態から完成させる。その後、この逐次コードを、OpenMP,MPICUDAを使い、それぞれの方法で並列化、もしくはこれらのうちの複数を混在させるハイブリッド並列化を行う。

OpenMP演習(2回)

資料1

資料2

資料3

資料4


MPI演習(3回)


CUDA演習(2回)


N体法演習(8回)

履修要件
学術情報メディアセンター南館の演習室を使用する予定である。その為、演習室の定員(71名)を超える場合は抽選を行うことがある。また、受講する際にはECS-IDを取得しておく必要がある。
C言語もしくはFORTRANで逐次プログラムを作成した経験を前提として講義を行う。また、UNIXの基本的な使い方を知っていることが望ましい。
予備知識
成績評価の方法・基準
(1)OpenMPは、並列化について大きく分けて2つの異なる実装法が存在ため、それぞれを理解できている
(2)OpenMP, MPI, CUDAを適切に利用して、N体計算コードの並列化が行える
以上の項目について、レポートに基づき評価する。さらに、出席率も評価項目とする。
教科書
特に指定しない。講義資料は各回に配布する予定。
参考書等
OpenMPによる並列プログラミングと数値計算法」牛島、丸善
“Using MPI”, “Using MPI-2”, Gropp et al., MIT Press
「はじめてのCUDAプログラミング」青木、額田、工学社
URL
その他(授業外学習の指示・オフィスアワー等)
木村欣司:金曜・3限目13:00-14:30 kkimur@amp.i.kyoto-u.ac.jp
矢作日出樹:水曜・3限目13:00-14:30 yahagi@media.kyoto-u.ac.jp
授業時間外で、質問がある場合には、あらかじめ、上記のアドレスにメールをすること。

センター提供科目一覧に戻る