GPU training of neural network with parallel computing toolbox unreasonably slow, what am I missing?
I’m trying to speed up the training of some NARNET neural networks by using the GPU support that you get from the parallel computing toolbox but so far I haven’t been getting it to work. Or rather, it is working but it’s unreasonably slow. According to the documentation training on a GPU instead of the CPU shouldn’t be any harder than adding the statement 'useGPU','yes” to the training command. However, if I simply create some dummy data, for example a sine wave with 900 values, and train a NARNET on it using the CPU like so:
%CPU training T = num2cell(sin(1:0.01:10)); net = narnet( 1:2, 10 ); [ Xs, Xsi, Asi, Ts] = preparets( net, {}, {}, T ); rng(0) net.trainFcn = 'trainscg'; tic net = train(net,Xs,Ts,'showResources','yes' ); toc %2.77
The training takes less than 3 seconds. But when doing the exact same thing on a CUDA supported GTX 760 GPU:
%GPU training T = num2cell(sin(1:0.01:10)); net = narnet( 1:2, 10 ); [ Xs, Xsi, Asi, Ts] = preparets( net, {}, {}, T ); rng(0) net.trainFcn = 'trainscg'; tic net = train(net,Xs,Ts,'useGPU','yes','showResources','yes' ); toc % 1247.6
%Improved GPU training T = num2cell(sin(1:0.01:10)); net = narnet( 1:2, 10 ); [ Xs, Xsi, Asi, Ts ] = preparets( net, {}, {}, T ); rng(0) net = configure(net,Xs,Ts); Xs = nndata2gpu(Xs); Ts = nndata2gpu(Ts); Xsi = nndata2gpu(Xsi); for i=1:net.numLayers if strcmp(net.layers{i}.transferFcn,'tansig') net.layers{i}.transferFcn = 'elliotsig'; end end net.trainFcn = 'trainscg'; tic net = train(net,Xs,Ts,'showResources','yes' ); toc %70.79
ANSWER
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
Comments
Post a Comment