スポンサーリンク

はじめてのCUDAプログラム

CUDAをやってみたくなった。

インストールがもの凄く簡単になっていて、Visual C++ 2017 Communityが入っているなら

https://developer.nvidia.com/cuda-downloads

からCUDA Toolkitをダウンロードしてインストールするだけで、VC++のプロジェクトにCUDAのプロジェクトが追加される。

 

 

以下、初めてのCUDAプログラム

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <cstring>
__global__ void hello(char *c) {
  c[0] = 'h';
  c[1] = 'e';
  c[2] = 'l';
  c[3] = 'l';
  c[4] = 'o';
  c[5] = '\0';
}
int main(void) {
  const size_t LEN = strlen("hello") + 1;//(CPU側)
  char c_cpu[LEN];//(CPU側)
  char *c_gpu;//(CPU側)

  cudaMalloc( (void**)&c_gpu, LEN);//GPU側にメモリを確保

  hello <<<1, 1 >>>( c_gpu );//GPU側の関数を呼出

  cudaMemcpy(&c_cpu, c_gpu, LEN, cudaMemcpyDeviceToHost);//GPU側から実行結果を取得

  cudaFree(c_gpu);//GPU側のメモリを解放

  puts(c_cpu);//(CPU側)

  getchar();//(CPU側)

  return 0;
}

 

cudaMalloc

GPU側のメモリを確保するための関数。

 

関数名 cudaMalloc
戻り値 cudaError_t
引数
void** devPtr GPU側で確保したメモリのアドレスを格納するためのvoid**型の変数
size_t  size 確保するサイズをバイト単位で指定

参考URI:

https://www.cs.cmu.edu/afs/cs/academic/class/15668-s11/www/cuda-doc/html/group__CUDART__MEMORY_gc63ffd93e344b939d6399199d8b12fef.html

 

cudaFree

cudaMallocで確保したメモリを開放する

関数名 cudaFree
戻り値 cudaError_t
 
void *  devPtr cudaMallocで確保した領域のアドレス

参考URI

https://www.cs.cmu.edu/afs/cs/academic/class/15668-s11/www/cuda-doc/html/group__CUDART__MEMORY_gb17fef862d4d1fefb9dba35bd62a187e.html#gb17fef862d4d1fefb9dba35bd62a187e

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: