Compare commits

..

5 Commits

Author SHA1 Message Date
0de6c6b8f9 spec: prerelase 0.91 for testing removal of mcexec -n option
Change-Id: I2b18b5fefec570bfb7a4aa0823fe97d9ea93e208
2020-08-12 13:12:06 +09:00
5ffad78b87 mcexec: use FLIB_NUM_PROCESS_ON_NODE when -n not specified (Fugaku specific)
Change-Id: I1668fecfac692d56076dd10e6e03fbf992e323ec
2020-08-12 07:30:11 +09:00
542418b1fc spec: prerelase 0.9 for testing libdwarf related package requirements
Change-Id: Iaaa116018505c4f89813883f5a99c8194cb4f99e
2020-07-29 12:22:08 +09:00
b95a2fcfab spec, README.md: fix libdwarf related package requirements
Change-Id: I460d440e33d0ff5e8ab3d4f7b328f7f2ea11bc16
2020-07-29 12:08:04 +09:00
1b11496f26 spec, README.md: add package dependency including libdwarf
Change-Id: Ie612c5dc642a9f5d6d2ba31747adb991cb568113
2020-07-22 06:59:37 +00:00
4 changed files with 32 additions and 17 deletions

View File

@ -10,7 +10,7 @@ project(mckernel C ASM)
set(MCKERNEL_VERSION "1.7.0") set(MCKERNEL_VERSION "1.7.0")
# See "Fedora Packaging Guidlines -- Versioning" # See "Fedora Packaging Guidlines -- Versioning"
set(MCKERNEL_RELEASE "0.8") set(MCKERNEL_RELEASE "0.91")
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
# for rpmbuild # for rpmbuild

View File

@ -64,7 +64,7 @@ First, the proxy process is compiled as a position independent binary, which ena
For a smooth experience, we recommend the following combination of OS distributions and platforms: For a smooth experience, we recommend the following combination of OS distributions and platforms:
- CentOS 7.3+ running on Intel Xeon / Xeon Phi - CentOS 7.3+ running on Intel Xeon, Xeon Phi, Fujitsu A64FX
##### 1. Change SELinux settings ##### 1. Change SELinux settings
@ -85,7 +85,12 @@ sudo reboot
You will need the following packages installed: You will need the following packages installed:
~~~~ ~~~~
sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git sudo yum install cmake kernel-devel binutils-devel systemd-devel numactl-devel gcc make nasm git libdwarf-devel
~~~~
Note that to install libdwarf-devel to RHEL-8.2, you need to enable the CodeReady Linux Builder (CLB) repository and the EPEL repository with the following commands:
~~~~
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(/bin/arch)-rpms
~~~~ ~~~~
Grant read permission to the System.map file of your kernel version: Grant read permission to the System.map file of your kernel version:
@ -128,7 +133,7 @@ The IHK kernel modules and McKernel kernel image should be installed under the *
###### 4.2 Install with rpm ###### 4.2 Install with rpm
Configure, compile and build rpm: Build rpm:
~~~~ ~~~~
mkdir -p build && cd build mkdir -p build && cd build
@ -179,7 +184,7 @@ IHK/McKernel booted.
~~~~ ~~~~
##### 5. Run a simple program on McKernel ##### 6. Run a simple program on McKernel
The mcexec command line tool (which is also the Linux proxy process) can be used for executing applications on McKernel: The mcexec command line tool (which is also the Linux proxy process) can be used for executing applications on McKernel:
@ -189,7 +194,7 @@ centos-vm
~~~~ ~~~~
##### 6. Shutdown McKernel ##### 7. Shutdown McKernel
Finally, to shutdown McKernel and release CPU/memory resources back to Linux use the following command: Finally, to shutdown McKernel and release CPU/memory resources back to Linux use the following command:
@ -197,27 +202,27 @@ Finally, to shutdown McKernel and release CPU/memory resources back to Linux use
sudo ./sbin/mcstop+release.sh sudo ./sbin/mcstop+release.sh
~~~~ ~~~~
##### 7. Advanced: Enable Utility Thread offloading Interface (UTI) ##### 8. 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. UTI enables a runtime such as MPI runtime to spawn utility threads such as MPI asynchronous progress threads to Linux cores.
1. Install capstone ###### 8.1 Install capstone
Install EPEL capstone-devel: Install EPEL capstone-devel:
~~~~ ~~~~
sudo yum install epel-release sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install capstone-devel sudo yum install capstone-devel
~~~~ ~~~~
2. Install syscall_intercept ###### 8.2 Install syscall_intercept
~~~~ ~~~~
git clone https://github.com/RIKEN-SysSoft/syscall_intercept.git git clone https://github.com/RIKEN-SysSoft/syscall_intercept.git
cmake ../arch/aarch64 -DCMAKE_INSTALL_PREFIX=<syscall-intercept-install> -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DTREAT_WARNINGS_AS_ERRORS=OFF cmake ../arch/aarch64 -DCMAKE_INSTALL_PREFIX=<syscall-intercept-install> -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=gcc -DTREAT_WARNINGS_AS_ERRORS=OFF
~~~~ ~~~~
3. Install UTI for McKernel ###### 8.3 Install UTI for McKernel
Install: Install:
@ -228,19 +233,19 @@ mkdir build && cd build
make && make install make && make install
~~~~ ~~~~
4. Install McKernel ###### 8.4 Install McKernel
~~~~ ~~~~
CMAKE_PREFIX_PATH=<syscall-intercept-install> cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel -DENABLE_UTI=ON $HOME/src/ihk+mckernel/mckernel CMAKE_PREFIX_PATH=<syscall-intercept-install> cmake -DCMAKE_INSTALL_PREFIX=${HOME}/ihk+mckernel -DENABLE_UTI=ON $HOME/src/ihk+mckernel/mckernel
~~~~ ~~~~
5. Run executable ###### 8.5 Run executable
~~~~ ~~~~
mcexec --enable-uti <command> mcexec --enable-uti <command>
~~~~ ~~~~
6. Install UTI for Linux for performance comparison ###### 8.6 Install UTI for Linux for performance comparison
Install by make: Install by make:

View File

@ -2444,6 +2444,13 @@ int main(int argc, char **argv)
} }
} }
/* Fugaku: use FLIB_NUM_PROCESS_ON_NODE if -n is not specified */
if (getenv("FLIB_NUM_PROCESS_ON_NODE") && nr_processes == 0) {
nr_processes = atoi(getenv("FLIB_NUM_PROCESS_ON_NODE"));
__dprintf("%s: using FLIB_NUM_PROCESS_ON_NODE: %d\n",
__func__, nr_processes);
}
if (nr_processes > ncpu) { if (nr_processes > ncpu) {
fprintf(stderr, "error: nr_processes can't exceed nr. of CPUs\n"); fprintf(stderr, "error: nr_processes can't exceed nr. of CPUs\n");
return EINVAL; return EINVAL;
@ -2572,9 +2579,10 @@ int main(int argc, char **argv)
desc->cpu = target_core; desc->cpu = target_core;
desc->process_rank = process_rank; desc->process_rank = process_rank;
/* Fugaku specific: Fujitsu node-local rank */ /* Fugaku specific: Fujitsu node-local rank */
if (getenv("PLE_RANK_ON_NODE")) { if (getenv("FLIB_RANK_ON_NODE")) {
desc->process_rank = atoi(getenv("PLE_RANK_ON_NODE")); desc->process_rank = atoi(getenv("FLIB_RANK_ON_NODE"));
__dprintf("%s: rank: %d, target CPU: %d\n", __dprintf("%s: rank: %d, target CPU: %d\n",
__func__, desc->process_rank, desc->cpu); __func__, desc->process_rank, desc->cpu);
} }

View File

@ -23,6 +23,8 @@ Summary: IHK/McKernel
License: GPLv2 License: GPLv2
Source0: mckernel-%{version}.tar.gz Source0: mckernel-%{version}.tar.gz
Requires: systemd-libs numactl-libs libdwarf
# kernel_module_package macro does not handle cross build... # kernel_module_package macro does not handle cross build...
%if "%{?_host_cpu}" == "x86_64" && "%{?_target_cpu}" == "aarch64" %if "%{?_host_cpu}" == "x86_64" && "%{?_target_cpu}" == "aarch64"
%define cross_compile 1 %define cross_compile 1
@ -34,7 +36,7 @@ Requires: kernel = %{krequires}
Requires(post): /usr/sbin/depmod Requires(post): /usr/sbin/depmod
Requires(postun): /usr/sbin/depmod Requires(postun): /usr/sbin/depmod
%else %else
BuildRequires: systemd-devel numactl-devel binutils-devel kernel-devel BuildRequires: systemd-devel numactl-devel binutils-devel kernel-devel libdwarf-devel
# Friendly reminder of the fact that kernel-rpm-macros is no longer included in kernel-devel # Friendly reminder of the fact that kernel-rpm-macros is no longer included in kernel-devel
%if 0%{?rhel} >= 8 %if 0%{?rhel} >= 8
BuildRequires: redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod BuildRequires: redhat-rpm-config kernel-rpm-macros elfutils-libelf-devel kmod