GPU에서 배열 설정하기
MATLAB®에서 gpuArray
는 GPU 메모리에 저장되는 배열을 나타냅니다. GPU에서 배열을 지원하는 함수에 대한 자세한 내용은 GPU에서 MATLAB 함수 실행하기 항목을 참조하십시오.
기존 데이터에서 GPU 배열 만들기
GPU로 배열 보내기
GPU 배열은 기존 배열을 호스트 메모리에서 GPU로 전송하여 만들 수 있습니다. gpuArray
함수를 사용하여 호스트 메모리에서 GPU로 배열을 전송합니다.
gpuArray
함수는 숫자형 입력 인수만 지원합니다(예: single
, double
, int8
또는 logical
입력 인수). gpuArray
함수는 복소수 값 입력을 지원합니다. 자세한 내용은 GPU에서 복소수 사용하기 항목을 참조하십시오.
N = 6; M = magic(N); G = gpuArray(M);
GPU에서 배열 가져오기
GPU에서 호스트 메모리로 배열을 전송하기 위해 gather
함수를 사용합니다. 이 함수는 호스트 메모리에 저장된 일반 MATLAB 배열을 반환합니다. isequal
을 사용하여 gather
함수가 올바른 값을 반환하는지 확인하십시오.
데이터를 GPU로 전송하고 GPU에서 전송받는 작업은 비용이 많이 들 수 있습니다. gpuArray
를 지원하지 않는 함수에서 결과를 사용해야 하는 경우가 아니라면 일반적으로 gather
를 호출하는 작업은 필요하지 않습니다.
G = gpuArray(ones(100,"uint32")); D = gather(G); OK = isequal(D,ones(100,"uint32"))
GPU로 배열 전송하기
1000×1000 확률 행렬을 만든 다음 이 행렬을 GPU로 전송합니다. GPU에서의 난수 생성에 대한 자세한 내용은 Random Number Streams on a GPU 항목을 참조하십시오.
X = rand(1000); G = gpuArray(X);
GPU의 난수 생성에 대한 자세한 내용은 Random Number Streams on a GPU 항목을 참조하십시오.
지정된 정밀도의 배열 전송하기
배정밀도 난수 값으로 구성된 행렬을 만들고 이 행렬을 단정밀도 형식으로 GPU로 전송합니다.
X = rand(1000); G = gpuArray(single(X));
GPU 배열 직접 만들기
gpuArray
유형을 일부 함수에 대한 입력 인수로 지정하여 GPU에서 배열을 직접 만들 수 있습니다. 이러한 함수에는 배열 크기 및 데이터 클래스 정보만 필요하므로 호스트 메모리에서 요소를 전송할 필요 없이 배열을 생성할 수 있습니다. 자세한 내용은 gpuArray
를 참조하십시오.
또한 "like"
이름-값 인수를 사용해 기존 gpuArray
의 데이터형을 미러링하여 GPU에서 배열을 만들 수 있습니다. 몇 가지 함수를 사용해 like=p
를 입력 인수로 제공하여 프로토타입 배열 p
와 동일한 데이터형을 가진 배열을 생성할 수 있습니다. "like"
옵션을 지원하는 함수로는 zeros
, ones
, createArray
(R2024a 이후), eye
, true
, false
, cast
, rand
, randi
, randn
이 있습니다.
GPU에서 단위 행렬 만들기
GPU에서 int32
유형의 1024×1024 단위 행렬을 만듭니다.
II = eye(1024,"int32","gpuArray"); size(II)
1024 1024
GPU에서 다차원 배열 만들기
GPU에서 데이터형이 double
인 1로 구성된 3차원 배열을 만듭니다.
G = ones(100,100,50,"gpuArray");
size(G)
100 100 50
underlyingType(G)
'double'
GPU에서 벡터 만들기
GPU에서 요소를 8192개 가진 0으로 구성된 열 벡터를 만듭니다.
Z = zeros(8192,1,"gpuArray");
size(Z)
8192 1
프로토타입 배열을 기반으로 GPU에서 배열 만들기
프로토타입 배열과 동일한 데이터형을 가진, pi
로 구성된 100×100 배열을 만듭니다.
G = gpuArray(single(2)); X = createArray(100,Like=G,FillValue=pi); size(X)
100 100
underlyingType(X)
'single'
X(1:5)
3.1416 3.1416 3.1416 3.1416 3.1416
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 파일로 저장할 수 있습니다. gpuArray
를 저장하면, MATLAB은 해당 데이터를 MAT 파일에 gpuArray
변수로 저장합니다. gpuArray
변수가 포함된 MAT 파일을 불러오면 MATLAB은 해당 데이터를 gpuArray
로 GPU에 불러옵니다.
참고
GPU를 사용할 수 없는 경우 gpuArray
데이터가 포함된 MAT 파일을 메모리 내 배열로 불러올 수 있습니다. GPU 없이 불러온 gpuArray
는 사용이 제한되며 계산에 사용할 수 없습니다. GPU 없이 불러온 gpuArray
를 사용하려면 gather
함수로 배열 내 내용을 가져오십시오.
MATLAB 작업 공간에서 변수를 저장하고 불러오는 방법에 대한 자세한 내용은 작업 공간 변수 저장하기와 불러오기 항목을 참조하십시오.