Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| daed585347 | |||
| 11d7229525 | |||
| e43d52df20 | |||
| 1c0da3c5b9 | |||
| 3084db8b26 | |||
| cba263ff12 | |||
| 43a6f0d41d | |||
| c80ea0ed23 | |||
| 73d028de77 | |||
| d812e4dedb |
@ -7,7 +7,7 @@ endif (NOT CMAKE_BUILD_TYPE)
|
||||
enable_language(C ASM)
|
||||
|
||||
project(mckernel C ASM)
|
||||
set(MCKERNEL_VERSION "1.7.2")
|
||||
set(MCKERNEL_VERSION "1.7.5")
|
||||
|
||||
# See "Fedora Packaging Guidelines -- Versioning"
|
||||
set(MCKERNEL_RELEASE "")
|
||||
@ -137,8 +137,7 @@ if (ENABLE_LINUX_WORK_IRQ_FOR_IKC)
|
||||
endif()
|
||||
|
||||
if (BUILD_TARGET STREQUAL "smp-arm64")
|
||||
execute_process(COMMAND bash -c "find -L ${CMAKE_CURRENT_SOURCE_DIR} -name \"*.[chS]\"|xargs -r grep -oE \"^#if.*def.*POSTK_DEBUG[^ ]*\" | cut -d':' -f2 | cut -d' ' -f2 | sort | uniq | awk '{print \"-D\"\$0 }' | xargs"
|
||||
OUTPUT_VARIABLE POSTK_DEBUG_DEFINES OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
set(POSTK_DEBUG_DEFINES "-DPOSTK_DEBUG_ARCH_DEP_100 -DPOSTK_DEBUG_ARCH_DEP_42 -DPOSTK_DEBUG_TEMP_FIX_29 -DPOSTK_DEBUG_TEMP_FIX_49")
|
||||
add_definitions("${POSTK_DEBUG_DEFINES}")
|
||||
set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} ${POSTK_DEBUG_DEFINES}")
|
||||
|
||||
|
||||
170
docs/NEWS.rst
170
docs/NEWS.rst
@ -1,3 +1,173 @@
|
||||
=============================================
|
||||
Version 1.7.5 (Mar 11, 2021)
|
||||
=============================================
|
||||
|
||||
----------------------
|
||||
IHK major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
IHK major bug fixes
|
||||
------------------------
|
||||
#. ihklib: fix cgroup cpuset.cpus/mems check when using krm
|
||||
#. ihklib: ihk_reserve_mem_conf_str: set default values to those not specified
|
||||
|
||||
----------------------
|
||||
McKernel major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
McKernel major bug fixes
|
||||
------------------------
|
||||
N/A
|
||||
|
||||
=============================================
|
||||
Version 1.7.4 (Mar 7, 2021)
|
||||
=============================================
|
||||
|
||||
----------------------
|
||||
IHK major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
IHK major bug fixes
|
||||
------------------------
|
||||
N/A
|
||||
|
||||
----------------------
|
||||
McKernel major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
McKernel major bug fixes
|
||||
------------------------
|
||||
N/A
|
||||
|
||||
=============================================
|
||||
Version 1.7.3 (Mar 5, 2021)
|
||||
=============================================
|
||||
|
||||
----------------------
|
||||
IHK major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
IHK major bug fixes
|
||||
------------------------
|
||||
N/A
|
||||
|
||||
----------------------
|
||||
McKernel major updates
|
||||
----------------------
|
||||
N/A
|
||||
|
||||
------------------------
|
||||
McKernel major bug fixes
|
||||
------------------------
|
||||
N/A
|
||||
|
||||
=============================================
|
||||
Version 1.7.2 (Mar 5, 2021)
|
||||
=============================================
|
||||
|
||||
----------------------
|
||||
IHK major updates
|
||||
----------------------
|
||||
#. ihklib: add *_str() functions for reserve, assign, IKC-map, kargs
|
||||
#. smp: make smp_call_func() arch independent
|
||||
|
||||
------------------------
|
||||
IHK major bug fixes
|
||||
------------------------
|
||||
#. ihklib: ihk_reserve_mem: fix capped best-effort
|
||||
#. TO RESET: fake missing NUMA node pieces, 90% memory limit
|
||||
#. ihklib: ihk_reserve_mem_conf: range-check for IHK_RESERVE_MEM_MAX_SIZE_RATIO_ALL
|
||||
#. ihklib: ihk_os_kargs: check if "hidos" is included
|
||||
#. SMP: omit slab/slub shrink, use 95% limit by default
|
||||
#. check cpu / numa cgroup set by krm
|
||||
#. SMP: __ihk_smp_reserve_mem: add __GFP_COMP to __GFP_ATOMIC allocation
|
||||
#. ihk_register_device: record minor to IHK device object
|
||||
|
||||
----------------------
|
||||
McKernel major updates
|
||||
----------------------
|
||||
#. mcexec: memory policy control by environmental variable
|
||||
#. mempolicy: Support MPOL_INTERLEAVE
|
||||
#. uti: futex call function in mcctrl
|
||||
#. uti: integrate libuti and redirect to mck/libuti.so
|
||||
#. uti: integrate syscall_intercept
|
||||
#. shmobj: support large page
|
||||
#. xpmem: support large page
|
||||
#. MM: handle zero_at_free in page faults
|
||||
|
||||
------------------------
|
||||
McKernel major bug fixes
|
||||
------------------------
|
||||
#. TO RESET: stack changes
|
||||
#. Tofu: keep track of stags per memory range
|
||||
#. Tofu: match page sizes to MBPT and fault PTEs if not present
|
||||
#. Tofu: fix phys addr calculation for contiguous pages in MBPT/BCH update
|
||||
#. rus_vm_fault: vmf_insert_pfn: treat VM_FAULT_NOPAGE as success
|
||||
#. Tofu: mcctrl side MMU notifier and CQ/BCH cleanup
|
||||
#. copy_user_ranges: copy straight_start of struct vm_range
|
||||
#. mcctrl: abort on invalid addr in mcexec_transfer_image()
|
||||
#. mcctrl: fix access to uninitialized usrdata->cpu_topology_list
|
||||
#. mcexec: propagate error in __NR_gettid handler
|
||||
#. mcexec_transfer_image(): map exact size of remote memory (instead of forcing PAGE_SIZE)
|
||||
#. xpmem: fault stack area of remote process if VM range doesn't yet exist
|
||||
#. Tofu: fault stack area if VM range doesn't exist in STAG registration
|
||||
#. __mcctrl_os_read_write_cpu_register: fix timeout
|
||||
#. mbind: Use range_policy's numamask as priority on MPOL_BIND
|
||||
#. migrate: Don't migrate on in-kernel interrupt
|
||||
#. Send a signal to mcexec after switching to that process.
|
||||
#. uti: fix syscall response is mis-consumed by __do_in_kernel_irq_syscall
|
||||
#. uti: fix handling UTI_CPU_SET env
|
||||
#. do_execveat: kill instead of panic when init_process_stack fails
|
||||
#. remote_page_fault is handled by the offloaded thread.
|
||||
#. coredump: fix behavior when gencore fail
|
||||
#. xpmem: truncates the size of xpmem_attach at the page boundary (workaround for fjmpi)
|
||||
#. __mcctrl_os_read_write_cpu_register: spin timeout in mcctrl_ikc_send_wait()
|
||||
|
||||
=============================================
|
||||
Version 1.7.1 (Dec 23, 2020)
|
||||
=============================================
|
||||
|
||||
----------------------
|
||||
IHK major updates
|
||||
----------------------
|
||||
#. d5d5c23 Tofu: support for barrier gate
|
||||
#. Tofu: proper cleanup of premapped DMA regions
|
||||
#. Tofu: initial version
|
||||
#. SMP: try with GFP_ATOMIC as well in mem reserve
|
||||
|
||||
------------------------
|
||||
IHK major bug fixes
|
||||
------------------------
|
||||
#. ihklib: ihk(_os)_query_{cpu,mem}: allow to pass empty array
|
||||
#. SMP: non compound page free and GFP_ATOMIC
|
||||
#. ihk_get_num_os_instances: don't open /dev/mcdN
|
||||
#. ihklib: ihk_create_os_str: fix variable prefix
|
||||
|
||||
----------------------
|
||||
McKernel major updates
|
||||
----------------------
|
||||
#. stragiht map: creates a straight map covering the whole physical memory, and gives virtual address ranges out of it to maps to which physical pages are allocated on map
|
||||
#. free-time, lazy, potentially Linux-side page-zeroing
|
||||
#. Tofu built-in driver: supports memory registration and barrier gate setup
|
||||
#. kmalloc cache
|
||||
|
||||
------------------------
|
||||
McKernel major bug fixes
|
||||
------------------------
|
||||
#. mmap: return -EINVAL for non-anonymous, MAP_HUGETLB map
|
||||
#. kernel: increase stack size
|
||||
#. Tofu: proper cleanup of device files when mcexec gets killed
|
||||
|
||||
=============================================
|
||||
Version 1.7.0 (Nov 25, 2020)
|
||||
=============================================
|
||||
|
||||
@ -29,7 +29,7 @@ Install the following packages to the build machine:
|
||||
|
||||
::
|
||||
|
||||
cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
|
||||
cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel capstone-devel
|
||||
|
||||
When having access to repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -46,17 +46,48 @@ On CentOS 8, enable the PowerTools repository:
|
||||
|
||||
sudo dnf config-manager --set-enabled PowerTools
|
||||
|
||||
Enable EPEL repository:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
|
||||
Install with yum:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
|
||||
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel capstone-devel
|
||||
|
||||
When not having access to repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``libdwarf-devel``
|
||||
""""""""""""""""""
|
||||
|
||||
Ask the system administrator to install them. Note that ``libdwarf-devel`` is in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools repository on CentOS 8.
|
||||
|
||||
``capstone-devel``
|
||||
""""""""""""""""""
|
||||
|
||||
A. Ask the system administrator to install ``capstone-devel``. Note that it is in the EPEL repository.
|
||||
|
||||
B. Download the rpm with the machine in which you are the administrator:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
sudo yum install yum-utils
|
||||
yumdownloader capstone-devel
|
||||
|
||||
And then install it to your home directory:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/$(uname -p)
|
||||
rpm2cpio capstone-devel-4.0.1-9.el8.aarch64.rpm | cpio -idv
|
||||
sed -i 's#/usr/#'"$HOME"'/'"$(uname -p)"'/usr/#' $HOME/$(uname -p)/usr/lib64/pkgconfig/capstone.pc
|
||||
|
||||
|
||||
Clone, compile, install
|
||||
--------------------------
|
||||
|
||||
@ -93,7 +124,12 @@ When not cross-compiling:
|
||||
|
||||
::
|
||||
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel ../mckernel
|
||||
CMAKE_PREFIX_PATH=${HOME}/$(uname -p)/usr \
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel \
|
||||
-DENABLE_UTI=ON \
|
||||
../mckernel
|
||||
|
||||
Note that ``CMAKE_PREFIX_PATH=${HOME}/$(uname -p)/usr`` is required only when ``capstone-devel`` is installed to your home directory.
|
||||
|
||||
When cross-compiling:
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -105,10 +141,11 @@ When cross-compiling:
|
||||
-DKERNEL_DIR=<kernnel_dir> \
|
||||
-DBUILD_TARGET=smp-arm64 \
|
||||
-DCMAKE_TOOLCHAIN_FILE=../mckernel/cmake/cross-aarch64.cmake \
|
||||
-DENABLE_UTI=ON \
|
||||
../mckernel
|
||||
|
||||
Install with cmake
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Install with make:
|
||||
|
||||
@ -191,10 +228,10 @@ Install the following packages to the compute nodes:
|
||||
|
||||
::
|
||||
|
||||
systemd-libs numactl-libs libdwarf
|
||||
systemd-libs numactl-libs libdwarf capstone
|
||||
|
||||
When having access to repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
On RHEL 8, enable the CodeReady Linux Builder (CLB) repository:
|
||||
|
||||
@ -208,13 +245,42 @@ On CentOS 8, enable the PowerTools repository:
|
||||
|
||||
sudo dnf config-manager --set-enabled PowerTools
|
||||
|
||||
Enable EPEL repository:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
|
||||
Install with yum:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install systemd-libs numactl-libs libdwarf
|
||||
sudo yum install systemd-libs numactl-libs libdwarf capstone
|
||||
|
||||
When not having access to repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``libdwarf``
|
||||
""""""""""""
|
||||
|
||||
Ask the system administrator to install them. Note that ``libdwarf`` is in the CodeReady Linux Builder repository on RHEL 8 or in the PowerTools repository on CentOS 8.
|
||||
|
||||
``capstone``
|
||||
""""""""""""
|
||||
|
||||
A. Ask the system administrator to install ``capstone``. Note that it is in the EPEL repository.
|
||||
|
||||
B. Download the rpm with the machine in which you are the administrator:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
sudo yum install yum-utils
|
||||
yumdownloader capstone
|
||||
|
||||
and then install it to your home directory:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/$(uname -p)
|
||||
rpm2cpio capstone-4.0.1-9.el8.aarch64.rpm | cpio -idv
|
||||
|
||||
@ -7,12 +7,10 @@ This document will explain how to operate system with McKernel.
|
||||
Installation
|
||||
============
|
||||
|
||||
See `Quick Guide -- Installation <quick.html#installation>`__.
|
||||
|
||||
.. include:: uti.rst
|
||||
Follow `Quick Guide -- Installation <quick.html#installation>`__.
|
||||
|
||||
Boot and Shut-down
|
||||
=========================
|
||||
==================
|
||||
|
||||
Related files
|
||||
-------------
|
||||
|
||||
@ -702,7 +702,7 @@ IHKはLinuxに以下の機能を提供する。
|
||||
\end{tabular}
|
||||
\vspace{-0em}
|
||||
\end{table}
|
||||
\\なお、これ以外の設定は無視される。
|
||||
\\上記の項目のうち、文字列で指定されなかったものに対してはデフォルト値が設定される。また、これら以外の設定項目は無視される。
|
||||
\FloatBarrier
|
||||
|
||||
\subsubsection*{戻り値}
|
||||
|
||||
@ -55,11 +55,11 @@ You need to insert ``mcexec`` into the command lines invoking the programs that
|
||||
Non-MPI programs
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Insert ``mcexec`` before an executable:
|
||||
Insert ``mcexec`` before the command:
|
||||
|
||||
::
|
||||
|
||||
mcexec ./a.out
|
||||
mcexec <command>
|
||||
|
||||
MPI programs
|
||||
~~~~~~~~~~~~
|
||||
@ -96,6 +96,19 @@ Fujitsu Technical Computing Suite.
|
||||
#PJM --mpi "proc=32"
|
||||
#PJM -L "node=8"
|
||||
|
||||
(Advanced) When using Utility Thread offloading Interface (UTI)
|
||||
---------------------------------------------------------------
|
||||
|
||||
UTI enables a runtime such as MPI runtime to spawn utility threads such
|
||||
as MPI asynchronous progress threads to Linux cores.
|
||||
|
||||
Add ``--enable-uti`` option to ``mcexec``:
|
||||
|
||||
::
|
||||
|
||||
mcexec --enable-uti <command>
|
||||
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
|
||||
94
docs/uti.rst
94
docs/uti.rst
@ -1,94 +0,0 @@
|
||||
Advanced: Enable Utility Thread offloading Interface (UTI)
|
||||
-------------------------------------------------------------
|
||||
|
||||
UTI enables a runtime such as MPI runtime to spawn utility threads such
|
||||
as MPI asynchronous progress threads to Linux cores.
|
||||
|
||||
Install ``capstone`` and ``capstone-devel``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
When compute nodes don't have access to EPEL repository
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
Install EPEL ``capstone`` and ``capstone-devel``:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
sudo yum install capstone capstone-devel
|
||||
|
||||
|
||||
When compute nodes don't have access to EPEL repository
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
A. Ask the system administrator to install ``capstone`` and ``capstone-devel``. Note that it is in the EPEL repository.
|
||||
|
||||
B. Download the rpm with the machine in which you are the administrator:
|
||||
|
||||
::
|
||||
|
||||
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
sudo yum install yum-utils
|
||||
yumdownloader capstone capstone-devel
|
||||
|
||||
and then install it to your home directory of the login node:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/$(uname -p)
|
||||
rpm2cpio capstone-4.0.1-9.el8.aarch64.rpm | cpio -idv
|
||||
rpm2cpio capstone-devel-4.0.1-9.el8.aarch64.rpm | cpio -idv
|
||||
sed -i 's#/usr/#'"$HOME"'/'"$(uname -p)"'/usr/#' $HOME/$(uname -p)/usr/lib64/pkgconfig/capstone.pc
|
||||
|
||||
|
||||
Install McKernel
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``cmake`` with the additional options:
|
||||
|
||||
::
|
||||
|
||||
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel -DENABLE_UTI=ON $HOME/src/ihk+mckernel/mckernel
|
||||
make -j install
|
||||
|
||||
Run programs
|
||||
~~~~~~~~~~~~
|
||||
|
||||
``mcexec`` with ``--enable-uti`` option:
|
||||
|
||||
::
|
||||
|
||||
mcexec --enable-uti <command>
|
||||
|
||||
(Optional) Install UTI for Linux
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can skip this step if you don't want to develop a run-time using UTI, or if it's already installed with, for example, Fujitsu Technical Computing Suite.
|
||||
|
||||
Install by make
|
||||
"""""""""""""""
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git clone https://github.com/RIKEN-SysSoft/uti.git
|
||||
mkdir build && cd build
|
||||
../uti/configure --prefix=<uti-install> --with-rm=linux
|
||||
make && make install
|
||||
|
||||
Install by rpm
|
||||
""""""""""""""
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
git clone https://github.com/RIKEN-SysSoft/uti.git
|
||||
mkdir build && cd build
|
||||
../uti/configure --prefix=<uti-install> --with-rm=linux
|
||||
rm -f ~/rpmbuild/SOURCES/<version>.tar.gz
|
||||
rpmbuild -ba ./scripts/uti.spec
|
||||
rpm -Uvh uti-<version>-<release>-<arch>.rpm
|
||||
|
||||
(Optional) Install UTI for McKernel
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can skip this step if you don't want to develop a run-time using UTI.
|
||||
Execute the commands above for installing UTI for Linux, with ``--with-rm=linux`` replaced with ``--with-rm=mckernel``.
|
||||
2
ihk
2
ihk
Submodule ihk updated: 1bc915de4e...0c568c8da6
Reference in New Issue
Block a user