主要内容

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

gpu에서MATLAB함수실행하기

gpuArray econ수를갖는MATLAB함수

많은matlab®함수와여러툴박스가gpuArray수를제공받으면자동으로gpu에서실행됩니다。

A = gpuArray([1 0 1;1 -2 0;0 1 -1]);e = eig(A);

하나이상의gpuArray를데이터입력인수로사용하여이러한함수를호출할때마다함수가GPU에서실행됩니다。大小처럼MATLAB데이터를반환하는것이더적합한경우를제외하고,이함수는결과로gpuArray를생성합니다。동일한함수호출에서gpuArray와MATLAB배열을둘다사용하여입력값을혼합할수있습니다。함수가gpu또는cpu에서실행되는경우에대한자세한내용은gpuArray입력값의특수조건항목을참조하십시오。Gpu지원함수에는이산푸리에변환(fft)、행렬곱셈(mtimes)、행렬왼쪽나눗셈(mldivide을비롯하여수백개가있습니다。자세한내용은图形处理器지원함수확显卡하기항목을참조하십시오。

图形处理器지원함수확显卡하기

gpuArray를지원하는MATLAB함수인경우이함수의도움말페이지에서GPU사용과관련한추가정보를참조할수있습니다。함수도움말페이지마지막에나오는확장 기능섹션에서Gpu배열을참조하십시오。

Gpu배열을지원하는모든matlab함수를필터링한목록을보려면함수목록(gpu배열)을참조하십시오。

몇몇matlab툴박스에는gpu를지원하는내장함수가포함되어있습니다。이러한툴박스에서gpuArray를지원하는모든함수목록을보려면다음표에나와있는링크를사용하십시오。목록에서경고표시가있는함수에는GPU에서함수실행시유의해야할사용법관련참고및제한사항이있습니다。함수도움말페이지의확장기능섹션에서사용법관련참고및제한사항을확인할수있습니다。각gpu지원함수의업데이트에대한자세한내용은릴리스정보를참조하십시오。

툴박스이름 gpuArray를지원하는함수목록 Gpu관련문서
MATLAB gpuArray를지원하는함수
统计和机器学习工具箱™ gpuArray를지원하는함수(统计和机器学习工具箱)
图像处理工具箱™ gpuArray를지원하는함수(图像处理工具箱) Gpu연산(图像处理工具箱)
深度学习工具箱™

gpuArray를지원하는함수(深度学习工具箱)

*(Gpu를사용한딥러닝항목참조)

计算机视觉工具箱™ gpuArray를지원하는함수(计算机视觉工具箱) GPU代码生成和加速(计算机视觉工具箱)
通信工具箱™ gpuArray를지원하는함수(通信工具箱) 代码生成和加速支持万博1manbetx(通信工具箱)
信号处理工具箱™ gpuArray를지원하는함수(信号处理工具箱) 코드생성및gpu지원(信号处理工具箱)
音频工具箱™ gpuArray를지원하는함수(音频工具箱) 代码生成和GPU支持万博1manbetx(音频工具箱)
小波工具箱™ gpuArray를지원하는함수(小波工具箱) 代码生成和GPU支持万博1manbetx(小波工具箱)
曲线拟合工具箱™ gpuArray를지원하는함수(曲线拟合工具箱)

모든MathWorks®제품의gpu지원함수는Gpu지원함수링크에서찾아볼수있습니다。또는제품별로필터링할수도있습니다。도움말시줄에서함수를클릭합니다。함수목록의왼쪽창에서찾아볼제품,예를들어,matlab을선택합니다。왼쪽창하단에서Gpu배열을선택합니다。Gpu지원함수가없는제품을선택할경우Gpu배열필터를사용할수없습니다。

Gpu를사용한딥러닝

적합한GPU및并行计算工具箱™를사용하는경우深度学习工具箱의함수대부분에서GPU가자동으로지원됩니다。데이터를gpuArray로변환할필。다음은사용가능한경우gpu에서기본적으로실행되는함수에관한일부목록입니다。

深度学习工具箱에서자동GPU지원에대한자세한내용은Gpu에서병렬로빅데이터를사용한딥러닝(深度学习工具箱)항목을참조하십시오。

dlnetwork(深度学习工具箱)객체또는모델함수로정의된신경망을사용하는고급신경망및워크플로의경우데이터를gpuArray로변환하십시오。Gpu에서사용자지정학습루프또는예측을실행하려면gpuArray를지원하는함수(深度学习工具箱)를사용하십시오。

图形处理器를확显卡하거나선택하기

Gpu가있는경우matlab은Gpu계산에자동으로Gpu를사용합니다。gpuDevice함수를사용하여gpu를확할수있습니다。여러개의gpu가있는경우에는gpuDevice를사용하여그중하나를선택하거나,여러개의GPU를병렬풀에서사용할수있습니다。예제는Gpu장치를식별하고선택하기병렬풀에서다중gpu사용하기항목을참조하십시오。图形处理器지원여부를확显卡하려면릴리스별gpu지원항목을참조하십시오。

딥러닝을위해matlab은다중gpu에대한자동병렬연산을지원합니다。복수의gpu에서matlab을사용한딥러닝(深度学习工具箱)항목을참조하십시오。

Gpu에서matlab함수사용하기

GPU이예제에서는지원MATLAB함수를사용하여gpuArray로연산을수행하는방법을보여줍니다。gpuDevice함수를사용하여gpu의속성을확할수있습니다。

gpuDevice
ans = CUDADevice的属性:名称:'GeForce GTX 1080'索引:1 ComputeCapability: '6.1' SupportsDouble: 1 Driv万博1manbetxerVersion: 10.1000 ToolkitVersion: 10.1000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475e+09 AvailableMemory: 6.9012e+09 MultiprocessorCount: 32 TotalMemory: 8.5899e+09 ClockRateKHz: 1733500 ComputeMode: 'Default' GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 11 device万博1manbetxssupported: 1 DeviceSelected: 1

无-15에서15까지의값을반복하는행벡터를만듭니다。이벡터를GPU로전송하고GPU array를생성하려면gpuArray함수를사용하십시오。

X = [-15:15 0 -15:15 0 -15:15];gpu = gpuArray(X);谁gpuX
名称大小字节类属性gpuX 1x95 4 gpuArray

GPU array로연산을수행하려면GPU지원MATLAB함수를사용하십시오。Matlab은자동으로gpu에서계산을실행합니다。자세한내용은Gpu에서matlab함수실행하기항목을참조하십시오。예를들어,诊断接头expm国防部腹肌fliplr의조합을사용해보겠습니다。

gpuE = expm(diag(gpu,-1)) * expm(diag(gpu,1));gpuM = mod(round(abs(gpuE)),2);gpu = gpu + fliplr(gpu);

결과를플로팅합니다。

显示亮度图像(gpuF);colormap(翻转(灰色));

Gpu에서다시데이터를전송해야하는경우收集를사용합니다。CPU로다시수집하는작업은비용이많이들수있으며,gpuArray를지원하지않는함수에서결과를사용할필요가없는한일반적으로필요하지않습니다。

result = gather(gpif);谁结果
名称大小字节类属性result 96x96 73728 double

GPU와CPU사이에는수치정밀도와알고리즘의차이가있으므로일반적으로CPU에서코드를실행할경우결과가달라질수있습니다。CPU와GPU에서계산되는각각의답은참값인해석적결과에대한부동소수점근삿값으로서둘은똑같이타당한답이지만,계산과정에서의반올림이서로다릅니다。이예제에서결과는정수이며는반올림오차를제거합니다。

Gpu를사용하여이미지를선명하게만들기

이예제에서는gpuArray와GPU지원함수를사용하여이미지를선명하게만드는방법을보여줍니다。

이미지를읽어들이고gpuArray함수를사용하여이미지를gpu로보냅니다。

image = gpuArray(imread)“peppers.png”));

이미지를double형으로변환하고컨벌루션을적용하여기울기이미지를얻습니다。그런다음기울기이미지를사용하여,자로이미지를선명하게만듭니다。

图像= im2double(图像);Gradient = convn(image,ones(3)./9,“相同”- convn(image,ones(5)./25,“相同”);金额= 5;锐化=图像+数量。*梯度;

원래이미지와선명해진이미지의크기를조정하고플로팅하여비교합니다。

imshow (imresize ([dimage,磨),0.7));标题(“原始图像(左)vs锐化图像(右)”);

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

GPU이예제에서는지원MATLAB함수를사용하여잘알려진수학구조인曼德布洛特집합을계산하는방법을보여줍니다。gpuDevice함수를사용하여gpu를확합니다。

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

maxIterations = 500;gridSize = 1000;Xlim = [-0.748766713922161, -0.748766707771757];Ylim = [0.123640844894862, 0.123640851045266];

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

x = gpu .linspace(xlim(1),xlim(2),gridSize);y = puarray .linspace(ylim(1),ylim(2),gridSize);谁xy
名称大小字节类属性x 1x1000 4 gpuArray y 1x1000 4 gpuArray

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

[xGrid,yGrid] = meshgrid(x,y);z0 = complex(xGrid,yGrid);Count = ones(size(z0),“gpuArray”);

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

Z = z0;n = 0:maxIterations z = z.*z + z0;内= abs(z) <= 2;Count = Count + inside;结束Count = log(Count);

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

Imagesc (x,y,count) colormap([jet();flipud(jet());0 0 0]);轴

Gpu에서희소형식배열사용하기

다음함수는희소형식gpuArray를지원합니다。

这句话的意思是:这句话的意思是:这句话的意思是:这句话的意思是:这句话的意思是:这句话的意思是
结束eps exp expint expm1查找固定地板满gmres gpuArray。speye imag isdiag isequal isequaln isfinite isfloat isinteger islogical isnumeric isreal issparse istril istriu isUnderlyingType length log log2 log10 log1p lsqr minus mtimes mustBeUnderlyingType ndims nextpow2 nnz
非零norm numel nzmax pcg + qmr rad2deg real reallog realsqrt round sec秒secd sech sign sin sinind sinh sinpi size稀疏spfun spones sprandsym sqrt sum tan tan and tanh tfqmr times (.*) trace转座数tril triu uminus underlyingType uplus

gpuArray입력값으로稀疏的를호출하거나희소형식입력값으로gpuArray를호출하여희소형식gpuArray를만들수있습니다。예를들면다음과같습니다。

X = [0 1 0 0 0;0 0 0 0 1]
0 1 0 0 0 0 0 0 0 0 0 1
S =稀疏(x)
(1,2) 1 (2,5) 1
g = gpuArray(s);% g是一个稀疏的gpuArrayGt =转置(g);% gt是一个稀疏的gpuArrayF = full(gt)% f是一个完整的gpuArray
0 0 1 0 0 0 0 0 0 0 0 1

희소형식gpuArray는덱싱을지원하지않습니다。대신找到를사용하여배열에서0이아닌배열요소,그리고이러한요소의행인덱스와열인덱스를찾습니다。그런다음원하는값을대체하고희소형식gpuArray를새로생성합니다。

Gpu에서복소수사용하기

GPU에서실행되는함수의출력값이복소수일수있는경우,이함수의입력인수를명시적으로복소수로지정해야합니다。이는arrayfun이실행하는코드에서호출되는함수나gpuArray에적용됩니다。

예를들어,음의G = gpuArray(complex(p))를사용하면sqrt (G)를성공적으로실행할수있습니다。

또는arrayfun에전달되는함수내에서x가실수로구성된벡터이고일부가실수로구성된벡터이고일부sqrt (x)는오류를생성하므로대신√复杂(x))를호출해야합니다。

결과가복소수데이터로구성된gpuArray이고모든허수부가0인경우이허수부는유지되고데이터는복소수를유지합니다。따라서排序伊斯雷尔등을사용할때향을미칠수있습니다。

다음표에는복소수데이터를반환할수있는함수와함께출력값이실수를유지하는입력범위가나열되어있습니다。

함수 실수출력값에대한입력범위
这些“可信赖医疗组织”(x) Abs (x) <= 1
作用(x) X >= 1
acoth (x) Abs (x) >= 1
正式启动(x) Abs (x) >= 1
asec (x) Abs (x) >= 1
asech (x) 0 <= x <= 1
正如(x) Abs (x) <= 1
atanh (x) Abs (x) <= 1
日志(x) X >= 0
log1p (x) X >= -1
log10 (x) X >= 0
log2 (x) X >= 0
功率(x, y) X >= 0
reallog (x) X >= 0
realsqrt (x) X >= 0
sqrt (x) X >= 0

gpuArray입력값의특수조건

Gpu지원함수는데이터가Gpu에있는경우에만Gpu에서실행됩니다。예를들어,다음코드는첫번째입력값인데이터GPU가에있기때문에GPU에서실행됩니다。

> >总和(gpuArray(魔法(10)),2);
그러나다음코드는첫번째입력값인데이터GPU가에있지않기때문에GPU에서실행되지않습니다。
> >总和(魔法(10),gpuArray (2));
입력인수gpuArray에차원,스케일링인자또는반복횟수등의항목이포함되어있는경우함수는이항목을수집하고CPU에서계산합니다。함수는실제데이터GPU阵列경우에만GPU에서실행됩니다。

감사의 글

岩浆는gpu가속을활용하는선형대수루틴라이브러리입니다。并行计算工具箱에서gpuArray에구현된선형대수함수는우수한성능과정확도를확보하기위해岩浆를활용합니다。

참고 항목

|

관련 예제

세부 정보