본문 바로가기
Tech Insights

CUDA 프로그래밍 - Hello CUDA! (Linux)

by Kudos IT Daily 2024. 3. 2.
반응형

 

CUDA 프로그래밍 - Hello CUDA! (Linux)

 

목차

  • Linux 환경 CUDA 툴킷 설치하기
  • Hello CUDA!

 

안녕하세요! 지난 포스팅에서는 처음으로 CUDA 프로젝트를 생성하고, 빌드 및 실행했습니다. 이전 글에서 윈도우 비주얼 스튜디오 환경에서 Hello CUDA를 생성해 봤는데요. 이번 글에서는 말씀드린 것처럼 리눅스 환경에서 설정 후, Hello CUDA 프로젝트를 실습해 보도록 하겠습니다.

 

CUDA 프로그래밍을 실행하기 전, 엔비디아 GPU, CUDA 호환성을 확인하는 방법, 원도우에서 CUDA 프로그래밍 환경을 설정하는 내용을 확인하고 싶으시면 아래의 글을 읽어보시는 것을 추천드립니다!

 

 

 

CUDA 프로그래밍 - Hello CUDA!

CUDA 프로그래밍 - Hello CUDA! 목차 Driver API, Runtime API CUDA 사용 가능 GPU 확인하기 CUDA 개발 환경 설정 Hello CUDA 안녕하세요! 오늘 포스팅에서 처음으로 CUDA를 사용해 보도록 하겠습니다. CUDA 프로그래

kudositdaily.tistory.com

 

 

Linux 환경 CUDA 툴킷 설치하기

CUDA 프로그램을 작성하고 컴파일하기 위해 CUDA 툴킷(Toolkit)을 설치해야 합니다. CUDA 툴킷은 엔비디아 공식 페이지에서 설치할 수 있습니다.

 

 

 

CUDA Toolkit - Free Tools and Training

Get access to SDKs, trainings, and connect with developers.

developer.nvidia.com

 

 

설치 페이지에 접속하시면 CUDA 툴킷을 설치하기 위해 운영체제, 시스템 아키텍처, 리눅스 배포판, 운영체제 버전, 설치 타입을 설정해야 합니다. 저는 아래의 그림과 같이 우분투 22.04에 맞게 설정했습니다. 그리고, 사용하시는 GPU에 따라 툴킷 버전이 호환되지 않을 수 있으니, 설치 전, 확인하시기 바랍니다. 저는 아래의 명령어를 통해 CUDA 버전을 확인 후, 툴킷을 설치했습니다.

 

 

엔비디아 드라이버 및 CUDA 버전 확인

nvidia-smi

 

nvidia-smi 출력 결과

nvidia-smi 결과

 

 

CUDA Toolkit Downloads

 

 

위와 같이 설정하면 설치를 위한 명령어(Installation Instructions)가 나타납니다. 명령어를 수행하면 CUDA 툴킷 설치가 수행됩니다. 상세 옵션을 설정하고자 할 경우, 아래의 설치 가이드에서 옵션에 대한 정보를 확인하실 수 있습니다.

 

Additional Installation options

 

CUDA Installation Guide for Linux

The installation instructions for the CUDA Toolkit on Linux. 13. Post-installation Actions The post-installation actions must be manually performed. These actions are split into mandatory, recommended, and optional sections. 13.1. Mandatory Actions Some ac

docs.nvidia.com

 

 

CUDA 툴킷 설치를 완료하고 터미널에서 다음의 명령어를 통해 정상적으로 설치되었는지 확인할 수 있습니다. 만약, 정상적으로 설치가 되었을 경우, 설치된 CUDA 툴킷의 버전 정보가 표시됩니다.

 

 

NVCC 버전 확인

nvcc --version

 

NVCC 버전 확인 결과

nvcc --version을 통한 CUDA 툴킷 버전 확인

 

 

만약 CUDA 툴킷의 정보가 표시되지 않는다면?

만약, 위의 명령어를 수행했음에도 버전 정보가 표시되지 않는다면, 환경 변수 설정을 의심해 볼 수 있습니다. 아래의 과정을 통해 환경 변수를 명시적으로 .bashrc 파일에 설정해 보도록 하겠습니다.

 

 

1. 터미널에서 .bashrc 파일을 연다.

sudo gedit ~/.bashrc

 

2. .bashrc 파일 내부에 아래의 내용을 추가합니다.

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

 

3. 저장 후, .bashrc를 실행합니다.

source ~/.bashrc

 

위 과정을 수행한 후, 터미널에서 nvcc --version을 실행한 후, 정상 설치되었는지 확인합니다.

 

 

Hello CUDA!

CUDA 툴킷 설치를 완료했으니 Hello CUDA 프로젝트를 생성하도록 하겠습니다. 이번 포스팅에서는 비주얼 스튜디오 코드(Visual Studio Code)를 활용하도록 하겠습니다. 이번 실습 예제는 리눅스 환경에서 사용가능한 편집기, 통합 개발 환경(Integrated Development Environment, IDE)을 사용하시면 됩니다.

 

Hello CUDA 예제를 실습하기 위해 hello_cuda.cu 소스 파일을 생성합니다. 생성된 파일에 지난 포스팅 예제와 동일하게 코드를 작성했습니다.

 

 

hello_cuda.cu 소스 파일

 

 

위 소스코드를 컴파일하기 위해 nvcc 명령어를 사용합니다. nvcc는 NVIDIA CUDA Compiler의 약자로, CUDA C, CUDA C++ 소스코드를 컴파일하는 데 사용하는 컴파일러입니다. hello_cuda.cu 소스파일을 컴파일하고 실행파일을 생성하기 위해 아래의 명령어를 사용했습니다. 명령어는 hello_cuda 실행 파일을 컴파일하고 자동으로 실행하는 명령어입니다.

 

 

컴파일 및 실행 명령어

nvcc hello_cuda.cu -o hello_cuda --run

 

 

위 명령어를 수행한 결과, 아래와 같이 "Hello CUDA from CPU!"가 호스트(host)에서 호출되고, "Hello CUDA from GPU!"가 디바이스(GPU)의 10개 스레드에서 호출됩니다. 이전 포스팅에서 말씀드린 것처럼, 호스트, 디바이스 등 새로운 개념에 대해 다음 포스팅에서 설명드릴 수 있도록 하겠습니다.

 

 

hello_cuda 실행 결과

 

 

마치며

이번 포스팅에서는 리눅스 환경에 CUDA 툴킷을 설치하고, Hello CUDA 예제를 수행했습니다. 다음 포스팅에서는 오늘 말씀드리지 못함 CUDA 프로그래밍의 문법적 요소와 호스트, 디바이스 등 새로운 개념에 대해 소개하도록 하겠습니다.

 

오늘 글도 도움이 되셨기를 바랍니다. 더 좋은 글로 찾아뵐 수 있도록 노력하겠습니다. 고맙습니다.

 

 

Reference

1. CUDA 기반 GPU 병렬 처리 프로그래밍 - 기초부터 성능 최적화 전략까지

2. CUDA C++ Programming Guide

반응형