CUDAはNVIDIAの並列コンピューティングアーキテクチャであり、GPUのパワーを活用することでコンピューティング性能の劇的な向上を可能にします。Colabでは、GPU上でCUDA C/C++を無料で使用できます。
1
新しいノートブックを作成します。をクリックします。
2
ウィンドウ右下のNew Python 3 Notebookをクリックします。
3
Runtime > Change runtime typeをクリックします。
4
ドロップダウンメニューからGPUを選択し、Saveをクリックします。
5
以前のバージョンのCUDAを完全にアンインストールします。(行の先頭に'!'を付けると、コマンドラインコマンドとして実行できます)。
apt-get --purge remove cuda nvidia* libnvidia-* !dpkg -l | grep cuda- | awk '{print $2}' | xargs -n1 dpkg --purge !apt-get remove cuda-* !apt autoremove !apt-get update
6
CUDAバージョン9をインストールする。
!wget https://developer.nvidia.com/compute/cuda/9.2/Prod/local_installers/cuda-repo-ubuntu1604-9-2-local_9.2.88-1_amd64 -O cuda-repo-ubuntu1604-9-2-local_9.2.88-1_amd64.deb !dpkg -i cuda-repo-ubuntu1604-9-2-local_9.2.88-1_amd64.deb !apt-key add /var/cuda-repo-9-2-local/7fa2af80.pub !apt-get update !apt-get install cuda-9.2
7
以下のコードでバージョンを確認する:
- 次のように表示されるはずです:nvcc: NVIDIA (R) Cuda コンパイラ・ドライバ Copyright (c) 2005-2018 NVIDIA Corporation Built on Wed_Apr_11_23:16:29_CDT_2018 Cuda コンパイル・ツール、リリース 9.2、V9.2.88
nvcc --version
8
Notebookセルからnvccを実行するための小さな拡張機能をインストールするには、次のコマンドを実行します。
pip install git+git://github.com/andreinechaev/nvcc4jupyter.git
9
以下のコードを使って拡張機能をロードする:
load_ext nvcc_plugin
10
以下のコードを実行して、CUDAが動作しているかどうかを確認します。ノートブックで CUDA C/C++ コードを実行するには、コードの先頭に %%cu 拡張を追加します。
- すべてがうまくいった場合、このコードは「result is 8n」と出力するはずです。
%%cu #include #include __global__ void add(int *a, int *b, int *c) { *c = *a + *b; } int main() { int a, b, c; // 変数 a, b & c のホスト・コピー int *d_a, *d_b, *d_c; // 変数 a, b & c のデバイス・コピー int size = sizeof(int *d_a, *d_b, *d_c; // 変数 a, b & c のデバイス・コピー int size = sizeof(int *d_a, *d_b, *d_c)int size = sizeof(int); // a、b、cのデバイスコピーに領域を割り当てる cudaMalloc((void **)&d_a, size); cudaMalloc((void **)&d_b, size); cudaMalloc((void **)&d_c, size);
// 入力値の設定 c = 0; a = 3; b = 5; // 入力をデバイスにコピー cudaMemcpy(d_a, &a, size, cudaMemcpyHostToDevice); cudaMemcpy(d_b, &b, size, cudaMemcpyHostToDevice);
// GPUでadd()カーネルを起動 add<<1,1>>(d_a, d_b, d_c); // 結果をホストにコピーバック cudaError err = cudaMemcpy(&c, d_c, size, cudaMemcpyDeviceToHost); if(err!=cudaSuccess) { printf("CUDA error copying to Host: %sn", cudaGetErrorString(err)); } printf("result is %dn",c); // クリーンアップ cudaFree(d_a); cudaFree(d_b); cudaFree(d_c); return 0; }.
コメント
最新を表示する
NG表示方式
NGID一覧