• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..13-Oct-2021-

include/H13-Oct-2021-7,0855,054

model_zoo/H13-Oct-2021-106,064105,896

proto/H13-Oct-2021-787708

src/H13-Oct-2021-17,77114,666

MakefileH A D13-Oct-20217.4 KiB298196

Makefile.configH A D13-Oct-20212.2 KiB8623

README.mdH A D13-Oct-20212 KiB4633

image_split_launch.shH A D03-May-20225.8 KiB193141

parse.shH A D03-May-20225.1 KiB11177

setup_env.shH A D03-May-2022984 3325

README.md

1# Deep Learning with GxM
2
3## Compiling and Building GxM
4
51. Install Pre-requisite Libraries: Google logging module (glog), gflags, Google's data interchange format (Protobuf), OpenCV, LMDB
62. In Makefile.config, set GXM_LIBRARY_PATH variable to the path containing above libraries
73. In Makefile.config, set LIBXSMM_PATH variable to the path containing LIBXSMM library
84. Set/clear other flags in Makefile.config as required (see associated comments in Makefile.config)
95. source setup_env.sh
106. make clean; make
11
12## Running GxM
13
14The network topology definitions directory is "model_zoo". Currently, it contains definitions for
15AlexNet (without LRN), ResNet-50, Inception v3 along with CIFAR10 and MNIST as simple test definitions.
16Each topology definition is in a .prototxt file. ResNet-50 can run with "dummy data", raw JPEG image data
17or with LMDB. Filenames indicate the data source along with the minibatch size. Inception v3 runs only with
18compressed LMDB data.
19
20The hyperparameter definitions for each topology are also in the corresponding directory under "model_zoo" in
21a .prototxt file with the suffix "solver". For a single-node, this file is called solver.prototxt. For multi-node
22the filename also contains the global minibatch size (=single node minibatch size x number of nodes);, e.g., solver_896.prototxt contains hyperparameters for MB=56 per node and 16 nodes. The "solver*" file also contains a
23flag that specifies whether to start execution from a checkpoint (and thus read load weights from the "./weights"
24directory) or from scratch; by default execution starts from scratch.
25
26Optimal parallelization of Convolutional layers in LIBXSMM happens when the number of OpenMP threads = MiniBatch.
27Therefore, on Xeon
28
29```bash
30export OMP_NUM_THREADS=<MiniBatch>
31export KMP_AFFINITY=compact,granularity=fine,1,0
32```
33
34The command line for a training run is:
35
36```bash
37./build/bin/gxm train <topology filename> <hyperparameter filename>
38```
39
40For example:
41
42```bash
43./build/bin/gxm train model_zoo/resnet/1_resnet50_dummy_56.prototxt model_zoo/resnet/solver.prototxt
44```
45
46