为什么gpu比cpu慢?

时间:2016-08-08 14:28:00

标签: matlab neural-network gpu

我有gpu

>> d = gpuDevice

d = 

  CUDADevice with properties:

                  Name: 'GeForce 800M'
                 Index: 1
     ComputeCapability: '2.1'
        SupportsDouble: 1
         DriverVersion: 6
        ToolkitVersion: 5
    MaxThreadsPerBlock: 1024
      MaxShmemPerBlock: 49152
    MaxThreadBlockSize: [1024 1024 64]
           MaxGridSize: [65535 65535 65535]
             SIMDWidth: 32
           TotalMemory: 2.1475e+09
            FreeMemory: 1.9886e+09
   MultiprocessorCount: 1
          ClockRateKHz: 1475000
           ComputeMode: 'Default'
  GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
      CanMapHostMemory: 1
       DeviceSupported: 1
        DeviceSelected: 1`

我尝试在神经网络训练中使用gpu,但我的gpu比cpu慢。 如果我尝试使用gpuArray,gpu比cpu更快,但我没有在神经网络训练中加速加速。 例如

>> a1 = rand(1000); b1 = rand(1000); tic; c1 = a1 * b1; toc; Elapsed time is 0.044095 seconds.

>> a2 = gpuArray(rand(1000)); b2 = gpuArray(rand(1000)); tic; c2 = a2 * b2; toc; Elapsed time is 0.000416 seconds.

但是在代码中

 net = newff(H, F, Layers, { 'tansig' 'tansig'}, 'traingdx', 'learngdm', 'mse');

net.trainParam.epochs = Epochs;
net.trainParam.show = 500;
net.trainParam.time = 495;
net.trainParam.goal = 2.0000e-11;
net.trainParam.max_fail = 200000;
net.trainParam.min_grad = 1.0000e-050;
net.performParam.regularization = 0.05;

net.divideParam.trainRatio = 1;
net.divideParam.valRatio = 0;
net.divideParam.testRatio = 0;

net.trainParam.showWindow = 0;
net.trainParam.showCommandLine = 0;

if Gpu1 == 1
    net = train(net, H, F, 'useGPU', 'yes', 'showResources','yes');
else
    net = train(net, H, F, 'showResources','yes');
end;




tic; net = net_example(300, [23, 9], rand(100, 1000), rand(1, 1000), 1); toc;



Computing Resources:
GPU device #1, GeForce 800M

 tic; net = net_example(300, [23, 9], rand(100, 1000), rand(1, 1000), 0); toc;


Computing Resources:
MEX2

0 个答案:

没有答案