In this notebook, we show step by step how to run Neurokernel on Jetson TK1 Embedded Development Kit. It can be applied to the latest Jetson TX1 platform with minor modification. Before we start, you must have a Jetson TK1 Embedded Development Kit and have enrolled in NVIDIA Embedded Developer Program. To install Jetson Development Pack (JetPack), you also need access to a Ubuntu OS. Follow these steps to install JetPack. This notebook assumes that JetPack is already installed on your TK1 Kit.
Please execute the following commands in terminal on the TK1. Note that executing command at a time is preferred to ensure complete installation.
We first maximize CPU performance to make running the installlation faster. For the 4 main CPU cores to always run at max performance until reboot:
sudo su
echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable
echo 1 > /sys/devices/system/cpu/cpu0/online
echo 1 > /sys/devices/system/cpu/cpu1/online
echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
exit
Update system and install necessary libraries:
sudo apt-mark hold xserver-xorg-core
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install bash-completion command-not-found
sudo apt-get install emacs24 libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev
sudo apt-get install libgdbm-dev libc6-dev libbz2-dev liblapack-dev libhdf5-dev libxml2-dev libxslt1-dev
sudo apt-get install python-dev tmux gfortran git
Install Latest Python:
mkdir packages
cd packages
wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
tar -xvf Python-2.7.11.tgz
cd Python-2.7.11
./configure --prefix=/home/ubuntu/opt
make
make install
Add path:
cd
echo -e "export PATH=/home/ubuntu/opt/bin:\$PATH\n"\
"export LD_LIBRARY_PATH=/home/ubuntu/opt/lib:\$LD_LIBRARY_PATH\n"\
"export PYTHONPATH=/home/ubuntu/opt/lib/python2.7/site-packages:\$PYTHONPATH" | tee -a ~/.bashrc
source .bashrc
Install Open-mpi:
cd packages
wget http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.1.tar.gz
tar -xvf openmpi-1.10.1.tar.gz
cd openmpi-1.10.1
./configure --with-cuda=/usr/local/cuda --with-threads=posix\
--disable-mca-dso --prefix=/home/ubuntu/opt
make -j 4
make install
Install virtualenv:
cd ~/packages
wget https://pypi.python.org/packages/source/v/virtualenv/virtualenv-13.1.2.tar.gz
tar -xvf virtualenv-13.1.2.tar.gz
cd virtualenv-13.1.2
python setup.py install
cd
virtualenv NK
source NK/bin/activate
Install required Python packages
pip install numpy scipy ipython cython numexpr pycuda
pip install bidict pandas networkx mpi4py h5py dill lxml markupsafe shutilwhich ply psutil futures twiggy matplotlib
pip install sphinx sphinx_rtd_theme
This step will take a lot of time. If some installation fails with error message: No matching distribution found, you can install it manually by replacing link_to_package with the url for the package in the following command:
pip install -Iv link_to_package
Install Neurokernel:
cd
git clone https://github.com/neurokernel/neurokernel.git
cd neurokernel
git pull
python setup.py develop
Test Neurokernel by running one of the examples
cd ~/neurokernel/examples/intro/data
python gen_generic_lpu.py -s 0 -l lpu_0 generic_lpu_0.gexf.gz generic_lpu_0_input.h5
python gen_generic_lpu.py -s 1 -l lpu_1 generic_lpu_1.gexf.gz generic_lpu_1_input.h5
cd ../
python intro_demo.py --gpu_dev 0 0 --log file
You can ignore warning messages like these:
---------------------------------------------------------
The call to cuMemHostRegister failed.
Host: tegra-ubuntu
cuMemHostRegister return value: 801
Memory Pool: smcuda
---------------------------------------------------------
---------------------------------------------------------
Sorry! You were supposed to get help about:
cuMemHostRegister during init failed
from the file:
help-mpi-common-cuda.txt
But I couldn't find that topic in the file. Sorry!
---------------------------------------------------------
or
983 more processes have sent help message help-mpi-common-cuda.txt / cuIpcGetMemHandle failed
This is caused by the fact that cudaHostRegister is not supported in armv7 devices. Inspect 'neurokernel.log' after the example finishes execution. If there is no error in the log file, the installation is complete.