Difference between revisions of "Run It"
(24 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Operation System == | |||
{{lmt}} is available for Linux operation systems only. | |||
== How to start == | |||
{{lmt}} is always started from the Linux command line interface. In default mode, {{lmt}} will search in the run time directory for a parameter file named {{cc|para.xml}}. Alternatively the parameter file name can be provided via the command line option {{cc| -f myfilename}}. | |||
<!-- == @<mode> and parameter file mode == | |||
{{lmt}} can run on various task. Some tasks may be readily described via a bunch of | |||
command line arguments, other task are so complex that describing them via command | |||
line arguments may yield an unreadable convoluted command line, hence a parameter | |||
file is needed. | |||
Whether a parameter file is required or not is determined by the optional @<mode> | |||
command line argument. If available {{lmt}} will run in the specified mode without requiring | |||
a parameter file. For instance the command line argument @ped turns {{lmt}} into a pedigree | |||
analysis program which fully runs on command line arguments. | |||
If {{lmt}} cannot find @<mode> it will assume that it runs in parameter file mode. {{lmt}} | |||
will look in the run time directory for a file named para.xml which is the parameter file. | |||
However, the default parameter file name can be overwritten by providing the command | |||
line argument -f <my_parameterfile_name>. | |||
<b>Note that this manual describes the only the parameter file interface.</b> | |||
Available command line arguments for any @<mode> and their meaning can be inferred by the --help command line argument provided together with the @<mode> argument (e.g. lmt @ped - -help). | |||
=== Supported @<mode> modes === | |||
==== @ped ==== | |||
Turns {{lmt}} into a pedigree analysis program. For a list of commandline arguments type @ped --help. | |||
--> | |||
== Run time environment == | |||
<b>lmt</b> is developed for Linux operation systems on computers with an Intel architecture. | <b>lmt</b> is developed for Linux operation systems on computers with an Intel architecture. | ||
Thus using <b>lmt</b> on AMD architecture will result in increased run time. For executables | Thus using <b>lmt</b> on AMD architecture will result in increased run time. For executables | ||
Line 9: | Line 43: | ||
<li>OMP_DYNAMIC=FALSE</li> | <li>OMP_DYNAMIC=FALSE</li> | ||
<li>OMP_STACKSIZE='a reasonable value (i.e. 2000M)'</li> | <li>OMP_STACKSIZE='a reasonable value (i.e. 2000M)'</li> | ||
<li> | <li>OMP_PROC_BIND=true</li> | ||
<li>OMP_PLACES=cores</li> | |||
<li>OMP_MAX_ACTIVE_LEVELS=2147483647</li> | |||
<li>KMP_AFFINITY=granularity=core,scatter</li> | |||
</ul> | </ul> | ||
<b>lmt</b> is highly threaded and will try to use all available computing resources. Will this is | <b>lmt</b> is highly threaded and will try to use all available computing resources. Will this is | ||
desirable for very large models it can hamper performance when crunching medium to | desirable for very large models it can hamper performance when crunching medium to | ||
small data sets resulting in an increased run time. What "medium to small" means | small data sets resulting in an increased run time. What "medium to small" means depends on the actual computer and must therefore be determined by the user. The user can | ||
set the lmt threading behaviour via the two environment variables [https://www.openmp.org/spec-html/5.0/openmpse50.html OMP_NUM_THREADS] | |||
set the lmt threading behaviour via the two environment variables | and [https://software.intel.com/content/www/us/en/develop/documentation/onemkl-linux-developer-guide/top/managing-performance-and-memory/improving-performance-with-threading/using-additional-threading-control/setting-the-environment-variables-for-threading-control.html MKL_NUM_THREADS]. | ||
and | |||
Alternatively, {{lmt}} can be obtained as a dedicated single core version using single-core third party libraries, or as a dedicated single-core version using threaded third party libraries. | |||
The performance of multi-threaded programs can also be heavily affected by thread | The performance of multi-threaded programs can also be heavily affected by [https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/optimization-and-programming-guide/openmp-support/openmp-library-support/thread-affinity-interface-linux-and-windows.html thread affinity] settings where the optimal settings must be found via trial and error. However, | ||
affinity settings where the optimal settings must be found via trial and error. However, | |||
as a starting point, it is advisable to set the environment variable | as a starting point, it is advisable to set the environment variable | ||
<b>KMP_AFFINITY=granularity=core,scatter</b>. | <b>KMP_AFFINITY=granularity=core,scatter</b>. | ||
Line 27: | Line 64: | ||
experience a severe drop in performance of each of the runs. This is usually caused | experience a severe drop in performance of each of the runs. This is usually caused | ||
by competition for resources and therefore parallel runs of several lmt instances should | by competition for resources and therefore parallel runs of several lmt instances should | ||
be avoided. However, using the | be avoided. However, using the [https://linux.die.net/man/8/numactl numactl] environment to encapsulate {{lmt}} instances may provide an option to avoid performance drops. | ||
performance drops |
Latest revision as of 07:47, 14 June 2021
Operation System
lmt is available for Linux operation systems only.
How to start
lmt is always started from the Linux command line interface. In default mode, lmt will search in the run time directory for a parameter file named para.xml . Alternatively the parameter file name can be provided via the command line option -f myfilename .
Run time environment
lmt is developed for Linux operation systems on computers with an Intel architecture. Thus using lmt on AMD architecture will result in increased run time. For executables running on Windows or Mac please contact the author.
lmt requires that some environment variables are set to specific values. lmt will check those settings at start and will stop if the settings are wrong.
- stack size must be set to unlimited via ulimit -s unlimited
- OMP_DYNAMIC=FALSE
- OMP_STACKSIZE='a reasonable value (i.e. 2000M)'
- OMP_PROC_BIND=true
- OMP_PLACES=cores
- OMP_MAX_ACTIVE_LEVELS=2147483647
- KMP_AFFINITY=granularity=core,scatter
lmt is highly threaded and will try to use all available computing resources. Will this is desirable for very large models it can hamper performance when crunching medium to small data sets resulting in an increased run time. What "medium to small" means depends on the actual computer and must therefore be determined by the user. The user can set the lmt threading behaviour via the two environment variables OMP_NUM_THREADS and MKL_NUM_THREADS.
Alternatively, lmt can be obtained as a dedicated single core version using single-core third party libraries, or as a dedicated single-core version using threaded third party libraries.
The performance of multi-threaded programs can also be heavily affected by thread affinity settings where the optimal settings must be found via trial and error. However, as a starting point, it is advisable to set the environment variable KMP_AFFINITY=granularity=core,scatter.
If you run several instances of lmt at the same time on the same computer you may experience a severe drop in performance of each of the runs. This is usually caused by competition for resources and therefore parallel runs of several lmt instances should be avoided. However, using the numactl environment to encapsulate lmt instances may provide an option to avoid performance drops.