학교에서 대규모 병렬 컴퓨팅 수업을 수강중이다.
CUDA를 이용한 병렬 컴퓨팅을 배우는데 아뿔싸! 나는 맥을 사용한다! 심지어 컴퓨터는 이엠텍 GPU를 사용중이다... 어떻게든 엔비디아 GPU가 있는 컴퓨터를 "공짜"로 써야한다. 클라우드에서 GPU 사용은 비쌀 것 같고 어떡하지?
Google Colab이 있다.
구글 코랩을 접속해서 새 파일을 만든다. 그리고 런타임 유형을 변경한다.


하드웨어 가속기에서 GPU를 선택해준다.
그러면 이제 GPU를 사용할 준비가 된 것이다.
확인해보면 커멘드를 쳐보면 되는데 귀찮으니까 생략. 엔비디아 테슬라 머시기를 쓰더라
사실 인터넷에 CUDA Colab C++ 이렇게 검색하면 뭘 Cuda를 지우고 다시 깔고 난리를 치고 에러가 나는데 사실 그거 할 필요가 하나도 없다.
Colab에는 이미 Cuda가 설치되어있기 때문에
확인하고 싶다면 생짜로 바로 아래의 코드를 쳐보면 확인이 가능하다 어쩌고저쩌고 엔디비아 Cuda 어쩌고가 뜨면 설치되어있는게 맞다.
!nvcc --version
그리고 그 다음은 C/C++을 이용해 Cuda를 사용할 것이기 때문에 플러그인을 설치해줘야한다.
!pip install git+https://github.com/andreinechaev/nvcc4jupyter.git
를 사용해서 NVCC jupiter 플러그인을 설치해준다.
%load_ext nvcc_plugin
그리고 nvcc plugin을 로드해준다
%%cu
#include <stdio.h>
__global__ void hello(void){
printf("hello CUDA %d!\n", threadIdx.x);
}
int main(void){
hello<<<1,8>>>();
#if defined(__linux__)
cudaDeviceSynchronize();
#endif
fflush(stdout);
return 0;
}
테스트 코드다. 사실 지금 막 실습을 진행한 코드인데 제일 위에 %% << 여기 뒤에 파일 확장자(?)를 써주고 코딩하면 된다.

결과가 잘 나오는 것을 볼 수 있다. 실습 코드에 threadldx.x라고 되어있어서 thread Ldx 인 줄 알았는데 thread Idx... 쓰레드 인덱스더라... 영어 대문자 규탄한다!
아무튼 무료로 열심히 공부를 해보도록 하자 공짜 짱!