Debian 12, 11 또는 10에 CUDA 툴킷을 설치하는 방법

NVIDIA의 CUDA(Compute Unified Device Architecture)는 병렬 컴퓨팅을 위한 강력한 도구입니다. NVIDIA 그래픽 처리 장치(GPU)를 사용하여 컴퓨팅 작업 속도를 높입니다. 이 가이드는 Debian 12 Bookworm, Debian 11 Bullseye 및 Debian 10 Buster에 CUDA를 설치하는 방법을 보여줍니다. 우리는 모든 데비안 버전이 원활하게 실행되도록 NVIDIA의 APT 저장소를 사용할 것입니다.

CUDA 툴킷이 돋보이는 이유:

  • 병렬 처리: CUDA를 사용하면 소프트웨어가 NVIDIA GPU에서 많은 작업을 동시에 실행할 수 있습니다. 이는 많은 컴퓨팅 성능이 필요한 작업에 적합합니다.
  • 다양한 언어 지원: C, C++, Fortran과 같은 프로그래밍 언어로 CUDA를 사용할 수 있습니다. 또한 OpenCL 및 DirectCompute와 같은 다른 컴퓨팅 도구와도 작동합니다.
  • 완전한 개발 도구: NVIDIA는 개발자에게 Nsight Eclipse Edition을 통해 전체 도구 세트를 제공합니다. CUDA 애플리케이션을 구축, 디버깅 및 개선하는 데 도움이 됩니다.
  • 즉시 사용 가능한 라이브러리: CUDA에는 GPU 작업을 위한 라이브러리가 있습니다. 예로는 수학 연산을 위한 cuBLAS와 데이터 분석을 위한 cuFFT가 있습니다.
  • 미래 지향적인 디자인: CUDA는 새롭게 출시될 NVIDIA GPU와 함께 작동하도록 만들어졌습니다. 이는 코드를 많이 변경하지 않고도 소프트웨어를 향상시킬 수 있음을 의미합니다.

데비안에 CUDA를 설치하기 전에:

  • 시스템을 확인하세요: 컴퓨터의 하드웨어와 소프트웨어가 CUDA를 사용할 준비가 되었는지 확인하세요. NVIDIA에는 확인할 수 있는 GPU 및 시스템 요구 사항 목록이 있습니다.
  • 올바른 소스 사용: 이 가이드는 NVIDIA의 Debian용 APT 저장소에 중점을 둡니다. 이는 데비안 시스템에 안정적이고 잘 작동하는 CUDA 버전을 얻는 가장 좋은 방법입니다.
  • 최신 정보 유지: 때때로 업데이트를 찾아보는 것이 좋습니다. NVIDIA는 CUDA를 더 좋게 만들기 위해 종종 새로운 기능과 수정 사항을 선보입니다.

이 소개를 마무리하기 위해 데비안에서 CUDA를 이해하고 사용하면 애플리케이션을 크게 향상시킬 수 있습니다. 앞으로 나아가면서 데비안 시스템에서 NVIDIA의 CUDA 툴킷을 최대한 활용하기 위한 설치 프로세스와 모범 사례에 대해 더 깊이 알아볼 것입니다.

기존 CUDA 및 NVIDIA 설치 지우기(상황별)

NVIDIA 드라이버를 설치하거나 Debian에서 버전 업그레이드를 고려하기 전에 깨끗한 상태로 시작하는 것이 중요합니다. 이는 데비안 시스템에서 기존 NVIDIA 설치를 제거하는 것을 의미합니다. 이 단계를 통해 중복 설치로 인해 발생할 수 있는 문제를 방지할 수 있습니다. NVIDIA 드라이버를 처음 설치하는 경우 이 섹션을 건너뛰고 다음으로 진행할 수 있습니다.

방법 1: APT를 통해 설치된 NVIDIA 패키지 제거

이전에 APT 패키지 관리자를 사용하여 NVIDIA 드라이버를 설치한 경우 단일 명령을 사용하여 모든 NVIDIA 관련 패키지를 제거할 수 있습니다. 이 작업을 수행하면 시스템에서 NVIDIA가 효과적으로 제거됩니다. 터미널에 다음 명령을 입력하세요.

sudo apt autoremove cuda* nvidia* --purge

이 명령은 autoremove 의 특징 apt 명령. 다른 패키지에 대한 종속성을 충족하기 위해 자동으로 설치되었지만 더 이상 필요하지 않은 패키지를 제거합니다. 그만큼 nvidia* 패턴은 'nvidia'로 시작하는 모든 패키지를 식별합니다. 그만큼 --purge 옵션이 알려준다 apt 패키지뿐만 아니라 관련 구성 파일도 제거합니다.

방법 2: Runfile을 통해 설치된 NVIDIA 드라이버 제거

다음을 사용하여 NVIDIA 드라이버를 설치한 경우 .run 파일(NVIDIA CUDA 저장소와 같은 더 나은 대안으로 인해 일반적으로 권장되지 않음)을 제거하려면 다른 접근 방식이 필요합니다.

실행 파일 유형의 설치를 제거하려면 다음 명령을 실행하십시오.

sudo /usr/bin/nvidia-uninstall

이 명령은 nvidia-uninstall 실행 파일 설치와 함께 제공되는 스크립트입니다. 스크립트는 실행 파일을 사용하여 설치된 NVIDIA 드라이버를 체계적으로 제거합니다.

방법 3: Runfile을 통해 설치된 CUDA 툴킷 제거

실행 파일을 사용하여 CUDA 툴킷을 설치한 경우 이를 제거하는 것도 중요합니다. 제거 프로세스는 NVIDIA 드라이버의 프로세스와 유사합니다. CUDA 툴킷을 제거하려면 다음 명령을 실행하십시오.

sudo /usr/local/cuda-X.Y/bin/cuda-uninstall

위 명령에서 교체 X.Y 설치된 CUDA 툴킷의 버전 번호와 함께. 이 명령은 cuda-uninstall CUDA 툴킷의 실행 파일 설치에 포함된 스크립트입니다. 이 스크립트는 데비안 시스템에서 CUDA 툴킷을 체계적으로 제거하도록 설계되었습니다.

Contrib 및 Non-Free 저장소 활성화

첫 번째 단계는 데비안 저장소 목록에 "contrib" 및 "비자유" 저장소를 추가하는 것입니다. 절차는 Debian 12 Bookworm부터 다양하므로 특정 버전의 Debian 배포판에 해당하는 명령을 사용하는 것이 중요합니다.

가장 먼저, 데비안 시스템에 다음이 설치되어 있는지 확인하세요:

sudo apt install software-properties-common -y

책벌레 이상:

sudo add-apt-repository contrib non-free-firmware

Bullseye 및 Buster 아래쪽:

sudo add-apt-repository contrib non-free

계속하기 전에 빠른 APT 업데이트를 실행하여 패키지 인덱스를 새로 고치십시오.

sudo apt update

Debian에 NVIDIA APT 리포지토리 추가

CUDA를 설치하는 가장 효율적인 방법은 NVIDIA CUDA 저장소에서 직접 설치하는 것입니다. 이 접근 방식을 통해 사용자는 새로운 기능, 버그 수정, 보안 패치 및 개선 사항을 포함한 적시에 업데이트를 받을 수 있습니다.

CUDA 설치 전 데비안 시스템 준비

설치 프로세스를 시작하기 전에 데비안 시스템을 올바르게 준비하는 것이 중요합니다. 이는 여러 필수 구성 요소 패키지를 설치해야 함을 의미합니다. 이러한 패키지 중 일부가 이미 시스템에 있더라도 다시 확인하는 것이 좋습니다. 터미널에서 다음 명령을 실행합니다.

sudo apt install build-essential gcc dirmngr ca-certificates software-properties-common apt-transport-https dkms curl -y

이 명령은 후속 단계에 중요한 필수 패키지를 설치합니다. 그 중, dirmngr 키를 관리하고, ca-certificates SSL 인증서를 처리하고, software-properties-common 소프트웨어 저장소를 관리하고, apt-transport-https 안전한 패키지 다운로드를 보장합니다. dkms 커널 모듈을 관리하고 curl 인터넷에서 파일 다운로드를 용이하게 합니다.

NVIDIA 리포지토리 GPG 키를 사용하여 설치 인증

소프트웨어 패키지의 신뢰성과 무결성을 보장하는 것이 중요합니다. 특정 Debian 버전의 GPG 키를 가져올 때 저장소 패키지의 신뢰성을 확인합니다. 키는 패키지에 서명하고 패키지를 가져와서 시스템에 서명된 패키지를 신뢰하도록 지시합니다.

책벌레, 실행:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

불스아이, 실행:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

버스터, 사용:

curl -fSsL https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/3bf863cc.pub | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nvidia-drivers.gpg > /dev/null 2>&1

NVIDIA 리포지토리를 Debian 시스템에 통합하기

GPG 키를 사용하면 이제 Debian 시스템에 NVIDIA 저장소를 추가할 수 있습니다. 이 저장소에는 CUDA 설치에 필요한 패키지가 포함되어 있습니다.

책벌레, 사용:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

불스아이, 사용:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

버스터, 사용:

echo 'deb [signed-by=/usr/share/keyrings/nvidia-drivers.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian10/x86_64/ /' | sudo tee /etc/apt/sources.list.d/nvidia-drivers.list

4단계: 패키지 목록 새로 고침

NVIDIA 리포지토리를 추가한 후에는 시스템 패키지 목록을 업데이트하는 것이 중요합니다. 이렇게 하면 시스템이 NVIDIA 저장소의 새 패키지를 인식할 수 있습니다. 업데이트하려면 다음을 실행하세요.

sudo apt update

NVIDIA 드라이버로 CUDA 설치

CUDA 드라이버 검색

필수 구성 요소가 있으면 CUDA 및 최신 NVIDIA 드라이버를 설치할 수 있습니다. 그러나 계속하기 전에 APT show 명령을 사용하여 사용 가능한 드라이버 버전을 확인하는 것이 좋습니다.

apt show cuda-drivers -a

그러면 다양한 NVIDIA 드라이버 버전에 사용 가능한 패키지 목록이 출력됩니다.

또는 APT 정책 명령을 사용하여 사용 가능한 CUDA 버전을 확인할 수도 있습니다.

sudo apt policy cuda

Cuda 드라이버 설치를 진행하세요.

이 명령은 사용 가능한 CUDA 버전을 표시합니다. 귀하의 필요에 가장 적합한 버전을 선택하십시오. 이 가이드에서는 사용 가능한 최신 버전을 설치하는 방법을 보여줍니다.

교체하는 것을 기억하세요 545 ~와 함께 535,530, 525, 520, 515, 등은 귀하의 선택에 따라 결정됩니다.

sudo apt install nvidia-driver cuda-drivers-545 cuda

설치 완료 및 재부팅

설치가 완료되면 시스템을 재부팅하여 모든 변경 사항이 적용되도록 하세요.

sudo reboot

이 단계에서는 Debian 시스템의 CUDA 설정을 마무리하여 해당 기능을 효과적으로 활용할 수 있도록 합니다.

CUDA 시작하기

GPU 기능 평가

CUDA 프로그래밍을 시작하기 전에 GPU의 기능을 이해하는 것이 중요합니다. 다양한 GPU는 다양한 CUDA 버전을 지원하며 각 버전에는 코어 수, 메모리 크기 등과 같은 고유한 속성이 있습니다. GPU에 대한 자세한 정보를 얻으려면 nvidia-smi 명령:

nvidia-smi

이 명령은 이름, 총 메모리, 지원되는 CUDA 버전과 같은 다양한 GPU 속성에 대한 통찰력을 제공합니다.

첫 번째 CUDA 프로그램 만들기

시작하기 위해 기본 CUDA 프로그램을 개발하고, 컴파일하고, 실행하여 모든 것이 올바르게 작동하는지 확인하겠습니다. 다음을 사용하여 새 파일을 생성하여 시작하십시오. .cu CUDA 프로그램의 표준 확장입니다. 이를 위해 텍스트 편집기를 사용할 수 있습니다.

nano helloworld.cu

파일에 다음 코드를 삽입합니다. 이 간단한 프로그램은 "Hello, World!"를 표시합니다. GPU의 메시지:

#include <stdio.h>

__global__ void helloFromGPU (void) {
    printf("Hello World from GPU!\n");
}

int main(void) {
    printf("Hello World from CPU!\n");
    helloFromGPU <<<1, 10>>>();
    cudaDeviceReset();
    return 0;
}

이 프로그램을 컴파일하려면 nvcc NVIDIA CUDA 컴파일러를 나타내는 명령:

nvcc helloworld.cu -o helloworld

이제 컴파일된 프로그램을 실행합니다.

./helloworld

출력에는 다음이 표시되어야 합니다.

CPU의 안녕하세요 세계! GPU의 Hello World!

고급 CUDA 프로그래밍: 행렬 곱셈

CUDA의 기능을 더 자세히 보여주기 위해 CUDA를 사용하여 행렬 곱셈을 수행하는 프로그램을 개발해 보겠습니다. 이는 CUDA가 고도의 병렬 작업을 효율적으로 처리할 수 있는 방법을 보여줍니다.

새 파일을 생성하여 시작하십시오.

nano matrixmul.cu

다음 코드를 matrixmul.cu 파일. 이 프로그램은 GPU에서 행렬 곱셈을 수행합니다.

__global__ void gpu_matrix_mult(int *a,int *b, int *c, int m, int n, int k)
{ 
    // Calculate the row & column index of the element
    int row = blockIdx.y * blockDim.y + threadIdx.y; 
    int col = blockIdx.x * blockDim.x + threadIdx.x;

    int sum = 0;
    if( row < m && col < k ) 
    {
        for(int j = 0; j < n; j++) 
        {
            sum += a[row * n + j] * b[j * k + col];
        }
        // Each thread computes one element of the block sub-matrix
        c[row * k + col] = sum;
    }
} 

다음을 사용하여 프로그램을 컴파일합니다. nvcc 명령:

nvcc matrixmul.cu -o matrixmul

그런 다음 컴파일된 프로그램을 실행합니다.

./matrixmul

출력에는 행렬 곱셈 연산의 결과가 표시됩니다. 이 예는 CUDA가 행렬 곱셈과 같은 병렬 작업을 효율적으로 처리하여 기존 CPU 실행에 비해 상당한 성능 향상을 제공하는 방법을 보여줍니다.

결론

이 종합 가이드에서 우리는 Debian 12 Bookworm, Debian 11 Bullseye 및 Debian 10 Buster에 CUDA 툴킷을 꼼꼼하게 설치했습니다. 설명된 단계를 따르면 사용자는 NVIDIA GPU의 컴퓨팅 성능을 활용하여 고성능 컴퓨팅 작업에 대한 가능성의 영역을 열 수 있습니다. 안정성과 최적의 성능을 보장하려면 설치가 특정 Debian 버전과 일치하는지 확인하는 것이 중요합니다. 기술이 발전함에 따라 최신 릴리스와 공식 문서를 최신 상태로 유지하는 것이 중요합니다. 공식 NVIDIA 리소스와 포럼은 CUDA의 기능을 더 깊이 탐구하거나 특정 문제를 해결하려는 사람들에게 매우 중요합니다.

Joshua James

코멘트를 남겨주세요