From 788f13a2bdf5499e8241b94e505106685ea2c737 Mon Sep 17 00:00:00 2001 From: "Peter W. Draper" <p.w.draper@durham.ac.uk> Date: Fri, 18 Jan 2019 13:26:39 +0000 Subject: [PATCH] Update description of the -y option Also make sure ParMETIS is mentioned as well as METIS --- INSTALL.swift | 17 +++++++++-------- README | 4 ++-- README.md | 4 ++-- doc/Doxyfile.in | 2 +- doc/RTD/source/CommandLineOptions/index.rst | 4 ++-- .../source/GettingStarted/compiling_code.rst | 6 +++--- .../GettingStarted/running_on_large_systems.rst | 5 ++--- src/partition.c | 4 ++-- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/INSTALL.swift b/INSTALL.swift index bf8dbc92f5..4fa82c6083 100644 --- a/INSTALL.swift +++ b/INSTALL.swift @@ -138,14 +138,15 @@ before you can build it. ===================== - - METIS: - a build of the METIS library can be optionally used to - optimize the load between MPI nodes (requires an MPI - library). This should be found in the standard installation - directories, or pointed at using the "--with-metis" - configuration option. In this case the top-level installation - directory of the METIS build should be given. Note to use - METIS you should supply at least "--with-metis". + - METIS/ParMETIS: + a build of the METIS or ParMETIS library should be used to + optimize the load between MPI nodes. This should be found in the + standard installation directories, or pointed at using the + "--with-metis" or "--with-parmetis" configuration options. + In this case the top-level installation directory of the build + should be given. Note to use METIS or ParMETIS you should supply at + least "--with-metis". ParMETIS is preferred over METIS when there + is a choice. - libNUMA: a build of the NUMA library can be used to pin the threads to diff --git a/README b/README index b51abc121f..7060589401 100644 --- a/README +++ b/README @@ -65,8 +65,8 @@ Parameters: -T, --timers=<int> Print timers every time-step. -v, --verbose=<int> Run in verbose mode, in MPI mode 2 outputs from all ranks. - -y, --task-dumps=<int> Time-step frequency at which task graphs - are dumped. + -y, --task-dumps=<int> Time-step frequency at which task analysis + files and/or tasks are dumped. -Y, --threadpool-dumps=<int> Time-step frequency at which threadpool tasks are dumped. diff --git a/README.md b/README.md index 29415f27ee..c160a21adb 100644 --- a/README.md +++ b/README.md @@ -113,8 +113,8 @@ Parameters: -T, --timers=<int> Print timers every time-step. -v, --verbose=<int> Run in verbose mode, in MPI mode 2 outputs from all ranks. - -y, --task-dumps=<int> Time-step frequency at which task graphs - are dumped. + -y, --task-dumps=<int> Time-step frequency at which task analysis + files and/or tasks are dumped. -Y, --threadpool-dumps=<int> Time-step frequency at which threadpool tasks are dumped. diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 1aa6deb2c8..b310ce3a6e 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -1976,7 +1976,7 @@ SEARCH_INCLUDES = YES # preprocessor. # This tag requires that the tag SEARCH_INCLUDES is set to YES. -INCLUDE_PATH = +INCLUDE_PATH = @top_srcdir@/src # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the diff --git a/doc/RTD/source/CommandLineOptions/index.rst b/doc/RTD/source/CommandLineOptions/index.rst index e2603532b4..88493ddb10 100644 --- a/doc/RTD/source/CommandLineOptions/index.rst +++ b/doc/RTD/source/CommandLineOptions/index.rst @@ -60,7 +60,7 @@ can be found by typing ``./swift -h``:: -T, --timers=<int> Print timers every time-step. -v, --verbose=<int> Run in verbose mode, in MPI mode 2 outputs from all ranks. - -y, --task-dumps=<int> Time-step frequency at which task graphs - are dumped. + -y, --task-dumps=<int> Time-step frequency at which task analysis + files and/or tasks are dumped. -Y, --threadpool-dumps=<int> Time-step frequency at which threadpool tasks are dumped. diff --git a/doc/RTD/source/GettingStarted/compiling_code.rst b/doc/RTD/source/GettingStarted/compiling_code.rst index 696d5a232b..0cfde4d18d 100644 --- a/doc/RTD/source/GettingStarted/compiling_code.rst +++ b/doc/RTD/source/GettingStarted/compiling_code.rst @@ -41,9 +41,9 @@ FFTW ~~~~ Version 3.3.x or higher is required for periodic gravity. -METIS -~~~~~ -METIS is used for domain decomposition and load balancing. +ParMETIS or METIS +~~~~~~~~~~~~~~~~~ +One is required for domain decomposition and load balancing. libNUMA ~~~~~~~ diff --git a/doc/RTD/source/GettingStarted/running_on_large_systems.rst b/doc/RTD/source/GettingStarted/running_on_large_systems.rst index 8bd3a76985..42beedf790 100644 --- a/doc/RTD/source/GettingStarted/running_on_large_systems.rst +++ b/doc/RTD/source/GettingStarted/running_on_large_systems.rst @@ -26,9 +26,8 @@ system (i.e. over MPI on several nodes). Here are some recommendations: + Run with threads pinned. You can do this by passing the ``-a`` flag to the SWIFT binary. This ensures that processes stay on the same core that spawned them, ensuring that cache is accessed more efficiently. -+ Ensure that you compile with METIS. More information is available in an - upcoming paper, but using METIS allows for work to be distributed in a - more efficient way between your nodes. ++ Ensure that you compile with ParMETIS or METIS. These are required if + want to load balance between MPI ranks. Your batch script should look something like the following (to run on 16 nodes each with 2x16 core processors for a total of 512 cores): diff --git a/src/partition.c b/src/partition.c index 410a75ee87..8b03b855b1 100644 --- a/src/partition.c +++ b/src/partition.c @@ -71,7 +71,7 @@ const char *initial_partition_name[] = { /* Simple descriptions of repartition types for reports. */ const char *repartition_name[] = { "none", "edge and vertex task cost weights", "task cost edge weights", - "particle memory weights", + "memory balanced, using particle vertex weights", "vertex task costs and edge delta timebin weights"}; /* Local functions, if needed. */ @@ -1587,7 +1587,7 @@ static void repart_memory_metis(struct repartition *repartition, int nodeID, /* And repartition. */ #ifdef HAVE_PARMETIS - if (repartition_partition->usemetis) { + if (repartition->usemetis) { pick_metis(nodeID, s, nr_nodes, weights, NULL, repartition->celllist); } else { pick_parmetis(nodeID, s, nr_nodes, weights, NULL, refine, -- GitLab