おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

GPU

素人によるCUDAのお勉強。7

参考にしている本の翻訳版が出てました…。高い...。でも買う価値は大いにあると思います。CUDA C プロフェッショナル プログラミング (impress top gear)作者: John Cheng,Max Grossman,Ty McKercher,森野慎也,株式会社クイープ出版社/メーカー: インプレス…

素人によるCUDAのお勉強。6

cudaプログラミングの時間の計測。sys/time.hのgettimeofdayを使って、CPU上でGPUの実行時間を計測します。グリッドの次元に上限があるため #include <cuda_runtime.h> #include <stdio.h> #include <sys/time.h> #define CHECK(call)\ {\ const cudaError_t error = call;\ if (error != cudaSucc</sys/time.h></stdio.h></cuda_runtime.h>…

素人によるCUDAのお勉強。5

簡単な例としてベクトルの足し算を行います。CPUで同じ計算を実行し、その結果とGPUで計算をした結果があっているか確かめます。 #include <cuda_runtime.h> #include <stdio.h> #define CHECK(call)\ {\ const cudaError_t error = call;\ if (error != cudaSuccess)\ {\ printf("Err</stdio.h></cuda_runtime.h>…

素人によるCUDAのお勉強。4

同期について cudaでカーネル関数を実行している間は、同期を取らない限り、グリッド上で実行されているスレッドが終了しているとは限りません。明示的に同期を取るならば以下の関数があります。 cudaError_t cudaDeviceSynchronize(void); 一方で、暗に同期…

素人によるCUDAのお勉強。3

blockサイズをhost側から制御する方法。 include <cuda_runtime.h> #include <stdio.h> int main(int argc, char **argv){ int nElem = 1024; dim3 block (1024); dim3 grid ((nElem+block.x-1)/block.x); printf("grid.x %d block.x %d \n",grid.x,block.x); block.x = 512; grid.x =</stdio.h></cuda_runtime.h>…

素人によるCUDAのお勉強。2

CUDAプログラミングを始める前のお話 CUDAのプログラムはGPU上でスタンドアロンで実行されるのではなく、CPUとGPUの両方を使っていることを念頭に置く必要がある。(それゆえ、CUDAプログラミングでは、GPUのアーキテクチャを深く理解しないといけない。)そ…

素人によるCUDAのお勉強。

どうして並列計算をするのか 現在のCPUのクロック周波数は、ほぼ頭打ちです。クロック周波数を増やそうとすると、発熱が起こり、その熱を処理できないためだそうです。では、これからは計算速度をどのように向上させるのかというと、その答えの一つが並列化…