This archive includes the following software:
 - IHK: Interface for Heterogeneous Kernels
 - McKernel: Lightweight kernel for HPC on manycore systems
They are the products of our research and development effort.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(0) User mailing list
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
There are two user mailing lists:
   mckernel-users@pccluster.org for English
   mckernel-users-jp@pccluster.org for Japanese
Please visit the following URL to subscribe it:
   http://www.pccluster.org/mailman/listinfo/mckernel-users
If you have any questions, please contact us through it.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(1) Hardware/Software requirements
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
IHK/McKernel has been tested on the following configurations:
   - CentOS 7.2-7.4, Intel Xeon/Xeon Phi
   - CentOS 7.2-7.4, VMware, VirtualBox, qemu

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(2) Installation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1) Download "mckernel-<version>.tar.gz" file and unpack using tar xzf <filename>
   with the following commands:

    $ wget http://www.pccluster.org/ja/mckernel/mckernel-<version>.tar.gz
    $ tar xzf mckernel-<version>.tar.gz

  ${TOP} variable denotes the mckernel directory in the followings.

2) Build IHK and McKernel

  i) Disable SELinux and reboot

    $ sudo su -
    # vi /etc/selinux/config
      change to SELINUX=disabled
    # reboot

  ii) Prepare CentOS packages, and kernel function table

    Perform the following if kernel-devel package isn't installed.

    $ sudo yum install kernel-devel-`uname -r`

    Perform the following if /usr/src/kernels/`uname -r` doesn't exist

    $ sudo ln -s /usr/src/kernels/<longer kernel version> \
      /usr/src/kernels/`uname -r`

    Perform the following to make sure that the
    /lib/modules/`uname -r`/build symlink points to /usr/src/kernels/`uname -r`

    $ ls -ld /lib/modules/`uname -r`/build

    Perform the following to grant read permission to the System.map
    file of your kernel version:

    $ sudo chmod a+r /boot/System.map-`uname -r`

  iii) Configure, Compile and Install
    Run the following compile script.

    $ config_and_build_smp_x86.sh ${TOP} ${TOP}/build ${TOP}/install

    You can do it manually by perfoming the following the steps.

    a) Record the source tree location to ${TOP}.

       $ export TOP=${HOME}/mckernel

    b) Run the configuration scripts from the source directories:

       $ cd ${TOP}/src/ihk
       $ ./configure --with-target=smp-x86 --prefix=${TOP}/install
       $ cd ${TOP}/src/mckernel
       $ ./configure --with-target=smp-x86 --prefix=${TOP}/install

    c) Compile and install IHK and McKernel:

       $ cd ${TOP}/src/ihk
       $ make && make install
       $ cd ${TOP}/src/mckernel
       $ make && make install

  iv) Boot McKernel
    Boot McKernel with the following commands:

    $ cd ${TOP}/install
    $ sudo sbin/mcreboot.sh

    Check McKernel boot log with the following commands:
    ${TOP}/install/sbin/ihkosctl 0 kmsg | grep "booted"

  By default, the mcreboot script will take half of the CPU cores and
  512MB RAM from NUMA node 0, but you can modify it. Note that you
  need at least two CPU cores in your system.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(3) Usage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
For the instructions to use McKernel, please read the HOW_TO_USE.txt
under the doc directory.  Several example programs are located under
the doc/tutorial/sample.

Enjoy,
	IHK/McKernel Development Team