이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。
GPU에서MATLAB함수실행하기
gpuArray
수를갖는MATLAB함수
많은MATLAB®함수와여러툴박스가gpuArray
수를제공받으면자동으로gpu에서실행됩니다。
A = gpuArray([1 0 1;1 2 0;0 1 1]);e = eig(一个);
하나이상의gpuArray
를데이터입력인수로사용하여이러한함수를호출할때마다함수가GPU에서실행됩니다。大小
처럼matlab데이터를반환하는것이더적합한경우를제외하고,이함수는결과로gpuArray
를생성합니다。동일한함수호출에서gpuArray
와matlab배열을둘다사용하여입력값을혼합할수있습니다。함수가gpu또는cpu에서실행되는경우에대한자세한내용은gpuArray입력값의특수조건항목을참조하십시오。gpuArray
지원함수에는이산푸리에변환(fft
)、행렬곱셈(mtimes
)、행렬왼쪽나눗셈(mldivide
을비롯하여수백개가있습니다。자세한내용은gpuArray지원함수확臼臼하기항목을참조하십시오。
gpuArray
지원함수확,하기
gpuArray
객체를지원하는MATLAB함수인경우이함수의도움말페이지에서GPU사용과관련한추가정보를참조할수있습니다。함수도움말페이지마지막에나오는확장 기능섹션에서GPU배열을참조하십시오。
팁
gpuArray
객체를지원하는모든matlab함수를필터링한목록을보려면함수목록(gpu배열)을참조하십시오。
몇몇matlab툴박스에는gpuArray
를지원하는내장함수가포함되어있습니다。이러한툴박스에서gpuArray
객체를지원하는모든함수목록을보려면다음에나와있는링크를사용하십시오。목록에서정보표시가있는함수에는GPU에서함수실행시유의해야할사용법관련참고및제한사항이있습니다。함수도움말페이지의확장기능섹션에서사용법관련참고및제한사항을확인할수있습니다。gpuArray
를지원하는각함수의업데이트에대한자세한내용은릴리스정보를참조하십시오。
툴박스이름 | gpuArray 를지원하는함수목록 |
Gpu관련문서 |
---|---|---|
MATLAB | gpuArray 를지원하는함수 |
|
统计和机器学习工具箱™ | gpuArray 를지원하는함수(统计和机器学习工具箱) |
在GPU上分析和建模数据(统计和机器学习工具箱) |
图像处理工具箱™ | gpuArray 를지원하는함수(图像处理工具箱) |
GPU연산(图像处理工具箱) |
深度学习工具箱™ |
*(Gpu를사용한딥러닝항목참조) |
在并行、gpu和云上扩展深度学习(深度学习工具箱) 복수의gpu에서matlab을사용한딥러닝(深度学习工具箱) |
计算机视觉工具箱™ | gpuArray 를지원하는함수(计算机视觉工具箱) |
Gpu코드생성및가속(计算机视觉工具箱) |
通信工具箱™ | gpuArray 를지원하는함수(通信工具箱) |
代码生成和加速支持(通信工具箱) |
信号处理工具箱™ | gpuArray 를지원하는함수(信号处理工具箱) |
코드생성및gpu지원(信号处理工具箱) |
音频工具箱™ | gpuArray 를지원하는함수(音频工具箱) |
代码生成和GPU支持(音频工具箱) |
小波工具箱™ | gpuArray 를지원하는함수(小波工具箱) |
코드생성및gpu지원(小波工具箱) |
曲线拟合工具箱™ | gpuArray 를지원하는함수(曲线拟合工具箱) |
모든MathWorks®제품에서gpuArray
를지원하는함수를gpuArray
지원 함수링크에서찾아볼수있습니다。또는제품별로필터링할수도있습니다。도움말시줄에서함수를클릭합니다。함수목록의왼쪽창에서찾아볼제품,예를들어,matlab을선택합니다。왼쪽창하단에서GPU배열을선택합니다。gpuArray
를지원하는함수가없는제품을선택할경우GPU배열필터가제공되지않습니다。
Gpu를사용한딥러닝
적합한GPU및并行计算工具箱™를사용하는경우深度学习工具箱의함수대부분에서GPU가자동으로지원됩니다。데이터를gpuArray
로변환할필로변환할필。다음은사용가능한경우gpu에서기본적으로실행되는함수에관한일부목록입니다。
trainNetwork
(深度学习工具箱)预测
(深度学习工具箱)predictAndUpdateState
(深度学习工具箱)分类
(深度学习工具箱)classifyAndUpdateState
(深度学习工具箱)激活
(深度学习工具箱)
深度学习工具箱에서의GPU자동지원에대한자세한내용은在并行、gpu和云上扩展深度学习(深度学习工具箱)항목을참조하십시오。
dlnetwork
(深度学习工具箱)객체또는모델함수로정의된신경망을사용하는고급신경망및워크플로의경우데이터를gpuArray
로변환하십시오。Gpu에서사용자지정학습루프또는예측을실행하려면gpuArray
를지원하는함수(深度学习工具箱)를사용하십시오。
图形处理器를확显卡하거나선택하기
Gpu가있는경우matlab은Gpu계산에자동으로Gpu를사용합니다。gpuDevice
함수를사용하여gpu를확하고선택할수있습니다。여러개의gpu가있는경우에는gpuDeviceTable
을사용하여시스템에서감지된모든gpu의속성을검토할수있습니다。gpuDevice
를사용하여그중하나를선택하거나,여러개의GPU를병렬풀에서사용할수있습니다。예제는Gpu장치를식별하고선택하기및병렬풀에서다중gpu사용하기항목을참조하십시오。图形处理器지원여부를확显卡하려면릴리스별gpu지원항목을참조하십시오。
딥러닝을위해matlab은다중gpu에대한자동병렬연산을지원합니다。복수의gpu에서matlab을사용한딥러닝(深度学习工具箱)항목을참조하십시오。
Gpu에서matlab함수사용하기
이예제에서는gpuArray
를지원하는matlab함수를사용하여gpuArray
객체로연산을수행하는방법을보여줍니다。gpuDevice
함수를사용하여gpu의속성을확할수있습니다。
gpuDevice
ans = CUDADevice属性:名称:'TITAN RTX'索引:1 ComputeCapability: '7.5' SupportsDouble: 1 DriverVersion: 11.2000 ToolkitVersion: 11 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475e+09 65535 65535] SIMDWidth: 32 TotalMemory: 2.5770e+10 AvailableMemory: 2.4177e+10 MultiprocessorCount: 72 ClockRateKHz: 1770000 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);谁gpuX
名称大小字节类属性gpuX 1x95 760 gpuArray
gpuArray
객체로연산을수행하려면gpuArray
를지원하는matlab함수를사용하십시오。Matlab은자동으로gpu에서계산을실행합니다。자세한내용은Gpu에서matlab함수실행하기항목을참조하십시오。예를 들면诊断接头
,expm
,国防部
,轮
,腹肌
,fliplr
을함께사용합니다。
gpuE = expm(diag(gpu,-1)) * expm(diag(gpu,1));gpuM =国防部(圆(abs (gpuE)), 2);gpu = gpu + fliplr(gpu);
결과를플로팅합니다。
显示亮度图像(gpuF);colormap(翻转(灰色));
Gpu에서다시데이터를전송해야하는경우收集
를사용합니다。데이터를다시cpu로전송하는작업은비용이많이들수있습니다。작업결과를gpuArray
를지원하지않는함수에서사용해야하는경우가아니라면일반적으로로CPU전송할필요가없습니다。
结果=收集(gpuF);谁结果
名称大小字节类属性result 96x96 73728 double
GPU와CPU사이에는수치정밀도와알고리즘의차이가있으므로일반적으로CPU에서코드를실행한결과와GPU에서코드를실행한결과가서로다를수있습니다。CPU와GPU에서계산되는각각의답은참값인해석적결과에대한부동소수점근삿값으로서둘은똑같이타당한답이지만,계산과정에서의반올림동작이서로다릅니다。이예제에서결과는정수이며轮
는반올림오차를제거합니다。
Gpu를사용하여이미지를선명하게만들기
이예제에서는gpuArray와GPU지원함수를사용하여이미지를선명하게만드는방법을보여줍니다。
이미지를읽어들이고gpuArray
함수를사용하여이미지를gpu로보냅니다。
形象= gpuArray (imread (“peppers.png”));
이미지를double형으로변환하고컨벌루션을적용하여기울기이미지를얻습니다。그런다음기울기이미지를사용하여,자量
로이미지를선명하게만듭니다。
dimage = im2double(图片);梯度= convn (dimage,(3)。/ 9,“相同”) - convn (dimage,(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에서직접배열을만들수있습니다。gpuArray
는linspace
같은많은함수의GPU버전을제공하여데이터배열을만들때사용할수있도록합니다。자세한내용은Gpu배열직접만들기항목을참조하십시오。
xlim x = gpuArray.linspace (xlim (1), (2), gridSize);ylim y = gpuArray.linspace (ylim (1), (2), gridSize);谁xy
名称大小字节类属性x 1x1000 8000 gpuArray y 1x1000 8000 gpuArray
많은MATLAB함수가gpuArray를지원합니다。GPU지원함수에gpuArray인수를제공하면함수가자동으로GPU에서실행됩니다。자세한내용은Gpu에서matlab함수실행하기항목을참조하십시오。알고리즘에대한복소수그리드를만들고결과에대한배열数
를만듭니다。이배열을gpu에서직접만들려면的
함수를사용하고“gpuArray”
를지정하십시오。
[xGrid, yGrid] = meshgrid (x, y);z0 =复杂(xGrid yGrid);数= 1(大小(z0),“gpuArray”);
다음코드는GPU지원함수를사용하여Mandelbrot알고리즘을구현합니다。코드가GPU array를사용하기때문에계산은GPU에서수행됩니다。
z = z0;为n = 0:maxIterations z = z.*z + z0;内= abs(z) <= 2;Count = Count + inside;结束数=日志(数);
계산이완료되면결과를플로팅합니다。
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(年代);% g是一个稀疏的gpuArraygt = ' (g);% gt是一个稀疏的gpuArrayf =全(gt)% f是一个完整的gpuArray
0 0 1 0 0 0 0 0 0 0 0 1
희소형식의gpuArray
객체는,덱싱을지원하지않습니다。대신找到
를사용하여배열에서0이아닌배열요소,그리고이러한요소의행인덱스와열인덱스를찾습니다。그런다음원하는값을대체하고희소형식gpuArray
를새로생성합니다。
Gpu에서복소수사용하기
GPU에서실행되는함수의출력값이복소수일수있는경우,이함수의입력인수를명시적으로복소수로지정해야합니다。이는arrayfun
이실행하는코드에서호출되는함수나gpuArray
에적용됩니다。
예를들어,음의gpuArray
를만들경우G = gpuArray(复杂(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);
> >总和(魔法(10),gpuArray (2));
gpuArray
객체에차원,스케일링인자또는반복횟수등의항목이포함되어있는경우함수는이항목을수집하고CPU에서계산합니다。함수는실제데이터,수가gpuArray
객체경우에만gpu에서실행됩니다。
감사의 글
岩浆는gpu가속을활용하는선형대수루틴라이브러리입니다。并行计算工具箱에서gpuArray
객체에구현된선형대수함수는우수한성능과정확도를확보하기위해岩浆를활용합니다。