If you run into troubles, it is always a good habit to report the following information:
  • the way build.mrcc was invoked
  • the output of build.mrcc
  • compiler version (for example: ifort -V, gfortran -v)
  • blas/lapack versions
  • as well as gcc and glibc versions

as well as the value of the relevant environmental variables, such OMP_NUM_THREADS, etc.

This information helps us a lot when figuring out what is going on with your compilation :)

Parallel compilation of MRCC using CMake

  • i.s.ger
  • Topic Author
  • Offline
  • New Member
  • New Member
More
1 year 1 month ago - 1 year 1 month ago #1327 by i.s.ger
Dear developers,

I tried to compile MRCC using build.mrcc script, unfortunately, this script compiles MRCC in single-thread mode. So, compilation takes time.

Then, I decided to use CMake for the build automatization of MRCC. Initially, I moved all source files (*.f, *.f90, *.F90) into the `source/` directory. Using this directory structure, I have written CMakeLists.txt for CMake. Currently, it has some limitations:
  • Only dynamic builds (no static)
  • Only OpenMPI is supported (I would prefer to modify the source code rather than the build system in this case)
  • No HDF5 and Q5cost libraries (I have no idea where I can get Q5cost lib)
  • GCC and Intel compilers are supported (I tested armflang also, but I got internal compiler error)
A new build system natively supports file separation into several ones. For this, the user should create a directory as the name of the file for separation without its extension, then, separate the file into multiple ones in the created directory. 
For example, for `intsub.f `, the user should 
  • create `intsub` directory inside of `source/`
  • move `intsub.f` into `intsub`
  • split `intsub.f` into multiple files by routines (for example, using f90split)
  • remove `intsub.f`
I did it for `intsub.f` and `intsub_rangesep.f`, then, the compilation times of these files were reduced significantly.

The structure of MRCC project after patching is presented in `tree` file in the attachment. `patch.diff` contains diff after moving source files into `source/` directory.

 

File Attachment:

File Name: tree.txt
File Size:70 KB

 

File Attachment:

File Name: patch.diff.txt
File Size:16 KB


Best regards,
Igor
Last edit: 1 year 1 month ago by i.s.ger.

Please Log in or Create an account to join the conversation.

Time to create page: 0.038 seconds
Powered by Kunena Forum