Yasuoka Laboratory

【3年生の皆様へ】

泰岡研究室はいつでも見学を歓迎しております。気軽に学生居室(25棟319室)までお越しください!

既に訪問したい時間帯が決まっている方は こちらのフォーム(要keio.jp認証)からアポイントメントを取ることも可能です。


1. CUDAプログラミングを始める前に

GPUプログラミングにおいて気をつけることは何点かあるが,まずは以下の点がCPUでのプログラミングと大きく異なるので重要だ.逆に,以下の点を抑えればGPUで動くプログラムが一応書ける.

(1) GPUで計算対象の変数はGPUボード上のビデオメモリに置かれなければならない


ここで言うビデオメモリとは,VRAM,CUDAではGlobal memoryと呼ばれるのもののこと.メインメモリ-GPU間はPCI-Expressで接続されており,メインメモリ-CPU間の通信よりも格段に遅い.そのため,計算前に計算対象の変数をメインメモリからビデオメモリへ転送し,計算後には逆にビデオメモリからメインメモリに転送することでこの問題を克服している.最近はメインメモリへ直接通信を行える機能もあるが基本的にはこうした方が良い.ビデオメモリ上の変数を見る際も,基本的にはメインメモリに転送してから見る必要がある.

(2) GPU上では複数コアが同時に動作する並列計算が基本

GPUはCPUでいうところのコア数が数十あり,最初から複数スレッドを立てた並列プログラミングを前提としてプログラミング言語が設計されている.具体的にはpthreadのように,各スレッドが独立に実行する関数を用意する必要がある.これの関数はCUDAではカーネルと呼ばれる.実際には1000を超えるスレッドが論理的に時間を共有しており,このことは従来のOpenMPを用いたCPU上での共有メモリ型並列プログラミングよりも遥かに多い並列数を必要とすることを意味する.

コンテンツ

0. なぜGPUコンピューティングが注目を浴びているか
1. CUDAプログラミングを始める前に
2. インストールガイド
3. CUDAプログラミングの第一歩
ホーム