主要内容

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

gpuDevice

GPU장치쿼리또는선택

설명

GPUDevice객체는컴퓨터에있는GPU(그래픽처리장치)를나타냅니다。GPU를사용하면gpuArray변수를지원하는MATLAB®코드를실행하거나CUDAKernel객체를사용하여CUDA커널을실행할수있습니다。

GPUDevice객체를사용하여GPU장치의속성을검사하거나,GPU장치를재설정하거나,GPU가계산실행을마칠때까지대기할수있습니다。GPUDevice객체를가져오려면gpuDevice함수를사용하십시오。gpuDevice함수를사용하여GPU장치를선택하거나선택취소할수도있습니다。여러GPU에액세스할수있는경우에는gpuDevice함수를사용하여코드를실행할특정GPU장치를선택하십시오。

GPU에서함수를실행하기위해GPUDevice객체를사용할필요는없습니다。GPU지원함수의사용방법에대한자세한내용은MATLAB GPU에서함수실행하기항목을참조하십시오。

생성

설명

gpuDevice는현재선택된GPU장치의속성을표시합니다。현재선택된장치가없는경우gpuDevice는디폴트장치를선택하며그내용을지우지않습니다。GPU장치의속성을검사하려는경우이구문을사용하십시오。

예제

D = gpuDevice는현재선택된장치를나타내는GPUDevice객체를반환합니다。현재선택된장치가없는경우gpuDevice는디폴트장치를선택하며,그내용을지우지않고이장치를나타내는GPUDevice객체를반환합니다。

예제

D = gpuDevice (indx는인덱스indx로지정된GPU장치를선택합니다。지정된GPU장치가지원되지않는경우에는오류가발생합니다。이구문은지정된장치가이미현재선택되어있는경우에도이장치를재설정하고장치의메모리를지웁니다(重置함수와동일)。gpuArray또는CUDAKernel변수를나타내는모든작업공간변수는이제유효하지않으므로,작업공간에서지우거나다시정의해야합니다。

예제

gpuDevice ([])는빈인수를가지며(인수가없는것이아님),GPU장치를선택취소하고장치의메모리에서gpuArrayCUDAKernel변수를지웁니다。이구문을실행하면현재장치로선택된GPU장치가없게됩니다。

입력인수

모두확장

GPU장치의인덱스로,1에서gpuDeviceCount사이의정수로지정됩니다。

예:gpuDevice (1);

데이터형:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

속성

모두확장

이속성은읽기전용입니다。

, GPU장치의이름으로문자형배열로지정됩니다。장치에할당되는이름은GPU장치모델에서도출됩니다。

이속성은읽기전용입니다。

GPU장치의인덱스로,1에서gpuDeviceCount사이의정수로지정됩니다。이인덱스를사용하여특정GPU장치를선택합니다。

이속성은읽기전용입니다。

GPU장치의계산성능으로,문자형배열로지정됩니다。선택한GPU장치를MATLAB에서사용하려면ComputeCapability릴리스별GPU지원에나와있는필수사양을충족해야합니다。

이속성은읽기전용입니다。

배정밀도연산의지원여부에대한플래그이며,논리값0)또는1真正的)로지정됩니다。

이속성은읽기전용입니다。

현재사용중인GPU장치드라이버버전으로,스칼라값으로지정됩니다。선택한GPU장치를MATLAB에서사용하려면DriverVersion릴리스별GPU지원에나와있는필수사양을충족해야합니다。

이속성은읽기전용입니다。

현재MATLAB릴리스에서사용하는CUDA툴킷버전으로,스칼라값으로지정됩니다。

이속성은읽기전용입니다。

CUDAKernel실행중에지원되는최대블록당스레드수로,스칼라값으로지정됩니다。

예:1024

이속성은읽기전용입니다。

CUDAKernel실행중에스레드블록이사용할수있는공유메모리의지원되는최대크기로,스칼라값으로지정됩니다。

예:49152

이속성은읽기전용입니다。

스레드블록의각차원의최대크기로,벡터로지정됩니다。스레드블록의각차원은이러한차원값을초과해서는안됩니다。또한스레드블록크기의곱은MaxThreadsPerBlock을초과해서는안됩니다。

이속성은읽기전용입니다。

스레드블록그리드의최대크기로,벡터로지정됩니다。

이속성은읽기전용입니다。

동시에실행되는스레드수로,스칼라값으로지정됩니다。

이속성은읽기전용입니다。

장치의총메모리(단위:바이트)로,스칼라값으로지정됩니다。

이속성은읽기전용입니다。

데이터에사용가능한총메모리(단위:바이트)로,스칼라값으로지정됩니다。이속성은현재선택된장치에만사용할수있습니다。이값은메모리캐싱으로인해NVIDIA®系统管理界面가보고한값과다를수있습니다。

이속성은읽기전용입니다。

장치에있는스트리밍멀티프로세서개수로,스칼라값으로지정됩니다。

이속성은읽기전용입니다。

GPU의피크클록속도(단위:千赫)로,스칼라값으로지정됩니다。

이속성은읽기전용입니다。

장치의계산모드로,다음값중하나로지정됩니다。

“默认” 장치가제한되지않으며,여러응용프로그램에서이장치를동시에사용할수있습니다。MATLAB은다른MATLAB세션또는워커를포함하여다른응용프로그램과장치를공유할수있습니다。
“独家线程”또는“独家过程” 한번에하나의응용프로그램만장치를사용할수있습니다。MATLAB에서장치가선택되어있는동안,다른MATLAB세션또는워커를포함한다른응용프로그램에서이장치를사용할수없습니다。
“禁止” 장치를사용할수없습니다。

이속성은읽기전용입니다。

중첩된전송의지원여부에대한플래그이며,논리값0또는1로지정됩니다。

이속성은읽기전용입니다。

장시간실행되는커널의시간제한여부에대한플래그이며,논리값0또는1로지정됩니다。1인경우,운영체제가CUDA커널실행에허용되는시간의상한값을설정합니다。이시간이지나면CUDA드라이버가커널의실행을자동으로중단하고오류를반환합니다。

이속성은읽기전용입니다。

호스트메모리를CUDA주소공간으로매핑하는기능의지원여부에대한플래그이며,논리값0또는1로지정됩니다。

이속성은읽기전용입니다。

지원되는장치에대한플래그이며,논리값0또는1로지정됩니다。일부장치는지원되지않습니다(예:ComputeCapability가불충분한장치)。

이속성은읽기전용입니다。

사용가능한장치에대한플래그이며,논리값0또는1로지정됩니다。이속성은현재MATLAB세션에서장치를사용할수있는지여부를나타냅니다。Device金宝appSupported속성값이0인지원되지않는장치는언제나사용할수없습니다。ComputeMode속성이“独家线程”“独家过程”또는“禁止”로설정된경우에도장치를사용할수없습니다。

이속성은읽기전용입니다。

현재선택된장치에대한플래그이며,논리값0또는1로지정됩니다。

객체함수

다음함수를사용하여GPU장치를식별,선택,재설정하거나,대기할수있습니다。

gpuDeviceCount 当前GPU设备数量
重置 GPU장치를재설정하고메모리를지웁니다。
等待(GPUDevice) 等待GPU计算完成

다음함수도사용할수있습니다。

parallel.gpu.GPUDevice.isAvailable (indx) 인덱스indx로지정된GPU가지원되고이GPU를선택할수있으면논리값1또는真正的를반환합니다。indx는정수이거나정수로구성된벡터일수있습니다。디폴트인덱스는현재장치입니다。
parallel.gpu.GPUDevice.getDevice (indx) GPUDevice객체를선택하지않고반환합니다。

전체함수목록을보려면다음과같이GPUDevice객체에대해方法함수를사용하십시오。

方法(“parallel.gpu.GPUDevice”)

다음명령을사용하면원하는객체함수에대한도움말을볼수있습니다。

帮助parallel.gpu.GPUDevice.functionname

여기서functionname은함수의이름입니다。예를들어,isAvailable에대한도움말을가져오려면다음을입력하십시오。

帮助parallel.gpu.GPUDevice.isAvailable

예제

모두축소

이예제에서는gpuDevice를사용하여사용할장치를식별및선택하는방법을보여줍니다。

컴퓨터에서사용할수있는GPU장치수를확인하려면gpuDeviceCount함수를사용하십시오。

gpuDeviceCount (“可用”
ans = 2

장치가여러대있는경우첫번째가디폴트값입니다。gpuDeviceTable함수로장치의속성을검토하여그장치를사용할지여부를결정할수있습니다。

gpuDeviceTable
ans =2×5表索引名称ComputeCapability DeviceAvailable DeviceSelected  _____ _____________ _________________ _______________ ______________ 1“泰坦RTX”“7.5”真的真的2”住宅区K620”“5.0”真的假的

첫번째장치가사용할장치인경우계속진행하면됩니다。GPU에서계산을실행하려면gpuArray지원함수를사용하십시오。자세한내용은MATLAB GPU에서함수실행하기항목을참조하십시오。

다른장치를사용하려면사용할장치의인덱스를지정하여gpuDevice함수를호출하십시오。

gpuDevice (2)
ans = CUDADevice with properties: Name: 'Quadro K620' Index: 2 ComputeCapability: '5.0' 金宝appSupportsDouble: 1 DriverVersion: 11 ToolkitVersion: 10.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475e+09 65535 65535] SIMDWidth: 32 TotalMemory: 2.1475e+09 AvailableMemory:1.6776e+09 MultiprocessorCount: 3 ClockRateKHz: 1124000 ComputeMode: 'Default' GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 1 Device金宝appSupported: 1 DeviceAvailable: 1 DeviceSelected: 1

디폴트GPU장치를나타내는객체를만듭니다。

D = gpuDevice;

사용가능한모든GPU장치의计算能力를쿼리합니다。

ii = 1:gpuDeviceCount D = gpuDevice(ii);流(1,'Device %i has ComputeCapability %s \n'...D.Index D.ComputeCapability)结束
设备1的ComputeCapability为7.5,设备2的ComputeCapability为6.1

여러개의GPU에대한액세스권한이있는경우병렬풀을사용하여여러개의GPU에서병렬로계산을수행할수있습니다。

MATLAB에서사용가능한GPU개수를확인하려면gpuDeviceCount함수를사용하십시오。

availableGPUs = gpuDeviceCount (“可用”
availableGPUs = 3

사용가능한GPU와같은수의워커를사용하여병렬풀을시작합니다。MATLAB은최적의성능을위해기본적으로각워커에다른GPU를할당합니다。

parpool (“本地”, availableGPUs);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:3)。

각워커가사용하는GPU를식별하려면spmd블록내에서gpuDevice를호출하십시오。spmd블록은모든워커에서gpuDevice를실행합니다。

spmdgpuDevice结束

parfor또는parfeval과같은병렬언어기능을사용하여계산을병렬풀의워커로분산합니다。계산에gpuArray지원함수를사용하는경우이러한함수는워커의GPU에서실행됩니다。자세한내용은MATLAB GPU에서함수실행하기항목을참조하십시오。예제는在多个gpu上运行MATLAB函数항목을참조하십시오。

계산이완료되면병렬풀을종료합니다。gcp함수를사용하여현재병렬풀을가져올수있습니다。

删除(gcp (“nocreate”));

다른GPU를선택하려면gpuDevice를사용하여GPU장치인덱스를통해각워커에서특정GPU를선택할수있습니다。gpuDeviceCount함수를사용하여시스템에있는각GPU장치의인덱스를가져올수있습니다。

3개시스템에의GPU가있지만2개만계산에사용하려한다고가정하겠습니다。장치의인덱스를가져옵니다。

[availableGPUs, gpuIndx] = gpuDeviceCount (“可用”
availableGPUs = 3
gpuIndx =1×31 2 3

사용할장치의인덱스를정의합니다。

useGPUs = [1 3];

병렬풀을시작합니다。spmd블록과gpuDevice를사용하여장치인덱스를통해각워커를사용하려GPU는중하나와연결합니다。labindex함수는각워커의인덱스를식별합니다。

parpool (“本地”元素个数(useGPUs));
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:2)。
spmdgpuDevice (useGPUs (labindex));结束

최상의성능을구현하려면각워커에다른GPU를할당하는것이좋습니다。

계산이완료되면병렬풀을종료합니다。

删除(gcp (“nocreate”));
R2010b에개발됨