이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
GPU에서 MATLAB 함수 실행하기
GPU에서 MATLAB® 함수를 실행하여 코드의 속도를 높일 수 있습니다. MATLAB에서의 GPU 연산은 Parallel Computing Toolbox™를 필요로 합니다.
gpuArray
인수를 갖는 MATLAB 함수
MATLAB과 기타 툴박스의 많은 함수는 gpuArray
데이터 인수를 제공받으면 자동으로 GPU에서 실행됩니다. MATLAB에서 gpuArray
는 GPU에 저장되는 배열을 나타냅니다.
A = gpuArray([1 0 1; -1 -2 0; 0 1 -1]); e = eig(A);
하나 이상의 gpuArray
를 데이터 입력 인수로 사용하여 이러한 함수를 호출할 때마다 함수가 GPU에서 실행됩니다. size
처럼 숫자형 데이터를 로컬 작업 공간으로 반환하는 것이 더 적합한 경우를 제외하고, 이 함수는 결과로 gpuArray
를 생성합니다. 동일한 함수 호출에서 호스트 메모리에 저장된 gpuArray
데이터와 배열을 둘 다 사용하여 입력값을 혼합할 수 있습니다.gpuArray
지원 함수에는 이산 푸리에 변환(fft
), 행렬 곱셈(mtimes
), 행렬 왼쪽 나눗셈(mldivide
)을 비롯하여 수백 개가 있습니다.
gpuArray
입력값의 조건
GPU 지원 함수는 입력 데이터가 GPU에 있는 경우에만 GPU에서 실행됩니다. 차원 또는 인덱스와 같은 파라미터 인수의 데이터형은 함수가 실행되는 위치에 영향을 주지 않습니다. 예를 들어, 다음 코드에 있는 sum
함수는 첫 번째 입력값인 데이터가 GPU에 있기 때문에 GPU에서 실행됩니다.
A = rand(10); d = 2; sum(gpuArray(A),d);
sum
함수는 첫 번째 입력값인 데이터가 GPU에 있지 않기 때문에 GPU에서 실행되지 않습니다.A = rand(10); d = 2; sum(A,gpuArray(d));
GPU에서 복소수 사용하기
GPU에서 실행되는 함수의 출력값이 복소수일 수 있는 경우, 이 함수의 입력 인수를 명시적으로 복소수로 지정해야 합니다. 자세한 내용은 GPU에서 복소수 사용하기 항목을 참조하십시오.
GPU에서 희소 형식 배열 사용하기
sparse
함수는 희소 형식 gpuArray
객체를 만드는 데 사용할 수 있습니다. 많은 MATLAB 함수가 희소 형식 gpuArray
객체를 지원합니다. 자세한 내용은 GPU에서 희소 형식 배열 사용하기 항목을 참조하십시오.
gpuArray
지원 함수 확인하기
몇몇 MATLAB 툴박스에는 gpuArray
를 지원하는 함수가 포함되어 있습니다. 이러한 툴박스에서 gpuArray
객체를 지원하는 모든 함수 목록을 보려면 다음 표에 나와 있는 링크를 사용하십시오. 목록에서 정보 표시가 있는 함수에는 GPU에서 함수 실행 시 유의해야 할 사용법 관련 참고 및 제한 사항이 있습니다. 함수 도움말 페이지의 확장 기능 섹션에서 사용법 관련 참고 및 제한 사항을 확인할 수 있습니다. gpuArray
를 지원하는 각 함수의 업데이트에 대한 자세한 내용은 릴리스 정보를 참조하십시오.
툴박스 이름 | gpuArray 를 지원하는 함수 목록 | GPU 관련 문서 |
---|---|---|
MATLAB | gpuArray 를 지원하는 함수 | |
Statistics and Machine Learning Toolbox™ | gpuArray 를 지원하는 함수 (Statistics and Machine Learning Toolbox) | Analyze and Model Data on GPU (Statistics and Machine Learning Toolbox) |
Image Processing Toolbox™ | gpuArray 를 지원하는 함수 (Image Processing Toolbox) | GPU 연산 (Image Processing Toolbox) |
Deep Learning Toolbox™ |
*(GPU를 사용한 딥러닝 항목 참조) | Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox) 복수의 GPU에서 MATLAB을 사용한 딥러닝 (Deep Learning Toolbox) |
Computer Vision Toolbox™ | gpuArray 를 지원하는 함수 (Computer Vision Toolbox) | GPU 코드 생성 및 가속 (Computer Vision Toolbox) |
Communications Toolbox™ | gpuArray 를 지원하는 함수 (Communications Toolbox) | 코드 생성 및 가속 지원 (Communications Toolbox) |
5G Toolbox™ | gpuArray 를 지원하는 함수 (5G Toolbox) | |
Signal Processing Toolbox™ | gpuArray 를 지원하는 함수 (Signal Processing Toolbox) | 코드 생성 및 GPU 지원 (Signal Processing Toolbox) |
Audio Toolbox™ | gpuArray 를 지원하는 함수 (Audio Toolbox) | Code Generation and GPU Support (Audio Toolbox) |
Wavelet Toolbox™ | gpuArray 를 지원하는 함수 (Wavelet Toolbox) | 코드 생성 및 GPU 지원 (Wavelet Toolbox) |
Curve Fitting Toolbox™ | gpuArray 를 지원하는 함수 (Curve Fitting Toolbox) |
모든 MathWorks® 제품에서 gpuArray
를 지원하는 함수의 목록은 gpuArray
지원 함수 페이지를 참조하십시오. 또는 제품별로 필터링할 수도 있습니다. 도움말 표시줄에서 함수를 클릭합니다. 함수 목록의 왼쪽 창에서 찾아볼 제품, 예를 들어, MATLAB을 선택합니다. 왼쪽 창 하단에서 GPU 배열을 선택합니다. gpuArray
를 지원하는 함수가 없는 제품을 선택할 경우 GPU 배열 필터가 제공되지 않습니다.
GPU를 사용한 딥러닝
지원되는 GPU 및 Parallel Computing Toolbox를 사용하고 있다면 Deep Learning Toolbox의 함수 대부분에서 GPU가 자동으로 지원됩니다. 데이터를 gpuArray
로 변환할 필요가 없습니다. 다음은 사용 가능한 경우 GPU에서 기본적으로 실행되는 함수에 관한 일부 목록입니다.
trainnet
(Deep Learning Toolbox)minibatchpredict
(Deep Learning Toolbox)
Deep Learning Toolbox에서의 GPU 자동 지원에 대한 자세한 내용은 Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox) 항목을 참조하십시오.
사용자 지정 훈련 루프의 경우, 데이터를 gpuArray
로 변환하고 gpuArray
를 지원하는 함수 (Deep Learning Toolbox)를 사용합니다.
GPU를 확인하거나 선택하기
지원되는 GPU가 있는 경우 MATLAB은 GPU 연산에 자동으로 GPU를 사용합니다. 여러 개의 GPU가 있는 경우에는 gpuDeviceTable
을 사용하여 시스템에서 감지된 모든 GPU의 속성을 검토할 수 있습니다. gpuDevice
를 사용하여 그중 하나를 선택하거나, 여러 개의 GPU를 병렬 풀에서 사용할 수 있습니다. 자세한 내용은 GPU 장치를 식별하고 선택하기 항목과 Run MATLAB Functions on Multiple GPUs 항목을 참조하십시오. GPU 지원 여부를 확인하려면 GPU 연산 요구 사항 항목을 참조하십시오.
gpuDeviceTable
Index Name ComputeCapability DeviceAvailable DeviceSelected _____ __________________ _________________ _______________ ______________ 1 "NVIDIA RTX A5000" "8.6" true true 2 "Quadro P620" "6.1" true false
또는 MATLAB® 데스크탑에서, 사용 가능한 GPU 장치 수를 확인하고, 몇 가지 속성을 검사하고, 사용할 장치를 선택할 수 있습니다. 홈 탭의 환경 영역에서 병렬연산 > GPU 환경 선택을 선택합니다.
GPU에서 MATLAB 함수 사용하기
이 예제에서는 gpuArray
를 지원하는 MATLAB 함수를 사용하여 gpuArray
객체로 연산을 수행하는 방법을 보여줍니다. gpuDevice
함수를 사용하여 GPU의 속성을 확인할 수 있습니다.
gpuDevice
ans = CUDADevice with properties: Name: 'Quadro P620' Index: 2 ComputeCapability: '6.1' SupportsDouble: 1 GraphicsDriverVersion: '511.79' DriverModel: 'WDDM' ToolkitVersion: 11.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 (49.15 KB) MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475e+09 65535 65535] SIMDWidth: 32 TotalMemory: 2147287040 (2.15 GB) AvailableMemory: 1615209678 (1.62 GB) CachePolicy: 'balanced' MultiprocessorCount: 4 ClockRateKHz: 1354000 ComputeMode: 'Default' GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 1 DeviceSupported: 1 DeviceAvailable: 1 DeviceSelected: 1
-15에서 15까지의 값을 반복하는 행 벡터를 만듭니다. 이 벡터를 GPU로 전송하고 gpuArray
객체를 생성하기 위해 gpuArray
함수를 사용합니다.
X = [-15:15 0 -15:15 0 -15:15];
gpuX = gpuArray(X);
whos gpuX
Name Size Bytes Class Attributes gpuX 1x95 760 gpuArray
gpuArray
객체로 연산을 수행하려면 gpuArray
를 지원하는 MATLAB 함수를 사용하십시오. MATLAB은 자동으로 GPU에서 계산을 실행합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 항목을 참조하십시오. 예를 들면 diag
, expm
, mod
, round
, abs
, fliplr
을 함께 사용합니다.
gpuE = expm(diag(gpuX,-1)) * expm(diag(gpuX,1)); gpuM = mod(round(abs(gpuE)),2); gpuF = gpuM + fliplr(gpuM);
결과를 플로팅합니다.
imagesc(gpuF); colormap(flip(gray));
GPU에서 다시 데이터를 전송해야 하는 경우 gather
를 사용합니다. 데이터를 다시 CPU로 전송하는 작업은 비용이 많이 들 수 있습니다. 작업 결과를 gpuArray
를 지원하지 않는 함수에서 사용해야 하는 경우가 아니라면 일반적으로 CPU로 전송할 필요가 없습니다.
result = gather(gpuF);
whos result
Name Size Bytes Class Attributes result 96x96 73728 double
GPU와 CPU 사이에는 수치 정밀도와 알고리즘의 차이가 있으므로 일반적으로 CPU에서 코드를 실행한 결과와 GPU에서 코드를 실행한 결과가 서로 다를 수 있습니다. CPU와 GPU에서 계산되는 각각의 답은 참값인 해석적 결과에 대한 부동소수점 근삿값으로서 둘은 똑같이 타당한 답이지만, 계산 과정에서의 반올림 동작이 서로 다릅니다. 이 예제에서 결과는 정수이며 round
는 반올림 오차를 제거합니다.
GPU 사용 예제
GPU에서의 MATLAB 함수 실행 예제
아래 나열된 예제에서는 gpuArray
객체를 지원되는 MATLAB 함수로 전달하여 이러한 함수가 GPU에서 실행되도록 합니다.
GPU 사용 기타 예제
아래 나열된 예제에서는 기타 자동 GPU 지원을 활용합니다.
툴박스 이름 | 예제 |
---|---|
Deep Learning Toolbox |
|
Communications Toolbox |
|
감사의 글
MAGMA는 GPU 가속을 활용하는 선형 대수 루틴 라이브러리입니다. Parallel Computing Toolbox에서 gpuArray
객체에 구현된 선형 대수 함수는 우수한 성능과 정확도를 확보하기 위해 MAGMA를 활용합니다.
참고 항목
gpuArray
| gpuDevice
| gpuDeviceTable
| canUseGPU
관련 예제
- GPU 장치를 식별하고 선택하기
- GPU에서 배열 설정하기
- GPU 성능 측정 및 개선하기
- GPU를 사용하여 이미지를 선명하게 만들기
- GPU 지원 함수를 사용하여 Mandelbrot 집합 계산하기