Coder Social home page Coder Social logo

systemtests's Introduction

preCICE System Tests

Build Status

System tests for the distributed multi-physics coupling library library preCICE.

This repository provides Dockerfiles for building preCICE images, solvers, and adapters, as well as docker-compose files and scripts that coordinate everything. More information can be found in the docs

Dependencies

  • preCICE
  • docker
    • Make sure you can run docker as non-root user (see here)
    • Test your docker installation with e.g. docker run --rm hello-world
    • Test your network connectivity with docker run --rm alpine ping 8.8.8.8. See docs/development.md if this does not work.
  • docker-compose
  • python3

Main scripts

  • system_testing.py is the main script to run automatic testing on CI system
  • local_test.py is a simple wrapper to run tests on a local machine
  • trigger_systemtests.py is a script that can be used by CI on other repositories or from the local machine to trigger Travis builds

Run a system test locally

To run OpenFOAM-OpenFOAM system test using Ubuntu 16.04 as the base for building preCICE and adapters:

   python3 local_test.py -s of-of -d Dockerfile.Ubuntu1604.home

Run python3 local_test.py -h for more information.

Alternatively, for debugging purposes, it might be useful to execute system_testing.py directly to emulate a TravisCI run. Here an example Fenics-Fenics test using Ubuntu 18.04 with verbose container output (-v) enabled:

python system_testing.py -s fe-fe --base Ubuntu1804.home -v

systemtests's People

Contributors

benjaminrodenberg avatar davidscn avatar eder-k avatar fsimonis avatar ishaandesai avatar kunstrasenspringer avatar makish avatar micheltakken avatar shkodm avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

systemtests's Issues

Reduce the CHT OpenFOAM-CalculiX case runtime

The current case takes around 12min on Travis, for 500 iterations (steady-state simulation, see L. Cheung's thesis [1], Figure 6.7 (page 71)). Let's reduce this to 350 iterations.

https://github.com/precice/tutorials/blob/master/CHT/heat_exchanger/buoyantSimpleFoam-CalculiX/precice-config_serial.xml#L84

Since the systemtests take the configuration files from the tutorial, let's add a text-replace command to only affect the system tests.

[1] Lucia Cheung Yau. Conjugate heat transfer with the multiphysics coupling library preCICE. Master’s thesis, Department of Informatics, Technical University of Munich, 2016.

Review access rights of our docker containers

As already mentioned in #54 our current practice of using root for our system tests is problematic from a technical point of view (mpicexec, pip...). Additionally, it is also problematic with respect to security and portability aspects of our docker images (see for example here).

We should use a unprivileged user (e.g. precice) in all our tests instead of root.

A few open questions: The name precice is not ideal, since we already have many things called precice in our project (this name is used for example in dcb07b6). Having a user called precice on top does not really help.

  • Any suggestions for a nice name?
  • Is there a way to make this username configurable from outside/from a central point, such that we do not have to change all our Dockerfiles (again), if we change our mind?

Enable private Alya Flap test

All current testcases have in common that all resources are available in public repositories. There are many situations where this is not the case: all ExaFSA codes, ATHLET (GRS), Alya ...
@shkodm: Makis (@MakisH) told me that you had already a similar situation where an encrypted ssh key was necessary in Travis. Here, we probably have the same situation. Could you please comment how this works?

I suggest to start with the Alya Flap. Alya is currently hosted in a private gitlab repo at LRZ. Creating a test bot account there would be feasible (which mail address should we use?). The testcase is part of the repository, explanations on how to build and run it are provided there in the wiki.

Do not hardcode Ubuntu

The recent pull request #21 hard coded ubuntu in the code.

Hard coding for a single Linux distribution is not the way to go and we eventually want to test on/for other distributions as well. Please remove it.

Test MPICH + MPIPorts

Tests for the MPIPorts are missing in the systemtests. We only run make test_base in our current tests. This means, we should add a Dockerfile.UbuntuXXXX.home.MPICH where MPICH is used as mpi implementation; this allows us to run make test (which includes the tests for MPIPorts; see here)

RFC: Test multiple variants

Mutliple preCICE Dockerfile can be specified:

Dockerfile.Ubuntu1804
Dockerfile.Ubuntu1804.Boost160
Dockerfile.Ubuntu1804.NoPETSc
Dockerfile.Ubuntu1604
Dockerfile.Ubuntu1604.Boost160

these are matched with Test_ directories:

Test_of-of
Test_of-of.Ubuntu1804
Test_of-of.Ubuntu1804.Boost160
Test_su2.Ubuntu1604

Matching logic:

  • For each preCICE Dockerfile, there should be maximum one match in each test class (class = {of-of, su2} ).
  • Test_className is a default
  • If a Dockerfile.A.B.C is not matched within a class, it is right stripped of one component and matched again. If only one component (A) is left, the default Test_className is picked. If no default exists, no test is executed.

Examples:

  • Dockerfile.Ubuntu1804 -> { Test_of-of.Ubuntu1804, (no matching su2) }
  • Dockerfile.Ubuntu.1804.Boost160 -> {Test_of-of.Ubuntu1804.Boost160}
  • Dockerfile.Ubuntu.1804.NoPETSc -> {Test_of-of.Ubuntu1804}
  • Dockerfile.Ubuntu1604 -> { Test_of-of, Test_su2.Ubuntu1604 }
  • Dockerfile.Ubuntu1604.Boost160 -> {Test_of-of, Test_su2.Ubuntu1604}

Let adapters run systemtests based on pull request repo

Currently adapters, that use systemtests for their CI ( using #22 ) do not have a possibility to check pull requests. What is worse, pull request will be built and run, but using the master branch of the adapter, so it will pass all the time, even if it introduces breaking changes (for instance as can be seen in this pull request ).
That is definitely not desired . Temporary solution is just to prohibit builds from pull request to not confuse everyone, however better solution would be to run systemtests using proper repository.

Add test for OpenFOAM Nearest-Projection

When precice/openfoam-adapter#46 is merged (very soon), we should also add a system test for the openfoam-adapter/tutorials/CHT/flow-over-plate/buoyantPimpleFoam-laplacianFoam_nearest-projection case.

This tests different components of preCICE and, most importantly, different components of the OpenFOAM adapter.

Comparison between results of different solver/adapter versions

During fixing test cases for Ubuntu 18.04 and bringing it to travis as well, I have noticed that some of the results differ. (See #17 for documentation ). Which lead me to think about more general question:

  • How do we want to compare results for a different versions of solvers, adapters, and operating system? Right now, very simple comparison between files is done, so if some small numerical disturbances occur, systemtest will fail and produce almost completely useless output message. For example for openFOAM <-> openFOAM , when changing openFOAM from version 4 to version 5, test case fails and produce 93 files, that one would need to compare manually with the reference to find out what is the reason of failure...With SU2-Calculix number of files is larger than a 1000.

    In the end if one would go through the files, he would find that difference between files is just the header of the output file (where openFOAM version is specified) and non-significant fluctuations in the floating point numbers. So probably this test should not have failed in the first place.

    My idea ( already discussed with @MakisH and @BenjaminRueth ), is to have some kind of "maximum numerical difference" and instead of dumb comparison between folders with reference and actual results, compare only relevant numerical values between folders and make the test fail only if the difference is large enough. I already played around with it and have the script the does the generic parsing and computing "average relative numerical difference" between folders here. What else can we do? Of course, we can also just upload new results for each solver and adopter version, but then the size of the repository will be growing quite large. Any ideas or suggestions? @floli @MakisH @BenjaminRueth

Make argument parser list of system tests adaptable

Currently, the argument parser uses a static list of available system tests:

parser.add_argument('-s', '--systemtest', nargs='+', default = ['of-of', 'of-ccx', 'su2-ccx'])

It would be cool, if that list is created at runtime, based on the existing SystemTest_* directories or defaulting to a symbol value, such as all.

Add parallel versions of tests

At the moment we run all the tests in serial (e.g. using the Allrun script). It would be good for every adapter to include also a parallel version (e.g. using the Allrun_parallel script).

We don't need to run everything in parallel, but we should make sure that at least every feature of every adapter is tested. The following features should be tested also in parallel (edit to add more):

  • OpenFOAM: CHT
  • OpenFOAM: CHT with nearest-projection mapping (depends on precice/openfoam-adapter#46)
  • OpenFOAM: FSI (needs a serial test case first #32)
  • CalculiX: CHT
  • CalculiX: FSI
    CalculiX: SSI (needs a serial test case first)
  • SU2: FSI
  • FEniCS: CHT

Alternatively, we could convert all the current test cases to parallel, considering that they set a superset of features.

Should we also add systemtests for the actual release?

Issues like in precice/precice#219 can be avoided, if we test for the actual release and the way it is installed. Currently, we clone only precice/develop in our existing system tests.

Is it actually worth implementing such a test? In the end, the source code that is tested is the same. The only difference is (currently) a different folder structure for develop (precice/...) and release (precice-1.3.0/...).

Test su2-ccx crashes at end

Output is:

Process #0/0: Done finalizing preCICE!
*** Error in `SU2_CFD': double free or corruption (fasttop): 0x0000000003363ea0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f1586cb27e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f1586cbb37a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f1586cbf53c]
SU2_CFD[0x4cfa0b]
SU2_CFD[0x42c783]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f1586c5b830]
SU2_CFD[0x42bff9]
======= Memory map: ========
00400000-0118b000 r-xp 00000000 00:16 115808                             /su2-bin/bin/SU2_CFD
0138a000-013bb000 r--p 00d8a000 00:16 115808                             /su2-bin/bin/SU2_CFD
013bb000-013bd000 rw-p 00dbb000 00:16 115808                             /su2-bin/bin/SU2_CFD
013bd000-01437000 rw-p 00000000 00:00 0 
02b4b000-0373c000 rw-p 00000000 00:00 0                                  [heap]
7f1570000000-7f1570021000 rw-p 00000000 00:00 0 
7f1570021000-7f1574000000 ---p 00000000 00:00 0 
7f157635e000-7f1576b60000 rw-p 00000000 00:00 0 
7f1576b60000-7f1576b61000 ---p 00000000 00:00 0 
7f1576b61000-7f1577361000 rw-p 00000000 00:00 0 
7f1577361000-7f157739b000 r-xp 00000000 00:16 11730                      /usr/lib/openmpi/lib/openmpi/mca_io_romio.so
7f157739b000-7f157759a000 ---p 0003a000 00:16 11730                      /usr/lib/openmpi/lib/openmpi/mca_io_romio.so
7f157759a000-7f157759b000 r--p 00039000 00:16 11730                      /usr/lib/openmpi/lib/openmpi/mca_io_romio.so
7f157759b000-7f157759d000 rw-p 0003a000 00:16 11730                      /usr/lib/openmpi/lib/openmpi/mca_io_romio.so
7f157759d000-7f15775a2000 r-xp 00000000 00:16 11743                      /usr/lib/openmpi/lib/openmpi/mca_osc_sm.so
7f15775a2000-7f15777a1000 ---p 00005000 00:16 11743                      /usr/lib/openmpi/lib/openmpi/mca_osc_sm.so
7f15777a1000-7f15777a2000 r--p 00004000 00:16 11743                      /usr/lib/openmpi/lib/openmpi/mca_osc_sm.so
7f15777a2000-7f15777a4000 rw-p 00005000 00:16 11743                      /usr/lib/openmpi/lib/openmpi/mca_osc_sm.so
7f15777a4000-7f15777c3000 r-xp 00000000 00:16 11701                      /usr/lib/openmpi/lib/openmpi/mca_coll_tuned.so
7f15777c3000-7f15779c2000 ---p 0001f000 00:16 11701                      /usr/lib/openmpi/lib/openmpi/mca_coll_tuned.so
7f15779c2000-7f15779c3000 r--p 0001e000 00:16 11701                      /usr/lib/openmpi/lib/openmpi/mca_coll_tuned.so
7f15779c3000-7f15779c4000 rw-p 0001f000 00:16 11701                      /usr/lib/openmpi/lib/openmpi/mca_coll_tuned.so
7f1577bcb000-7f1577bcd000 r-xp 00000000 00:16 11699                      /usr/lib/openmpi/lib/openmpi/mca_coll_self.so
7f1577bcd000-7f1577dcc000 ---p 00002000 00:16 11699                      /usr/lib/openmpi/lib/openmpi/mca_coll_self.so
7f1577dcc000-7f1577dcd000 r--p 00001000 00:16 11699                      /usr/lib/openmpi/lib/openmpi/mca_coll_self.so
7f1577dcd000-7f1577dce000 rw-p 00002000 00:16 11699                      /usr/lib/openmpi/lib/openmpi/mca_coll_self.so
7f1577dea000-7f1577dff000 r-xp 00000000 00:16 11742                      /usr/lib/openmpi/lib/openmpi/mca_osc_pt2pt.so
7f1577dff000-7f1577ffe000 ---p 00015000 00:16 11742                      /usr/lib/openmpi/lib/openmpi/mca_osc_pt2pt.so
7f1577ffe000-7f1577fff000 r--p 00014000 00:16 11742                      /usr/lib/openmpi/lib/openmpi/mca_osc_pt2pt.so
7f1577fff000-7f1578000000 rw-p 00015000 00:16 11742                      /usr/lib/openmpi/lib/openmpi/mca_osc_pt2pt.so
7f1578000000-7f1578021000 rw-p 00000000 00:00 0 
7f1578021000-7f157c000000 ---p 00000000 00:00 0 
7f157c0a1000-7f157c0ba000 r-xp 00000000 00:16 11697                      /usr/lib/openmpi/lib/openmpi/mca_coll_libnbc.so
7f157c0ba000-7f157c2b9000 ---p 00019000 00:16 11697                      /usr/lib/openmpi/lib/openmpi/mca_coll_libnbc.so
7f157c2b9000-7f157c2ba000 r--p 00018000 00:16 11697                      /usr/lib/openmpi/lib/openmpi/mca_coll_libnbc.so
7f157c2ba000-7f157c2bb000 rw-p 00019000 00:16 11697                      /usr/lib/openmpi/lib/openmpi/mca_coll_libnbc.so
7f157c2bb000-7f157c2be000 r-xp 00000000 00:16 11696                      /usr/lib/openmpi/lib/openmpi/mca_coll_inter.so
7f157c2be000-7f157c4be000 ---p 00003000 00:16 11696                      /usr/lib/openmpi/lib/openmpi/mca_coll_inter.so
7f157c4be000-7f157c4bf000 r--p 00003000 00:16 11696                      /usr/lib/openmpi/lib/openmpi/mca_coll_inter.so
7f157c4bf000-7f157c4c0000 rw-p 00004000 00:16 11696                      /usr/lib/openmpi/lib/openmpi/mca_coll_inter.so
7f157c4c0000-7f157c4cd000 r-xp 00000000 00:16 11694                      /usr/lib/openmpi/lib/openmpi/mca_coll_basic.so
7f157c4cd000-7f157c6cd000 ---p 0000d000 00:16 11694                      /usr/lib/openmpi/lib/openmpi/mca_coll_basic.so
7f157c6cd000-7f157c6ce000 r--p 0000d000 00:16 11694                      /usr/lib/openmpi/lib/openmpi/mca_coll_basic.so
7f157c6ce000-7f157c6cf000 rw-p 0000e000 00:16 11694                      /usr/lib/openmpi/lib/openmpi/mca_coll_basic.so
7f157c8d7000-7f157c8ef000 r-xp 00000000 00:16 11749                      /usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so
7f157c8ef000-7f157caee000 ---p 00018000 00:16 11749                      /usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so
7f157caee000-7f157caef000 r--p 00017000 00:16 11749                      /usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so
7f157caef000-7f157caf0000 rw-p 00018000 00:16 11749                      /usr/lib/openmpi/lib/openmpi/mca_pml_ob1.so
7f157caf1000-7f157caf7000 r-xp 00000000 00:16 11695                      /usr/lib/openmpi/lib/openmpi/mca_coll_hierarch.so
7f157caf7000-7f157ccf6000 ---p 00006000 00:16 11695                      /usr/lib/openmpi/lib/openmpi/mca_coll_hierarch.so
7f157ccf6000-7f157ccf7000 r--p 00005000 00:16 11695                      /usr/lib/openmpi/lib/openmpi/mca_coll_hierarch.so
7f157ccf7000-7f157ccf8000 rw-p 00006000 00:16 11695                      /usr/lib/openmpi/lib/openmpi/mca_coll_hierarch.so
7f157cf12000-7f157cf1f000 r-xp 00000000 00:16 11729                      /usr/lib/openmpi/lib/openmpi/mca_io_ompio.so
7f157cf1f000-7f157d11e000 ---p 0000d000 00:16 11729                      /usr/lib/openmpi/lib/openmpi/mca_io_ompio.so
7f157d11e000-7f157d11f000 r--p 0000c000 00:16 11729                      /usr/lib/openmpi/lib/openmpi/mca_io_ompio.so
7f157d11f000-7f157d120000 rw-p 0000d000 00:16 11729                      /usr/lib/openmpi/lib/openmpi/mca_io_ompio.so
7f157d120000-7f157d12c000 r-xp 00000000 00:16 11692                      /usr/lib/openmpi/lib/openmpi/mca_btl_tcp.so
7f157d12c000-7f157d32b000 ---p 0000c000 00:16 11692                      /usr/lib/openmpi/lib/openmpi/mca_btl_tcp.so
7f157d32b000-7f157d32c000 r--p 0000b000 00:16 11692                      /usr/lib/openmpi/lib/openmpi/mca_btl_tcp.so
7f157d32c000-7f157d32d000 rw-p 0000c000 00:16 11692                      /usr/lib/openmpi/lib/openmpi/mca_btl_tcp.so
7f157d32d000-7f157d3ad000 rw-p 00000000 00:00 0 
7f157d5b4000-7f157d5b7000 r-xp 00000000 00:16 11690                      /usr/lib/openmpi/lib/openmpi/mca_btl_self.so
7f157d5b7000-7f157d7b6000 ---p 00003000 00:16 11690                      /usr/lib/openmpi/lib/openmpi/mca_btl_self.so
7f157d7b6000-7f157d7b7000 r--p 00002000 00:16 11690                      /usr/lib/openmpi/lib/openmpi/mca_btl_self.so
7f157d7b7000-7f157d7b8000 rw-p 00003000 00:16 11690                      /usr/lib/openmpi/lib/openmpi/mca_btl_self.so
7f157d7e0000-7f157d7e6000 r-xp 00000000 00:16 11710                      /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so
7f157d7e6000-7f157d9e5000 ---p 00006000 00:16 11710                      /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so
7f157d9e5000-7f157d9e6000 r--p 00005000 00:16 11710                      /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so
7f157d9e6000-7f157d9e7000 rw-p 00006000 00:16 11710                      /usr/lib/openmpi/lib/openmpi/mca_dpm_orte.so
7f157d9e7000-7f157d9ea000 r-xp 00000000 00:16 11751                      /usr/lib/openmpi/lib/openmpi/mca_pubsub_orte.so
7f157d9ea000-7f157dbe9000 ---p 00003000 00:16 11751                      /usr/lib/openmpi/lib/openmpi/mca_pubsub_orte.so
7f157dbe9000-7f157dbea000 r--p 00002000 00:16 11751                      /usr/lib/openmpi/lib/openmpi/mca_pubsub_orte.so
7f157dbea000-7f157dbeb000 rw-p 00003000 00:16 11751                      /usr/lib/openmpi/lib/openmpi/mca_pubsub_orte.so
7f157dbeb000-7f157dbee000 r-xp 00000000 00:16 11688                      /usr/lib/openmpi/lib/openmpi/mca_bml_r2.so
7f157dbee000-7f157ddee000 ---p 00003000 00:16 11688                      /usr/lib/openmpi/lib/openmpi/mca_bml_r2.so
7f157ddee000-7f157ddef000 r--p 00003000 00:16 11688                      /usr/lib/openmpi/lib/openmpi/mca_bml_r2.so
7f157ddef000-7f157ddf0000 rw-p 00004000 00:16 11688                      /usr/lib/openmpi/lib/openmpi/mca_bml_r2.so
7f157ddf0000-7f157ddf2000 r-xp 00000000 00:16 11654                      /usr/lib/openmpi/lib/libmca_common_sm.so.4.0.4
7f157ddf2000-7f157dff2000 ---p 00002000 00:16 11654                      /usr/lib/openmpi/lib/libmca_common_sm.so.4.0.4
7f157dff2000-7f157dff3000 r--p 00002000 00:16 11654                      /usr/lib/openmpi/lib/libmca_common_sm.so.4.0.4
7f157dff3000-7f157dff4000 rw-p 00003000 00:16 11654                      /usr/lib/openmpi/lib/libmca_common_sm.so.4.0.4
7f157dff4000-7f157dff6000 r-xp 00000000 00:16 11739                      /usr/lib/openmpi/lib/openmpi/mca_mpool_sm.so
7f157dff6000-7f157e1f5000 ---p 00002000 00:16 11739                      /usr/lib/openmpi/lib/openmpi/mca_mpool_sm.so
7f157e1f5000-7f157e1f6000 r--p 00001000 00:16 11739                      /usr/lib/openmpi/lib/openmpi/mca_mpool_sm.so
7f157e1f6000-7f157e1f7000 rw-p 00002000 00:16 11739                      /usr/lib/openmpi/lib/openmpi/mca_mpool_sm.so
7f157e1f7000-7f157e1fa000 r-xp 00000000 00:16 11738                      /usr/lib/openmpi/lib/openmpi/mca_mpool_grdma.so
7f157e1fa000-7f157e3f9000 ---p 00003000 00:16 11738                      /usr/lib/openmpi/lib/openmpi/mca_mpool_grdma.so
7f157e3f9000-7f157e3fa000 r--p 00002000 00:16 11738                      /usr/lib/openmpi/lib/openmpi/mca_mpool_grdma.so
7f157e3fa000-7f157e3fb000 rw-p 00003000 00:16 11738                      /usr/lib/openmpi/lib/openmpi/mca_mpool_grdma.so
7f157e3fb000-7f157e3fe000 r-xp 00000000 00:16 11756                      /usr/lib/openmpi/lib/openmpi/mca_rcache_vma.so
7f157e3fe000-7f157e5fe000 ---p 00003000 00:16 11756                      /usr/lib/openmpi/lib/openmpi/mca_rcache_vma.so
7f157e5fe000-7f157e5ff000 r--p 00003000 00:16 11756                      /usr/lib/openmpi/lib/openmpi/mca_rcache_vma.so
7f157e5ff000-7f157e600000 rw-p 00004000 00:16 11756                      /usr/lib/openmpi/lib/openmpi/mca_rcache_vma.so
7f157e600000-7f157e602000 r-xp 00000000 00:16 11684                      /usr/lib/openmpi/lib/openmpi/mca_allocator_bucket.so
7f157e602000-7f157e801000 ---p 00002000 00:16 11684                      /usr/lib/openmpi/lib/openmpi/mca_allocator_bucket.so
7f157e801000-7f157e802000 r--p 00001000 00:16 11684                      /usr/lib/openmpi/lib/openmpi/mca_allocator_bucket.so
7f157e802000-7f157e803000 rw-p 00002000 00:16 11684                      /usr/lib/openmpi/lib/openmpi/mca_allocator_bucket.so
7f157e803000-7f157e805000 r-xp 00000000 00:16 11683                      /usr/lib/openmpi/lib/openmpi/mca_allocator_basic.so
7f157e805000-7f157ea04000 ---p 00002000 00:16 11683                      /usr/lib/openmpi/lib/openmpi/mca_allocator_basic.so
7f157ea04000-7f157ea05000 r--p 00001000 00:16 11683                      /usr/lib/openmpi/lib/openmpi/mca_allocator_basic.so
7f157ea05000-7f157ea06000 rw-p 00002000 00:16 11683                      /usr/lib/openmpi/lib/openmpi/mca_allocator_basic.so
7f157ea06000-7f157ea09000 r-xp 00000000 00:16 14737                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_xml_libxml.so
7f157ea09000-7f157ec08000 ---p 00003000 00:16 14737                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_xml_libxml.so
7f157ec08000-7f157ec09000 r--p 00002000 00:16 14737                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_xml_libxml.so
7f157ec09000-7f157ec0a000 rw-p 00003000 00:16 14737                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_xml_libxml.so
7f157ec0a000-7f157ec12000 r-xp 00000000 00:16 15058                      /usr/lib/x86_64-linux-gnu/libpciaccess.so.0.11.1
7f157ec12000-7f157ee12000 ---p 00008000 00:16 15058                      /usr/lib/x86_64-linux-gnu/libpciaccess.so.0.11.1
7f157ee12000-7f157ee13000 r--p 00008000 00:16 15058                      /usr/lib/x86_64-linux-gnu/libpciaccess.so.0.11.1
7f157ee13000-7f157ee14000 rw-p 00009000 00:16 15058                      /usr/lib/x86_64-linux-gnu/libpciaccess.so.0.11.1
7f157ee14000-7f157ee16000 r-xp 00000000 00:16 14736                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_pci.so
7f157ee16000-7f157f016000 ---p 00002000 00:16 14736                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_pci.so
7f157f016000-7f157f017000 r--p 00002000 00:16 14736                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_pci.so
7f157f017000-7f157f018000 rw-p 00003000 00:16 14736                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_pci.so
7f157f018000-7f157f021000 r-xp 00000000 00:16 14751                      /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
7f157f021000-7f157f221000 ---p 00009000 00:16 14751                      /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
7f157f221000-7f157f222000 r--p 00009000 00:16 14751                      /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
7f157f222000-7f157f223000 rw-p 0000a000 00:16 14751                      /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
7f157f223000-7f157f225000 r-xp 00000000 00:16 14735                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_opencl.so
7f157f225000-7f157f424000 ---p 00002000 00:16 14735                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_opencl.so
7f157f424000-7f157f425000 r--p 00001000 00:16 14735                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_opencl.so
7f157f425000-7f157f426000 rw-p 00002000 00:16 14735                      /usr/lib/x86_64-linux-gnu/hwloc/hwloc_opencl.so
7f157f426000-7f157f427000 ---p 00000000 00:00 0 
7f157f427000-7f157fc27000 rw-p 00000000 00:00 0 
7f157fc27000-7f157fc29000 r-xp 00000000 00:16 11728                      /usr/lib/openmpi/lib/openmpi/mca_grpcomm_bad.so
7f157fc29000-7f157fe28000 ---p 00002000 00:16 11728                      /usr/lib/openmpi/lib/openmpi/mca_grpcomm_bad.so
7f157fe28000-7f157fe29000 r--p 00001000 00:16 11728                      /usr/lib/openmpi/lib/openmpi/mca_grpcomm_bad.so
7f157fe29000-7f157fe2a000 rw-p 00002000 00:16 11728                      /usr/lib/openmpi/lib/openmpi/mca_grpcomm_bad.so
7f157fe2a000-7f157fe2d000 r-xp 00000000 00:16 11764                      /usr/lib/openmpi/lib/openmpi/mca_rml_oob.so
7f157fe2d000-7f158002c000 ---p 00003000 00:16 11764                      /usr/lib/openmpi/lib/openmpi/mca_rml_oob.so
7f158002c000-7f158002d000 r--p 00002000 00:16 11764                      /usr/lib/openmpi/lib/openmpi/mca_rml_oob.so
7f158002d000-7f158002e000 rw-p 00003000 00:16 11764                      /usr/lib/openmpi/lib/openmpi/mca_rml_oob.so
7f158002e000-7f1580041000 r-xp 00000000 00:16 11741                      /usr/lib/openmpi/lib/openmpi/mca_oob_tcp.so
7f1580041000-7f1580240000 ---p 00013000 00:16 11741                      /usr/lib/openmpi/lib/openmpi/mca_oob_tcp.so
7f1580240000-7f1580241000 r--p 00012000 00:16 11741                      /usr/lib/openmpi/lib/openmpi/mca_oob_tcp.so
7f1580241000-7f1580242000 rw-p 00013000 00:16 11741                      /usr/lib/openmpi/lib/openmpi/mca_oob_tcp.so
7f1580242000-7f1580244000 r-xp 00000000 00:16 11767                      /usr/lib/openmpi/lib/openmpi/mca_routed_direct.so
7f1580244000-7f1580443000 ---p 00002000 00:16 11767                      /usr/lib/openmpi/lib/openmpi/mca_routed_direct.so
7f1580443000-7f1580444000 r--p 00001000 00:16 11767                      /usr/lib/openmpi/lib/openmpi/mca_routed_direct.so
7f1580444000-7f1580445000 rw-p 00002000 00:16 11767                      /usr/lib/openmpi/lib/openmpi/mca_routed_direct.so
7f1580447000-7f1580449000 r-xp 00000000 00:16 11706                      /usr/lib/openmpi/lib/openmpi/mca_db_print.so
7f1580449000-7f1580648000 ---p 00002000 00:16 11706                      /usr/lib/openmpi/lib/openmpi/mca_db_print.so
7f1580648000-7f1580649000 r--p 00001000 00:16 11706                      /usr/lib/openmpi/lib/openmpi/mca_db_print.so
7f1580649000-7f158064a000 rw-p 00002000 00:16 11706                      /usr/lib/openmpi/lib/openmpi/mca_db_print.so
7f158064a000-7f158064d000 r-xp 00000000 00:16 11705                      /usr/lib/openmpi/lib/openmpi/mca_db_hash.so
7f158064d000-7f158084c000 ---p 00003000 00:16 11705                      /usr/lib/openmpi/lib/openmpi/mca_db_hash.so
7f158084c000-7f158084d000 r--p 00002000 00:16 11705                      /usr/lib/openmpi/lib/openmpi/mca_db_hash.so
7f158084d000-7f158084e000 rw-p 00003000 00:16 11705                      /usr/lib/openmpi/lib/openmpi/mca_db_hash.so
7f158084e000-7f1580850000 r-xp 00000000 00:16 11711                      /usr/lib/openmpi/lib/openmpi/mca_errmgr_default_app.so
7f1580850000-7f1580a4f000 ---p 00002000 00:16 11711                      /usr/lib/openmpi/lib/openmpi/mca_errmgr_default_app.so
7f1580a4f000-7f1580a50000 r--p 00001000 00:16 11711                      /usr/lib/openmpi/lib/openmpi/mca_errmgr_default_app.so
7f1580a50000-7f1580a51000 rw-p 00002000 00:16 11711                      /usr/lib/openmpi/lib/openmpi/mca_errmgr_default_app.so
7f1580a51000-7f1580a53000 r-xp 00000000 00:16 11784                      /usr/lib/openmpi/lib/openmpi/mca_state_app.so
7f1580a53000-7f1580c52000 ---p 00002000 00:16 11784                      /usr/lib/openmpi/lib/openmpi/mca_state_app.so
7f1580c52000-7f1580c53000 r--p 00001000 00:16 11784                      /usr/lib/openmpi/lib/openmpi/mca_state_app.so
7f1580c53000-7f1580c54000 rw-p 00002000 00:16 11784                      /usr/lib/openmpi/lib/openmpi/mca_state_app.so
7f1580c54000-7f1580c5f000 r-xp 00000000 00:16 1181                       /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f1580c5f000-7f1580e5e000 ---p 0000b000 00:16 1181                       /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f1580e5e000-7f1580e5f000 r--p 0000a000 00:16 1181                       /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f1580e5f000-7f1580e60000 rw-p 0000b000 00:16 1181                       /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f1580e60000-7f1580e66000 rw-p 00000000 00:00 0 
7f1580e66000-7f1580e71000 r-xp 00000000 00:16 1185                       /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f1580e71000-7f1581070000 ---p 0000b000 00:16 1185                       /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f1581070000-7f1581071000 r--p 0000a000 00:16 1185                       /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f1581071000-7f1581072000 rw-p 0000b000 00:16 1185                       /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f1581072000-7f1581088000 r-xp 00000000 00:16 1175                       /lib/x86_64-linux-gnu/libnsl-2.23.so
7f1581088000-7f1581287000 ---p 00016000 00:16 1175                       /lib/x86_64-linux-gnu/libnsl-2.23.so
7f1581287000-7f1581288000 r--p 00015000 00:16 1175                       /lib/x86_64-linux-gnu/libnsl-2.23.so
7f1581288000-7f1581289000 rw-p 00016000 00:16 1175                       /lib/x86_64-linux-gnu/libnsl-2.23.so
7f1581289000-7f158128b000 rw-p 00000000 00:00 0 
7f158128b000-7f158128d000 r-xp 00000000 00:16 11717                      /usr/lib/openmpi/lib/openmpi/mca_ess_singleton.so
7f158128d000-7f158148c000 ---p 00002000 00:16 11717                      /usr/lib/openmpi/lib/openmpi/mca_ess_singleton.so
7f158148c000-7f158148d000 r--p 00001000 00:16 11717                      /usr/lib/openmpi/lib/openmpi/mca_ess_singleton.so
7f158148d000-7f158148e000 rw-p 00002000 00:16 11717                      /usr/lib/openmpi/lib/openmpi/mca_ess_singleton.so
7f158168f000-7f1581697000 r-xp 00000000 00:16 1177                       /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f1581697000-7f1581896000 ---p 00008000 00:16 1177                       /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f1581896000-7f1581897000 r--p 00007000 00:16 1177                       /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f1581897000-7f1581898000 rw-p 00008000 00:16 1177                       /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f1581898000-7f1581899000 r-xp 00000000 00:16 11774                      /usr/lib/openmpi/lib/openmpi/mca_sec_basic.so
7f1581899000-7f1581a98000 ---p 00001000 00:16 11774                      /usr/lib/openmpi/lib/openmpi/mca_sec_basic.so
7f1581a98000-7f1581a99000 r--p 00000000 00:16 11774                      /usr/lib/openmpi/lib/openmpi/mca_sec_basic.so
7f1581a99000-7f1581a9a000 rw-p 00001000 00:16 11774                      /usr/lib/openmpi/lib/openmpi/mca_sec_basic.so
7f1581a9a000-7f1581a9d000 r-xp 00000000 00:16 11778                      /usr/lib/openmpi/lib/openmpi/mca_shmem_mmap.so
7f1581a9d000-7f1581c9c000 ---p 00003000 00:16 11778                      /usr/lib/openmpi/lib/openmpi/mca_shmem_mmap.so
7f1581c9c000-7f1581c9d000 r--p 00002000 00:16 11778                      /usr/lib/openmpi/lib/openmpi/mca_shmem_mmap.so
7f1581c9d000-7f1581c9e000 rw-p 00003000 00:16 11778                      /usr/lib/openmpi/lib/openmpi/mca_shmem_mmap.so
7f1581c9e000-7f1581ca7000 r-xp 00000000 00:16 15022                      /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f1581ca7000-7f1581ea6000 ---p 00009000 00:16 15022                      /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f1581ea6000-7f1581ea7000 r--p 00008000 00:16 15022                      /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f1581ea7000-7f1581ea8000 rw-p 00009000 00:16 15022                      /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f1581ea8000-7f1581eb2000 r-xp 00000000 00:16 15052                      /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f1581eb2000-7f15820b1000 ---p 0000a000 00:16 15052                      /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f15820b1000-7f15820b2000 r--p 00009000 00:16 15052                      /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f15820b2000-7f15820b3000 rw-p 0000a000 00:16 15052                      /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f15820b3000-7f1583969000 r-xp 00000000 00:16 14957                      /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f1583969000-7f1583b68000 ---p 018b6000 00:16 14957                      /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f1583b68000-7f1583b69000 r--p 018b5000 00:16 14957                      /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f1583b69000-7f1583b6a000 rw-p 018b6000 00:16 14957                      /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f1583b6a000-7f1583dbc000 r-xp 00000000 00:16 14961                      /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f1583dbc000-7f1583fbc000 ---p 00252000 00:16 14961                      /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f1583fbc000-7f1583fcb000 r--p 00252000 00:16 14961                      /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f1583fcb000-7f1583fcc000 rw-p 00261000 00:16 14961                      /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f1583fcc000-7f1583fce000 r-xp 00000000 00:16 1226                       /lib/x86_64-linux-gnu/libutil-2.23.so
7f1583fce000-7f15841cd000 ---p 00002000 00:16 1226                       /lib/x86_64-linux-gnu/libutil-2.23.so
7f15841cd000-7f15841ce000 r--p 00001000 00:16 1226                       /lib/x86_64-linux-gnu/libutil-2.23.so
7f15841ce000-7f15841cf000 rw-p 00002000 00:16 1226                       /lib/x86_64-linux-gnu/libutil-2.23.so
7f15841cf000-7f1584208000 r-xp 00000000 00:16 14951                      /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f1584208000-7f1584407000 ---p 00039000 00:16 14951                      /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f1584407000-7f1584408000 r--p 00038000 00:16 14951                      /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f1584408000-7f1584409000 rw-p 00039000 00:16 14951                      /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f1584409000-7f158442a000 r-xp 00000000 00:16 1163                       /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f158442a000-7f1584629000 ---p 00021000 00:16 1163                       /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f1584629000-7f158462a000 r--p 00020000 00:16 1163                       /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f158462a000-7f158462b000 rw-p 00021000 00:16 1163                       /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f158462b000-7f1584644000 r-xp 00000000 00:16 1231                       /lib/x86_64-linux-gnu/libz.so.1.2.8
7f1584644000-7f1584843000 ---p 00019000 00:16 1231                       /lib/x86_64-linux-gnu/libz.so.1.2.8
7f1584843000-7f1584844000 r--p 00018000 00:16 1231                       /lib/x86_64-linux-gnu/libz.so.1.2.8
7f1584844000-7f1584845000 rw-p 00019000 00:16 1231                       /lib/x86_64-linux-gnu/libz.so.1.2.8
7f1584845000-7f15849c4000 r-xp 00000000 00:16 14985                      /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f15849c4000-7f1584bc4000 ---p 0017f000 00:16 14985                      /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f1584bc4000-7f1584bd4000 r--p 0017f000 00:16 14985                      /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f1584bd4000-7f1584bd5000 rw-p 0018f000 00:16 14985                      /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f1584bd5000-7f1584bd9000 rw-p 00000000 00:00 0 
7f1584bd9000-7f1584bdc000 r-xp 00000000 00:16 1145                       /lib/x86_64-linux-gnu/libdl-2.23.so
7f1584bdc000-7f1584ddb000 ---p 00003000 00:16 1145                       /lib/x86_64-linux-gnu/libdl-2.23.so
7f1584ddb000-7f1584ddc000 r--p 00002000 00:16 1145                       /lib/x86_64-linux-gnu/libdl-2.23.so
7f1584ddc000-7f1584ddd000 rw-p 00003000 00:16 1145                       /lib/x86_64-linux-gnu/libdl-2.23.so
7f1584ddd000-7f1584efa000 r-xp 00000000 00:16 104988                     /usr/local/lib/libboost_regex.so.1.66.0
7f1584efa000-7f15850f9000 ---p 0011d000 00:16 104988                     /usr/local/lib/libboost_regex.so.1.66.0
7f15850f9000-7f15850fe000 r--p 0011c000 00:16 104988                     /usr/local/lib/libboost_regex.so.1.66.0
7f15850fe000-7f1585100000 rw-p 00121000 00:16 104988                     /usr/local/lib/libboost_regex.so.1.66.0
7f1585100000-7f1585101000 rw-p 00000000 00:00 0 
7f1585101000-7f1585108000 r-xp 00000000 00:16 1206                       /lib/x86_64-linux-gnu/librt-2.23.so
7f1585108000-7f1585307000 ---p 00007000 00:16 1206                       /lib/x86_64-linux-gnu/librt-2.23.so
7f1585307000-7f1585308000 r--p 00006000 00:16 1206                       /lib/x86_64-linux-gnu/librt-2.23.so
7f1585308000-7f1585309000 rw-p 00007000 00:16 1206                       /lib/x86_64-linux-gnu/librt-2.23.so
7f1585309000-7f1585399000 r-xp 00000000 00:16 11670                      /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f1585399000-7f1585599000 ---p 00090000 00:16 11670                      /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f1585599000-7f158559d000 r--p 00090000 00:16 11670                      /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f158559d000-7f15855a1000 rw-p 00094000 00:16 11670                      /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f15855a1000-7f15855a6000 rw-p 00000000 00:00 0 
7f15855a6000-7f158561b000 r-xp 00000000 00:16 11672                      /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f158561b000-7f158581a000 ---p 00075000 00:16 11672                      /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f158581a000-7f158581b000 r--p 00074000 00:16 11672                      /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f158581b000-7f158581e000 rw-p 00075000 00:16 11672                      /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f158581e000-7f1585820000 rw-p 00000000 00:00 0 
7f1585820000-7f158582d000 r-xp 00000000 00:16 10836                      /usr/lib/libibverbs.so.1.0.0
7f158582d000-7f1585a2d000 ---p 0000d000 00:16 10836                      /usr/lib/libibverbs.so.1.0.0
7f1585a2d000-7f1585a2e000 r--p 0000d000 00:16 10836                      /usr/lib/libibverbs.so.1.0.0
7f1585a2e000-7f1585a2f000 rw-p 0000e000 00:16 10836                      /usr/lib/libibverbs.so.1.0.0
7f1585a2f000-7f1585be0000 r-xp 00000000 00:16 15131                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f1585be0000-7f1585ddf000 ---p 001b1000 00:16 15131                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f1585ddf000-7f1585de7000 r--p 001b0000 00:16 15131                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f1585de7000-7f1585de9000 rw-p 001b8000 00:16 15131                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f1585de9000-7f1585dea000 rw-p 00000000 00:00 0 
7f1585dea000-7f1585e66000 r-xp 00000000 00:16 104985                     /usr/local/lib/libboost_program_options.so.1.66.0
7f1585e66000-7f1586066000 ---p 0007c000 00:16 104985                     /usr/local/lib/libboost_program_options.so.1.66.0
7f1586066000-7f1586069000 r--p 0007c000 00:16 104985                     /usr/local/lib/libboost_program_options.so.1.66.0
7f1586069000-7f158606a000 rw-p 0007f000 00:16 104985                     /usr/local/lib/libboost_program_options.so.1.66.0
7f158606a000-7f1586083000 r-xp 00000000 00:16 104973                     /usr/local/lib/libboost_filesystem.so.1.66.0
7f1586083000-7f1586283000 ---p 00019000 00:16 104973                     /usr/local/lib/libboost_filesystem.so.1.66.0
7f1586283000-7f1586284000 r--p 00019000 00:16 104973                     /usr/local/lib/libboost_filesystem.so.1.66.0
7f1586284000-7f1586285000 rw-p 0001a000 00:16 104973                     /usr/local/lib/libboost_filesystem.so.1.66.0
7f1586285000-7f1586288000 r-xp 00000000 00:16 104991                     /usr/local/lib/libboost_system.so.1.66.0
7f1586288000-7f1586487000 ---p 00003000 00:16 104991                     /usr/local/lib/libboost_system.so.1.66.0
7f1586487000-7f1586488000 r--p 00002000 00:16 104991                     /usr/local/lib/libboost_system.so.1.66.0
7f1586488000-7f1586489000 rw-p 00003000 00:16 104991                     /usr/local/lib/libboost_system.so.1.66.0
7f1586489000-7f15864b0000 r-xp 00000000 00:16 104995                     /usr/local/lib/libboost_thread.so.1.66.0
7f15864b0000-7f15866af000 ---p 00027000 00:16 104995                     /usr/local/lib/libboost_thread.so.1.66.0
7f15866af000-7f15866b1000 r--p 00026000 00:16 104995                     /usr/local/lib/libboost_thread.so.1.66.0
7f15866b1000-7f15866b2000 rw-p 00028000 00:16 104995                     /usr/local/lib/libboost_thread.so.1.66.0
7f15866b2000-7f1586755000 r-xp 00000000 00:16 104979                     /usr/local/lib/libboost_log_setup.so.1.66.0
7f1586755000-7f1586954000 ---p 000a3000 00:16 104979                     /usr/local/lib/libboost_log_setup.so.1.66.0
7f1586954000-7f1586959000 r--p 000a2000 00:16 104979                     /usr/local/lib/libboost_log_setup.so.1.66.0
7f1586959000-7f158695a000 rw-p 000a7000 00:16 104979                     /usr/local/lib/libboost_log_setup.so.1.66.0
7f158695a000-7f158695c000 rw-p 00000000 00:00 0 
7f158695c000-7f1586a33000 r-xp 00000000 00:16 104976                     /usr/local/lib/libboost_log.so.1.66.0
7f1586a33000-7f1586c33000 ---p 000d7000 00:16 104976                     /usr/local/lib/libboost_log.so.1.66.0
7f1586c33000-7f1586c39000 r--p 000d7000 00:16 104976                     /usr/local/lib/libboost_log.so.1.66.0
7f1586c39000-7f1586c3b000 rw-p 000dd000 00:16 104976                     /usr/local/lib/libboost_log.so.1.66.0
7f1586c3b000-7f1586dfb000 r-xp 00000000 00:16 1132                       /lib/x86_64-linux-gnu/libc-2.23.so
7f1586dfb000-7f1586ffb000 ---p 001c0000 00:16 1132                       /lib/x86_64-linux-gnu/libc-2.23.so
7f1586ffb000-7f1586fff000 r--p 001c0000 00:16 1132                       /lib/x86_64-linux-gnu/libc-2.23.so
7f1586fff000-7f1587001000 rw-p 001c4000 00:16 1132                       /lib/x86_64-linux-gnu/libc-2.23.so
7f1587001000-7f1587005000 rw-p 00000000 00:00 0 
7f1587005000-7f158701d000 r-xp 00000000 00:16 1200                       /lib/x86_64-linux-gnu/libpthread-2.23.so
7f158701d000-7f158721c000 ---p 00018000 00:16 1200                       /lib/x86_64-linux-gnu/libpthread-2.23.so
7f158721c000-7f158721d000 r--p 00017000 00:16 1200                       /lib/x86_64-linux-gnu/libpthread-2.23.so
7f158721d000-7f158721e000 rw-p 00018000 00:16 1200                       /lib/x86_64-linux-gnu/libpthread-2.23.so
7f158721e000-7f1587222000 rw-p 00000000 00:00 0 
7f1587222000-7f1587238000 r-xp 00000000 00:16 1153                       /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1587238000-7f1587437000 ---p 00016000 00:16 1153                       /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1587437000-7f1587438000 rw-p 00015000 00:16 1153                       /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1587438000-7f1587540000 r-xp 00000000 00:16 1164                       /lib/x86_64-linux-gnu/libm-2.23.so
7f1587540000-7f158773f000 ---p 00108000 00:16 1164                       /lib/x86_64-linux-gnu/libm-2.23.so
7f158773f000-7f1587740000 r--p 00107000 00:16 1164                       /lib/x86_64-linux-gnu/libm-2.23.so
7f1587740000-7f1587741000 rw-p 00108000 00:16 1164                       /lib/x86_64-linux-gnu/libm-2.23.so
7f1587741000-7f15878b3000 r-xp 00000000 00:16 15099                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f15878b3000-7f1587ab3000 ---p 00172000 00:16 15099                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f1587ab3000-7f1587abd000 r--p 00172000 00:16 15099                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f1587abd000-7f1587abf000 rw-p 0017c000 00:16 15099                      /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f1587abf000-7f1587ac3000 rw-p 00000000 00:00 0 
7f1587ac3000-7f1587b75000 r-xp 00000000 00:16 11658                      /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f1587b75000-7f1587d75000 ---p 000b2000 00:16 11658                      /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f1587d75000-7f1587d76000 r--p 000b2000 00:16 11658                      /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f1587d76000-7f1587d86000 rw-p 000b3000 00:16 11658                      /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f1587d86000-7f1587d99000 rw-p 00000000 00:00 0 
7f1587d99000-7f1587db1000 r-xp 00000000 00:16 11660                      /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f1587db1000-7f1587fb1000 ---p 00018000 00:16 11660                      /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f1587fb1000-7f1587fb3000 r--p 00018000 00:16 11660                      /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f1587fb3000-7f1587fb4000 rw-p 0001a000 00:16 11660                      /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f1587fb4000-7f1589194000 r-xp 00000000 00:16 105862                     /precice/build/debug-nopetsc-nopython/libprecice.so
7f1589194000-7f1589394000 ---p 011e0000 00:16 105862                     /precice/build/debug-nopetsc-nopython/libprecice.so
7f1589394000-7f15893a2000 r--p 011e0000 00:16 105862                     /precice/build/debug-nopetsc-nopython/libprecice.so
7f15893a2000-7f15893e0000 rw-p 011ee000 00:16 105862                     /precice/build/debug-nopetsc-nopython/libprecice.so
7f15893e0000-7f15893e1000 rw-p 00000000 00:00 0 
7f15893e1000-7f1589407000 r-xp 00000000 00:16 1112                       /lib/x86_64-linux-gnu/ld-2.23.so
7f15895e5000-7f15895fc000 rw-p 00000000 00:00 0 
7f1589604000-7f1589606000 rw-p 00000000 00:00 0 
7f1589606000-7f1589607000 r--p 00025000 00:16 1112                       /lib/x86_64-linux-gnu/ld-2.23.so
7f1589607000-7f1589608000 rw-p 00026000 00:16 1112                       /lib/x86_64-linux-gnu/ld-2.23.so
7f1589608000-7f1589609000 rw-p 00000000 00:00 0 
7fffc7c7f000-7fffc7ca0000 rw-p 00000000 00:00 0                          [stack]
7fffc7d19000-7fffc7d1c000 r--p 00000000 00:00 0                          [vvar]
7fffc7d1c000-7fffc7d1e000 r-xp 00000000 00:00 0                          [vdso]

Though it still seems to produce the correct output.

Add systemtests for preCICE being compiled with/without MPI

To be able to quickly discover issues like the one fixed by PR precice/precice#299, we should provide systemtests for preCICE being compiled with and without MPI. In the case of the python bindings, this determines whether import mpi4py is needed or not.

We should test both configurations and not only one, as our users might either compile preCICE with MPI or without. Currently, we only test preCICE compiled with MPI:

ARG petsc_para=no
ARG mpi_para=yes
ARG python_para=no
# Build preCICE and clean-up generated object files
RUN scons petsc=$petsc_para mpi=$mpi_para python=$python_para -j$(nproc) && \
find . -type f \( -name "*.o" -or -name "*.os" \) -exec rm {} +

Outlook (do not comment on this here, but in NEW ISSUE)

Of course, this does not only affect MPI vs. no MPI, but also different operating systems being used, PETSc vs. no PETSc, Python vs. no Python (see code example above) or different build systems (e.g. pip vs. python setup.py or CMake vs. scons) Therefore, this issue is more or less related to #37, #17.

In the end, we do not have to cover all possible combinations, but we should cover the important ones. One possible approach for doing this in a systematic way would be using the system introduced in #14.

To avoid this issue turning into a spaghetti issue: Let's focus on the MPI vs. no MPI issue here and if you want to discuss the other possible variants, please refer to (NEW ISSUE)

Duplicate Dockerhub accounts

We currently have two accounts on DockerHub:

  1. precicecoupling (active, but owned by @shkodm)
  2. precice (inactive, "owned by preCICE")

Let's move all the tests to push/pull from precice (and delete the precicecoupling). If deleting the account is not possible, we should at least delete as much as we can and link to the other one.

Decrease Travis output

Currently, the screen output we get on Travis is so long, that it does not even fit in the normal Travis viewer. Even further, it's difficult to find out what the problem is.

We need ways to reduce the output, without losing much information. We could, e.g. redirect most output to files that would go into the precice_st_output repository.

We already have e.g. this script reducing the simulation output.

Systemtests should rebuild the base image when the HEAD of branches change

The base images should be parameterized using the commit hash, not the branch name (or both).
This way, the base images properly rebuild after a push to the branch.

We can use rev-parse after cloning into a bare repository to get this inside local_test.py for the branchoption and add a --commit option.

Building and testing for macOS

In principle, building on macOS should already work. Would be good though to have a system test checking this regularly. AFAIK, Travis also offers CI for macOS.

Test all (?) possible compilation options

As already mentioned in #48, there are plenty of possible build configurations that we should test in a systematic way:

preCICE build

  • MPI vs. no MPI #48
  • CMake vs. Scons (Scons is removed in 2.0.0)
  • Python vs. no Python
  • PETSc vs. no PETSc
  • different operating systems
  • different versions of dependencies

language bindings

python

  • pip vs. python setup.py

First, we should try to find out, which combinations are actually relevant. Then, we should test the relevant configurations in a systematic way (e.g. using #14).

Feel free, to add possible configurations to the list above. I am sure that I missed some.

SU2 - CCX test fail building

Using latest master at 4d9603b

Docker 18.09.3, Linux 5.0.4.

mpicc -Wall -O3 -fopenmp -I./ -I./adapter -I/CalculiX/ccx_2.15/src -I/spooles.2.2 -I/precice/src -I/usr/local/ARPACK  -DARCH="Linux" -DSPOOLES -DARPACK -DMATRIXSTORAGE -c adapter/PreciceInterface.c -o bin/PreciceInterface.o
adapter/PreciceInterface.c:13:38: fatal error: precice/SolverInterfaceC.h: No such file or directory
compilation terminated.
Makefile:65: recipe for target 'bin/PreciceInterface.o' failed
make: *** [bin/PreciceInterface.o] Error 1
The command '/bin/sh -c make' returned a non-zero code: 2

Complete console output: Output.txt

Bindings test fail with precice-config.xml not found

> python local_test.py -s bindings
[...]
Step 12/21 : RUN python2 solverdummy.py precice-config.xml SolverOne MeshOne & python solverdummy.py precice-config.xml SolverTwo MeshTwo
 ---> Running in e29fdc36d926
Unexpected end of /proc/mounts line `overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/5R4UQ6IIENSCUZKGCZP25OHEO5:/var/lib/docker/overlay2/l/YPJHKLJDBFUGXNJ2UGBCPFVCVY:/var/lib/docker/overlay2/l/K4HSG7XW6KMALBH2WYQ2KWA7HN:/var/lib/docker/overlay2/l/FCL2GN6HN3OGUHEX4GXNBKR4AE:/var/lib/docker/overlay2/l/TGIPHPHJIY4ZWFLME3GKKAQ5NO:/var/lib/docker/overlay2/l/4KQNQRNP5KIADSHIC3IHYZRYSA:/var/lib/docker/overlay2/l/25BV4DIJUBZLRRZTGO6HOMNSKI:/var/lib/docker/overlay2/l/2NRTNFDAD4L5FDJC7UY4HO6RNI:/var/lib/docker/overlay2/l/3WTXAJW7R3A5W'
Unexpected end of /proc/mounts line `overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/5R4UQ6IIENSCUZKGCZP25OHEO5:/var/lib/docker/overlay2/l/YPJHKLJDBFUGXNJ2UGBCPFVCVY:/var/lib/docker/overlay2/l/K4HSG7XW6KMALBH2WYQ2KWA7HN:/var/lib/docker/overlay2/l/FCL2GN6HN3OGUHEX4GXNBKR4AE:/var/lib/docker/overlay2/l/TGIPHPHJIY4ZWFLME3GKKAQ5NO:/var/lib/docker/overlay2/l/4KQNQRNP5KIADSHIC3IHYZRYSA:/var/lib/docker/overlay2/l/25BV4DIJUBZLRRZTGO6HOMNSKI:/var/lib/docker/overlay2/l/2NRTNFDAD4L5FDJC7UY4HO6RNI:/var/lib/docker/overlay2/l/3WTXAJW7R3A5W'
Unexpected end of /proc/mounts line `QG3GRPQVR6V5N:/var/lib/docker/overlay2/l/L3PZ5KNBNRTAGEMIPCGGR675SJ:/var/lib/docker/overlay2/l/5Z2ZNJDLXUIOU3UZG2A4YWIROG:/var/lib/docker/overlay2/l/AD36KCFBPGDWFCCD2HMA5PYPNN:/var/lib/docker/overlay2/l/NGLDUMABBB5NEW5WQKNT5NFCZ7:/var/lib/docker/overlay2/l/YO4KUFERGCAPQWB6ZBR7SPPPJK:/var/lib/docker/overlay2/l/N4BX7HEAAZKA4S4LNXNDIJXWD5,upperdir=/var/lib/docker/overlay2/50c12ee057f3676441c0bf1b99c179e1ac36dbddd3b86593ed60a3257eaf5da3/diff,workdir=/var/lib/docker/overlay2/50c12ee057f3676441c0bf1b99c179e1ac36'
Unexpected end of /proc/mounts line `QG3GRPQVR6V5N:/var/lib/docker/overlay2/l/L3PZ5KNBNRTAGEMIPCGGR675SJ:/var/lib/docker/overlay2/l/5Z2ZNJDLXUIOU3UZG2A4YWIROG:/var/lib/docker/overlay2/l/AD36KCFBPGDWFCCD2HMA5PYPNN:/var/lib/docker/overlay2/l/NGLDUMABBB5NEW5WQKNT5NFCZ7:/var/lib/docker/overlay2/l/YO4KUFERGCAPQWB6ZBR7SPPPJK:/var/lib/docker/overlay2/l/N4BX7HEAAZKA4S4LNXNDIJXWD5,upperdir=/var/lib/docker/overlay2/50c12ee057f3676441c0bf1b99c179e1ac36dbddd3b86593ed60a3257eaf5da3/diff,workdir=/var/lib/docker/overlay2/50c12ee057f3676441c0bf1b99c179e1ac36'
(0) 08:44:28 [xml::XMLParser]:116 in readXmlFile: ERROR: File open error: precice-config.xml
(0) 08:44:28 [xml::XMLParser]:116 in readXmlFile: ERROR: File open error: precice-config.xml
The command '/bin/sh -c python2 solverdummy.py precice-config.xml SolverOne MeshOne & python solverdummy.py precice-config.xml SolverTwo MeshTwo' returned a non-zero code: 255

https://stackoverflow.com/questions/46138549/docker-openmpi-and-unexpected-end-of-proc-mounts-line says it was fixed years ago.

System is Arch, OpenMPI 4.0.0, Docker 18.09.3

Split the Docker base images into Dependencies + preCICE

It currently takes more than 30min to build preCICE on Travis, as it every time needs to build the dependencies. This is not really a problem, but can be annoying and can lead to unexpected external errors (e.g. if the Boost download link gets temporarily broken).

I think we could solve this by moving this part to another image, e.g. named precice_depends and only update it manually when needed.

  • Split the Ubuntu 16.04 base image
  • Split the Ubuntu 18.04 base image

# Installing necessary dependacies for preCICE
RUN apt-get -qq update && apt-get -qq install \
build-essential \
scons \
libeigen3-dev \
libxml2-dev \
petsc-dev \
git \
python-numpy \
python-dev \
wget \
bzip2
# Installing boost from source
RUN wget -nv 'https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.bz2' -O - | tar xj && \
cd boost_1_65_1 && \
./bootstrap.sh --with-libraries=log,thread,system,filesystem,program_options,test --prefix=/usr/local && \
./b2 -j$(nproc) install && \
ldconfig

Systemtests not working for pull requests from forks

For PRs from forks, the systemtests run, but the docker secrets are not available. Read more

Problem

This means that the upload silently fails after the base images were built successfully. The actual system tests then run based on an old base image.

Proposed Solution

Skip tests, for fail if DOCKER_HOST is emtpy

Confusion with lower/upper case branches and tags in docker

Docker only allows lower case tags. Since we are using tags for identifying the branches or baseimages, we have to convert mixed case names to lower case names. This leads to a easy-to-break composition of tags:

systemtests/.travis.yml

Lines 19 to 26 in bf39313

- stage: Building preCICE
if: fork = false
name: "Ubuntu 16.04 home"
script:
- docker build -f Dockerfile.Ubuntu1604.home -t $DOCKER_USERNAME/precice-ubuntu1604.home-develop .
after_success:
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- docker push $DOCKER_USERNAME/precice-ubuntu1604.home-develop:latest

At some points, this conversion is already handled properly by our python scripts:

tag = args.base.lower()

However, I think the current case is pretty confusing. See example above, where one has to know how the branch being used (develop) and the name of the Dockerfile (-f Dockerfile.Ubuntu1604.home) has to be translated to a tag (-t $DOCKER_USERNAME/precice-ubuntu1604.home-develop).

My suggestion: Don't use the command docker build for building the base images at all, but use something similar to system_testing.build such that a python script can handle tagging and take care of cases. In the end this will allow us to use something like

python build_base.py -f Dockerfile.Ubuntu1604.home -b develop

instead of

docker build -f Dockerfile.Ubuntu1604.home -t $DOCKER_USERNAME/precice-ubuntu1604.home-develop .

Tolerance for numerical comparisons

#89 added a very useful numerical comparison of the results against reference cases, a use case discussed in #19.

Now that we have this very good mechanism, we should discuss/communicate on the tolerance used for the comparisons. The default values are set in the file compare_results.sh:

avg_diff_limit="0.01"
max_diff_limit="0.01"

and can be changed with input arguments in the same file. We currently use the default values (at least in system_testing.py).

We have to optimize this:

  • having a too low tolerance would lead to tests failing without a good reason
  • having a too high tolerance would lead to false successes, which could even accumulate

We currently have max_diff_limit="0.01", but I would propose 1e-6 (without a very good reason). @shkodm @uekerman what do you think?

Add ccache to base images

To add ccache in the system tests, we need to do the following:

  1. Add a cached directory for ccache in Travis
  2. Bind $HOME/.ccache form inside the docker base images to the cached directory in travis.
  3. Install ccache in the base images and add -DCMAKE_CXX_COMPILER_LAUNCHER=ccache to the preCICE configuration.

Add test for FSI with OpenFOAM-CalculiX

We need to add our latest tutorial (case flap_perp) as a test case. This could need some tweaking of the current naming.

When porting it here, it would be good to reduce the simulated time, so that the test finishes quicker. Let's maybe add the parallel version (or both the serial and parallel), to cover more cases.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.