GPU에서 배열 설정하기
MATLAB®에서 gpuArray
는 GPU에 저장되는 배열을 나타냅니다. GPU에서 배열을 지원하는 함수의 전체 목록은 GPU에서 MATLAB 함수 실행하기 항목을 참조하십시오.
기존 데이터에서 GPU 배열 만들기
GPU로 배열 보내기
GPU 배열은 기존 배열을 작업 공간에서 GPU로 전송하여 생성할 수 있습니다. MATLAB에서 GPU로 배열을 전송하려면 다음과 같이 gpuArray
함수를 사용하십시오.
N = 6; M = magic(N); G = gpuArray(M);
다음 코드 한 줄로 이 작업을 수행할 수 있습니다.
G = gpuArray(magic(N));
이제 G
는 GPU에 저장된 마방진을 나타내는 MATLAB gpuArray
객체입니다. gpuArray
에 제공되는 입력값은 숫자형(예: single
, double
, int8
등)이거나 논리형이어야 합니다. (GPU에서 복소수 사용하기 항목도 참조하십시오.)
GPU에서 배열 가져오기
gather
함수를 사용하여 GPU에서 MATLAB 작업 공간으로 배열을 가져옵니다. 이를 통해 gpuArray
객체로 표현되는 GPU에 있는 배열을 가져와서 MATLAB 작업 공간에 일반 MATLAB 배열로 전송합니다. isequal
을 사용하여 올바른 값을 가져왔는지 확인할 수 있습니다.
G = gpuArray(ones(100,'uint32')); D = gather(G); OK = isequal(D,ones(100,'uint32'))
CPU로 다시 수집하는 작업은 비용이 많이 들 수 있습니다. 작업 결과를 gpuArray
를 지원하지 않는 함수에서 사용해야 하는 경우가 아니라면 일반적으로 CPU로 다시 수집하는 작업은 필요하지 않습니다.
예제: GPU로 배열 전송하기
MATLAB에서 1000×1000 확률 행렬을 만든 다음 행렬을 GPU로 전송합니다.
X = rand(1000); G = gpuArray(X);
예제: 지정된 정밀도의 배열 전송하기
MATLAB에서 배정밀도 난수 값으로 구성된 행렬을 만든 다음 행렬을 단정밀도로 MATLAB에서 GPU로 전송합니다.
X = rand(1000); G = gpuArray(single(X));
GPU 배열 직접 만들기
많은 함수의 경우 'gpuArray'
유형을 입력 인수로 지정하여 GPU에서 직접 배열을 생성할 수 있습니다. 이러한 함수에는 배열 크기 및 데이터 클래스 정보만 필요하므로 MATLAB 작업 공간에서 요소를 전송할 필요 없이 배열을 생성할 수 있습니다. 자세한 내용은 gpuArray
를 참조하십시오.
예제: GPU에서 단위 행렬 생성하기
GPU에서 int32
유형의 1024×1024 단위 행렬을 만들려면 다음을 입력하십시오.
II = eye(1024,'int32','gpuArray'); size(II)
1024 1024
하나의 숫자형 인수를 사용하여 2차원 행렬을 만들 수 있습니다.
예제: GPU에서 다차원 배열 생성하기
GPU에서 데이터 클래스 double
을 사용하여 1로 구성된 3차원 배열을 만들려면 다음을 입력하십시오.
G = ones(100,100,50,'gpuArray');
size(G)
100 100 50
underlyingType(G)
double
데이터의 디폴트 클래스는 double
이므로 지정할 필요가 없습니다.
예제: GPU에서 벡터 생성하기
GPU에서 요소를 8192개 가진 0으로 구성된 열 벡터를 만들려면 다음을 입력하십시오.
Z = zeros(8192,1,'gpuArray');
size(Z)
8192 1
열 벡터의 경우 두 번째 차원의 크기는 1입니다.
gpuArray
특성 검토하기
다음은 gpuArray
객체의 특성을 검토할 수 있는 여러 가지 함수입니다.
함수 | 설명 |
---|---|
underlyingType | 배열에서 기본 데이터의 클래스 |
existsOnGPU | GPU에 배열이 존재하는지, 배열에 액세스 가능한지 여부를 표시 |
isreal | 배열 데이터가 실수인지 표시 |
isUnderlyingType | 기본 배열 데이터가 지정된 클래스의 데이터인지 확인(예: |
isequal | 둘 이상의 배열이 일치하는지 확인 |
isnumeric | 배열이 숫자 데이터형인지 확인 |
issparse | 배열이 희소 형식 배열인지 확인 |
length | 벡터 또는 가장 큰 배열 차원의 길이 |
mustBeUnderlyingType | 배열이 지정된 기본 유형(예: double형)을 갖는지 유효성 검사 |
ndims | 배열의 차원 수 |
size | 배열 차원의 크기 |
예를 들어, gpuArray
객체 G
의 크기를 검토하려면 다음을 입력하십시오.
G = rand(100,'gpuArray');
s = size(G)
100 100
gpuArray
객체 저장 및 불러오기
gpuArray
변수를 나중에 사용할 수 있도록 MAT 파일로 저장할 수 있습니다. MATLAB 작업 공간에서 gpuArray
를 저장하면 데이터가 MAT 파일에 gpuArray
변수로 저장됩니다. gpuArray
변수가 포함된 MAT 파일을 불러올 경우 데이터를 gpuArray
로 GPU에 불러오게 됩니다.
참고
GPU를 사용할 수 없는 경우 gpuArray
데이터가 포함된 MAT 파일을 메모리 내 배열로 불러올 수 있습니다. GPU 없이 불러온 gpuArray
는 사용이 제한되며 계산에 사용할 수 없습니다. GPU 없이 불러온 gpuArray
를 사용하려면 gather
함수로 배열 내 내용을 가져오십시오.
MATLAB 작업 공간에서 변수를 저장하고 불러오는 방법에 대한 자세한 내용은 작업 공간 변수 저장하기와 불러오기 항목을 참조하십시오.