Deep Convolutional Neural Network

Your job is to improve the performance of the existing code, by altering the code in sol/dcnnsol.hpp. (You may also write some code in sol/dcnnsol.cpp; however, all the existing code is templated and must remain in the header file.)

Input data

Input data are loaded from two files with fixed names train-images.idx3-ubyte and train-labels.idx1-ubyte. The folder containing these files is set by the command-line parameter --data-folder.

The input data are already available at parlab, in the folder /home/_teaching/hiperf/dcnndata. Therefore, the program shall be invoked as:

srun -p mpi-homo-short -n 1 -c 8 ./dcnn --data-folder=/home/_teaching/hiperf/dcnndata

The input data may be downloaded from parlab via scp or from the original site: MNIST dataset.

Test parameters

data-folder - the folder containing the input data files (default: data).

minibatch - the number of images in a training minibatch (processed in one call to the forward/backward/learn functions). Default: 160.

superbatch - the number of minibatches in a training batch (each minibatch is assigned to a different thread). Default: 8 (1 in Debug mode).

total - the total number of images submitted into training (shall be divisible by minibatch*superbatch). Default: 160000 (160 in Debug mode).