EQQ.jp

Index


Google Colaboratory で OpenCL

Colaboratory は、Google が提供する Jupyter ノートブック環境です。
Google にログインし、ブラウザから以下の URL にアクセスすると、利用できます。

https://colab.research.google.com/notebooks/welcome.ipynb

Google Colaboratory

Jupyter notebook なので、基本は python のプログラムを実行しますが、C 言語のプログラムをコンパイルして、実行することもできます。

また、GPU や TPU も利用できます。
なので、C で書かれた OpenCL プログラムも実行できます。

ここでは、C 言語で書かれた OpenCL のプログラムで CPU と GPU による行列積を実行します。

まずは、C で書かれたプログラムを実行してみます。

メニューから、「ファイル -> Python3 の新しいノートブック」 を開きます。

New notebook

メニューから、「ランタイム -> ランタイムのタイプを変更」 を選び、「ハードウェアアクセラレータを GPU」 にして、「保存」します。

Accelerator GPU

コードセルと呼ばれる欄に、! に続いて linux のコマンドを入力して、三角の再生ボタンを押す(または、セル内で Shift+Enter を押す)と実行され、結果が表示されます。

例えば、ファイルのリストを見るには以下の様にします。

!ls

!ls

"+コード" を押して、セルを追加し、以下の様に入力して、実行します。

%%file test.c
#include <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello colaboratory!\n");
  return 0;
}

Create test.c

すると、test.c というファイル名で、内容が書かれます。
"%%file" が、ファイルを作成するマジックキーワードです。

"+コード" を押して、セルを追加し、以下の様に入力して、内容を確認します。

!cat test.c

"+コード" を押して、セルを追加し、以下の様に入力して、コンパイルします。

!gcc -o test test.c

"+コード" を押して、セルを追加し、以下の様に入力して、実行をします。

!./test

Execute test

これで、Colaboratory で、C プログラムの記述・コンパイル・実行ができました。

このように作成したノートブックをそのまま利用できれば便利です。

変更した内容は、Google ドライブに、自動的に保存されます。
手動で保存するには、メニューから、「ファイル -> 保存」 を実行します。
ファイル名を変更するには、メニューから、「ファイル -> 名前を変更」 を実行します。

行列積のプログラムは、こちらを参照ください。