お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2012/09/01 17:25

イベント

ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催

画像集#009のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
 2012年8月30日,現役高校生にGPUプログラミングを体験してもらおうというイベント「高校生のためのCUDAサマーキャンプ2012」が開催された。これは,NVIDIAが毎年夏に開催している恒例のイベントだが,4回めとなる今回の大きなトピックは,同イベントとしては初めて東京工業大学とNVIDIAの共催になった点である。
 会場には東京工業大学大岡山キャンパスが使用され,「CUDAの実習に東京工業大学が誇るスーパーコンピュータ「TSUBAME2.0」を利用する」という,高校生にとっては夢のような企画が実現した。ほぼ丸1日,張り付きで同イベントを取材してきたので,筆者の雑感も挟みつつレポートしてみたい。


39名の高校生が参加しTSUBAME2.0の見学ツアーも


東京工業大学 青木尊之教授(上)と下川辺隆史助教(下)
画像集#002のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
画像集#001のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
 冒頭でも述べたように「高校生のためのCUDAサマーキャンプ2012」は今年で4回めの開催となる。NVIDIAによると,今回のイベントは昨年に比べて参加条件を少し厳しくしたとのこと。詳しくはこちらにある通りで,平たく言うとC言語で普通にコードが書けるレベルが要求されたため応募の出足は鈍かったそうだが,それでも大勢の参加申し込みがあり,抽選の結果,42名の高校生が参加することとなった。

 残念ながら,スケジュールの都合がつかなくなり参加を取りやめた方が出たため,最終的には39名の高校生が参加。平均年齢は16.5歳とのことで(当然かもしれないが)高校1,2年生が中心,うち約1/3は高等工業専門学校の生徒が占めるという構成になっていた。

 過去3回の本イベントでは,NVIDIAが都内の会場に機材を準備して行っていたが,今回は学習のための設備を含めて東京工業大学のものが使えるというのが大きな特徴だ。東京工業大学の青木尊之教授と下川辺隆史助教が講師を努め,高校生にとっては大学の授業を一足先に受けるというようなイメージにもなり,それだけでも有意義な1日になったのではないかと思う。

 冒頭,NVIDIAスタッフがGPUの歴史やGPUコンピューティングへのNVIDIAの取り組みを紹介し,続いて青木教授と下川辺助教がスーパーコンピュータTSUBAME2.0を用いた研究内容を紹介。それらのイントロダクションが終了した午前10時ごろからTSUBAME2.0を用いたCUDAの実習が始まり,予定していた時刻を1時間以上も超過した午後6時すぎまで,ほぼ丸一日みっちりしごかれる? というスケジュールで進められた。

TSUBAME2.0
画像集#004のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
 高校生達には,それぞれTSUBAME2.0の臨時のアカウントが発行され,机上のWindows機からTSUBAME2.0にログインしてCUDAのコードをコンパイル&実行できるという,普通では体験できそうもない環境が用意された。

 TSUBAME2.0のOSにはLinuxが採用されているので,実習の冒頭,まずその使い方を下川辺助教がレクチャー。その様子を後ろから見ていたのだが,参加者の1/3弱くらいはLinuxを使った経験があるようで,なかにはUNIX系OSを代表するエディタEmacsなんかまでバリバリ使う高校生がいる一方,少したどたどしい感じでコマンドを売っている学生も少なくなかった。
 UNIX系のシェルは,使い慣れると補完機能やヒストリ機能を駆使して高速に操作できるので,習熟度に応じて操作速度が劇的に向上する特徴がある。経験者とそうでない人には操作速度にかなりの開きがあるので,そこで少し差がついてしまったかなという印象はある。

 一方,CUDAそのものの解説は初心者向けで非常に丁寧だったのが印象的だった。CUDAプログラミングの基礎を担当した青木教授も,普段教えない高校生が相手ということもあるのか,講義には熱が入っていて,それだけに時間も超過気味になってしまったのだが,しっかり講義中の課題に取り組んだ高校生は得るものがあったはずだ。

 また,昼食後にはTSUBAME2.0の実機見学ツアーも行われ,TSUBAME2.0を前に下川辺助教に熱心に質問する参加者もいた。GPUを使った国内最高レベルのスーパーコンピュータを見ることができた経験は高校生にとって大きな刺激になったことだろう。

昼食後にはTSUBAME2.0見学ツアーも開催された。下川辺隆史助教がTSUBAME2.0のルーム内の解説を担当,熱心に質問する高校生もいたりした
画像集#003のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催


グループワークではGPU向けの最適化が課題に


画像集#010のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
 さて,肝心のCUDAの講義だが,最も時間が割かれていたのはGPUに同時に実行させるスレッド数の指定の問題だった。

 CUDAではスレッド数を(最大)3次元の一種の配列のような形で指定でき,スレッド群の扱いでもブロックとグリッドという二つの階層がある。また,GPUカーネル内では,その配列のインデックス(添え字)が並列データアクセスを行うためのインデックスになるので,スレッド数の指定の方法と,それをGPUカーネル内でインデックスとして扱う方法はCUDAプログラミングの基礎の基礎であると同時に鍵となるものだ。

 というわけで,講義中の課題は重点的にそのあたりが扱われれた。C言語で多次元配列を扱ったことがあれば,そう難しい課題ではなかったと思うのだが,参加した高校生に話を聞いてみると「ついていけません……」と漏らす高校生もいた。

 もっとも,慣れない大学の講義室で生まれて初めて(であろう)スーパーコンピュータにログインして操作するという場の雰囲気に飲まれて,普段ならできることもできなくなっていたのかもしれない。また,参加者にはCUDAの経験者もいて,そういう高校生は課題を瞬時にこなしていたりもした。

 場の雰囲気といえば,講義の内容も後半は波動のシミュレーションと拡散のシミュレーションという高度なものになり,アルゴリズムそのものでは,概説のみとはいえ偏微分や2階微分とか高校数学を超える内容がバリバリでてきたし,先生も先生で微分は高校でやっているという前提で話をしたりもした……筆者の記憶では微分を本格的に習うのは高校3年だったはずなので,参加者のほとんどは微分の基礎概念しか知らなかったのではないだろうか。そういった雰囲気に気おされる高校生もいたような気もする。

高校数学を超える内容も多かった。もちろん,この内容が課題になったわけではないが,雰囲気に気おされてしまう高校生もいたかも
画像集#005のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催

 講義の最後には,参加者を3人ずつに分けたグループワークが行われた。課題は,青木教授が作成した22.65GFLOPSという速度で拡散をシミュレーションするサンプルを「さらに高速にせよ」というもの。グループで最適化を競うことになったが,約35GFLOPSを記録したグループが優勝し,記念品の贈呈が行われた。

これがグループワークの課題。できるだけ高い性能を出したグループが優勝するというルール
画像集#006のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催

グループワークでは約35GFLOPSを記録したグループが優勝,記念品が贈呈された
画像集#007のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催

抽選で5名の高校生にGeForce GTX 480搭載カードがプレゼントされた
画像集#008のサムネイル/ガンバレ高校生,NVIDIAと東京工業大学がスーパーコンピュータ「TSUBAME2.0」を使った「高校生のためのCUDAサマーキャンプ」を開催
 この課題はなかなか興味深いもので,講義では詳しく触れられなかったが,NVIDIAのGPUはWARPという32命令の単位で実行が行われること,また一つのブロックは同じCUDAプロセッサクラスタで実行されることを踏まえて最適化すると大幅にパフォーマンスが向上させられたりする。実際,青木教授の模範解答は50GFLOS以上を叩き出すなど,GPUの最適化の難しさというか最適化による差の大きさを身を持って体験できたことも貴重ではなかったかと思う。

 というわけで,「高校生のためのCUDAサマーキャンプ」をレポートしてみたが,高校生の時期というのは数学をはじめとする基礎知識が整うと同時に,頭も柔軟でプログラミングを学ぶのには最高の時期だと思う。
 最近のゲーム開発では,数学,物理,工学といった幅広い知識と同時に高度なプログラミング技術が求められるようになっている。優秀な技術者はゲーム開発に欠かせないわけで,その卵になりうる高校生達には思いっきりプログラミングに取り組んでほしいものだ(もちろん道を踏み外さない程度に)というのが筆者の希望でもあったりする。「高校生のためのCUDAサマーキャンプ」は良いきっかけになるはずだ。来年も開催されると思うので,本稿を読んでいる中高生諸君はぜひ参加してみてほしい。

高校生のための CUDA サマーキャンプ 2012公式サイト

  • 関連タイトル:

    CUDA

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月28日〜12月29日