如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收。
>> gpuDeviceans = CUDADevice (具有属性): Name: 'GeForce GT 430' % GPU设备的型号 Index: 1 % 当前GPU设备的编号 ComputeCapability: '2.1' % 计算能力 SupportsDouble: 1 %知否支持双精度运算 DriverVersion: 8 % Cude驱动版本 ToolkitVersion: 7.5000 % 工具版本 MaxThreadsPerBlock: 1024 % 每个Block的最大线程数目 MaxShmemPerBlock: 49152 % 每个Block可用的最大shared内容 MaxThreadBlockSize: [1024 1024 64] %单个Block支持x,y,z三个方向的最大值 MaxGridSize: [65535 65535 65535] %最大的grid大小 SIMDWidth: 32 %Warp大小 TotalMemory: 1.0737e+09 %GPU设备全部内存大小 AvailableMemory: 799592448 %GPU设备可分配内存大小 MultiprocessorCount: 2 %GPU设备处理器个数(同CPU处理器个数相同,这是双核GPU) ClockRateKHz: 1500000 % 时钟频率多少赫兹 ComputeMode: 'Default' %计算模式 GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 1 DeviceSupported: 1 %本机MATLAB支持的GPU设备个数 DeviceSelected: 1 %当前选择GPU设备编号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | x = rand(3,3); B = gpuArray(x); whos B % whos B % 返回GPU赋值后的对象 % Name Size Bytes Class Attributes % % B 3x3 4 gpuArray X1 = gather(B); % 把GPU中的值在收回来,赋值一个变量 x - X1; % x - X1 % 结果为0,表示过程正确 % ans = % 0 0 0 % 0 0 0 % 0 0 0 |
1 2 3 4 5 6 7 8 | eye(___, 'gpuArray' ) rand(___, 'gpuArray' ) false (___, 'gpuArray' ) randi(___, 'gpuArray' ) Inf(___, 'gpuArray' ) randn(___, 'gpuArray' ) NaN(___, 'gpuArray' ) gpuArray.colon(值) ones(___, 'gpuArray' ) gpuArray.freqspace(值) true (___, 'gpuArray' ) gpuArray.linspace(值) zeros(___, 'gpuArray' ) gpuArray.logspace(值) gpuArray.speye(值) |
help gpuArray.methodname(methodname就是想要查看的函数)
1 2 3 4 5 | classUnderlying(___, 'gpuArray' ) gupArray.classUnderlying(值) % gpu数值阵列数据元素类型 isreal(___, 'gpuArray' ) gupArray.isreal(值) % 判断gpu数值阵列数据元素是否为实数 length(___, 'gpuArray' ) gupArray.length(值) %gpu数值阵列最后一维的数据长度 ndims(___, 'gpuArray' ) gupArray.ndims(值) %gpu数值阵列的尾数 size(___, 'gpuArray' ) gupArray.size(值) %gpu数值阵列各维大小 |