Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

GPU 지원 함수를 사용하여 Mandelbrot 집합 계산하기

이 예제에서는 GPU 지원 MATLAB® 함수를 사용하여 잘 알려진 수학 구조인 Mandelbrot 집합을 계산하는 방법을 보여줍니다. gpuDevice 함수를 사용하여 GPU를 확인합니다.

파라미터를 정의합니다. Mandelbrot 알고리즘은 실수부와 허수부로 구성된 그리드를 반복합니다. 다음 코드는 반복 횟수, 그리드 크기 및 그리드 제한을 정의합니다.

maxIterations = 500;
gridSize = 1000;
xlim = [-0.748766713922161, -0.748766707771757];
ylim = [ 0.123640844894862,  0.123640851045266]; 

gpuArray 함수를 사용하여 GPU로 데이터를 전송하고 gpuArray를 만들거나, 또는 GPU에서 직접 배열을 만들 수 있습니다. gpuArraylinspace 같은 많은 함수의 GPU 버전을 제공하여 데이터 배열을 만들 때 사용할 수 있도록 합니다. 자세한 내용은 GPU 배열 직접 만들기 항목을 참조하십시오.

x = gpuArray.linspace(xlim(1),xlim(2),gridSize);
y = gpuArray.linspace(ylim(1),ylim(2),gridSize);
whos x y
  Name      Size              Bytes  Class       Attributes

  x         1x1000             8000  gpuArray              
  y         1x1000             8000  gpuArray              

많은 MATLAB 함수가 gpuArray를 지원합니다. GPU 지원 함수에 gpuArray 인수를 제공하면 함수가 자동으로 GPU에서 실행됩니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 항목을 참조하십시오. 알고리즘에 대한 복소수 그리드를 만들고 결과에 대한 배열 count를 만듭니다. 이 배열을 GPU에서 직접 만들려면 ones 함수를 사용하고 'gpuArray'를 지정하십시오.

[xGrid,yGrid] = meshgrid(x,y);
z0 = complex(xGrid,yGrid);
count = ones(size(z0),'gpuArray');

다음 코드는 GPU 지원 함수를 사용하여 Mandelbrot 알고리즘을 구현합니다. 코드가 gpuArray를 사용하기 때문에 계산은 GPU에서 수행됩니다.

z = z0;
for n = 0:maxIterations
    z = z.*z + z0;
    inside = abs(z) <= 2;
    count = count + inside;
end
count = log(count);

계산이 완료되면 결과를 플로팅합니다.

imagesc(x,y,count)
colormap([jet();flipud(jet());0 0 0]);
axis off

참고 항목

| |

관련 예제

세부 정보