Matlab +神经网络+ 2个CUDA GPU卡PC实验表现不如我所料

时间:2013-09-02 07:20:06

标签: matlab gpu neural-network

我做了两个涉及Matlab,神经网络和两个非常不同的PC的实验。第二个(更好的),有两个CUDA GPU卡,所以我预计它的速度会更高,但与第一台PC完成相同任务的时间相差8倍。我想知道我在哪里犯了错误。我想知道如何利用这2块CUDA GPU卡,因为如果我不能,那么我就浪费了我投入电脑的钱。如何修改第二个代码更快?我使用的Matlab版本是:R2013a。下面有两个代码可以像这样运行,因为它们使用Matlab内置数据集:house_dataset。

非常感谢你的帮助!


计算机1:

规格:
笔记本电脑。英特尔(R)酷睿(TM)i5-2430M CPU @ 2.40GHZ(4核)。内存:4GB
操作系统:Window 7

脚本:test_script_NO_gpu_cuda

clear all;
countTests = 200;
performances = zeros(1, countTests);
[x, t] = house_dataset;

tStart = tic;
for i = 1 : countTests,
    net = fitnet(10);
    net.trainFcn = 'trainscg';
    net.trainParam.showWindow = false;
    net = train(net, x, t, 'useParallel', 'yes', 'useGPU', 'only');
    y = net(x);
    per = perform(net, t, y);
    performances(i) = per;
end
elapsedTime = toc(tStart);

display(sprintf('Average performance: %.1f', mean(performances)));
display(sprintf('Elapsed time: %.1f seconds', elapsedTime));

>>的 test_script_NO_gpu_cuda
平均表现:17.4
经过时间:47.8秒

计算机2:

规格:
桌上型电脑。两个相同类型的GPU:NVIDIA Tesla™M2050(每个448 cuda核心)。 RAM:22 GB 操作系统:Ubuntu 12.04 LTS

脚本:test_script_YES_gpu_cuda

clear all;
matlabpool open
countTests = 200;
performances = zeros(1, countTests);
[x, t] = house_dataset;

tStart = tic;
for i = 1 : countTests,
    net = fitnet(10);
    net.trainFcn = 'trainscg';
    net.trainParam.showWindow = false;
    net = train(net, x, t, 'useParallel', 'yes', 'useGPU', 'only');
    y = net(x);
    per = perform(net, t, y);
    performances(i) = per;
end
elapsedTime = toc(tStart);
matlabpool close

display(sprintf('Average performance: %.1f', mean(performances)));
display(sprintf('Elapsed time: %.1f seconds', elapsedTime));

>>的 test_script_YES_gpu_cuda
使用“本地”配置文件启动matlabpool ...连接到8个工作人员 向所有工人发出停止信号......停止了 平均表现:18.7
经过时间:373.9秒

0 个答案:

没有答案