Parallel computing using MFix

I got the SMP solver built and the simulation started with 24 threads as I specified. However, I do not see any significant boost up in simulation speed and neither do I see my CPU usage go even above 20%.
Why is this happening?

Did you try DMP also? I usually have much better speedups using this.

Could you please provide link(s) to the documentation on getting that setup? I am running out of time.

When I put the command build_mfixsolver --dmp it says:

Checking for module ‘mpi-c’
– No package ‘mpi-c’ found
– Could NOT find MPI_C (missing: MPI_C_WORKS)
– Checking for module ‘mpi-fort’
– No package ‘mpi-fort’ found
– Could NOT find MPI_Fortran (missing: MPI_mpifptr_INCLUDE_DIR MPI_Fortran_WORKS)
CMake Error at C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find MPI (missing: MPI_C_FOUND MPI_Fortran_FOUND)
Call Stack (most recent call first):
C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindMPI.cmake:1830 (find_package_handle_standard_args)
model/CMakeLists.txt:661 (find_package)

What should I do?
It is just a snippet of the output…the rest looks okay.

Try installing MPI in the Conda environment, as follows:

$ conda activate mfix-23.2
(mfix-23.2) $ conda install -c conda-forge mpi openmpi

Conda installed that, after which I ran the same command again…same issue

(mfix-23.2) C:\Users\rkanchi>build_mfixsolver --dmp
Building generic solver
Running cmake command:
cmake -DENABLE_PYMFIX=ON -DENABLE_MPI=1 -G “MinGW Makefiles” -DCMAKE_INSTALL_PREFIX=C:\Users\rkanchi -DUDF_DIR=C:\Users\rkanchi -DVERSION=23.2 C:\Users\rkanchi.conda\envs\mfix-23.2\share\mfix\src

– Setting build type to ‘RelWithDebInfo’ as none was specified.
– MFIX build settings summary:
– Build type = RelWithDebInfo
– CMake version = 3.22.1
– Fortran compiler =
– Fortran flags =
– ENABLE_MPI = 1
– ENABLE_OpenMP = OFF
– ENABLE_CTEST = OFF
– ENABLE_COVERAGE = OFF
– The Fortran compiler identification is GNU 5.3.0
– The C compiler identification is GNU 5.3.0
– Detecting Fortran compiler ABI info
– Detecting Fortran compiler ABI info - done
– Check for working Fortran compiler: C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/mingw-w64/bin/gfortran.exe - skipped
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Check for working C compiler: C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/mingw-w64/bin/gcc.exe - skipped
– Detecting C compile features
– Detecting C compile features - done
– Performing Test ffpe_trap
– Performing Test ffpe_trap - Success
– Performing Test ffpe_summary
– Performing Test ffpe_summary - Success
– Checking for module ‘mpi-c’
– No package ‘mpi-c’ found
– Could NOT find MPI_C (missing: MPI_C_WORKS)
– Checking for module ‘mpi-fort’
– No package ‘mpi-fort’ found
– Could NOT find MPI_Fortran (missing: MPI_mpifptr_INCLUDE_DIR MPI_Fortran_WORKS)
CMake Error at C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find MPI (missing: MPI_C_FOUND MPI_Fortran_FOUND)
Call Stack (most recent call first):
C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
C:/Users/rkanchi/.conda/envs/mfix-23.2/Library/share/cmake-3.22/Modules/FindMPI.cmake:1830 (find_package_handle_standard_args)
model/CMakeLists.txt:661 (find_package)

– Configuring incomplete, errors occurred!
See also “C:/Users/rkanchi/build/CMakeFiles/CMakeOutput.log”.
See also “C:/Users/rkanchi/build/CMakeFiles/CMakeError.log”.

                 BUILD FAILED

==========================================================================

Please select “Submit bug report” from the main menu and upload the resulting ZIP file.

Where do I do that? I am doing all of this in Anaconda prompt (CMD).

Main MFiX menu, hidden behind the “hamburger” icon
shot-2023-09-05_17-23-27
shot-2023-09-05_17-23-56

Sorry, the instructions I gave you earlier were incomplete.

I just verified that, after doing a clean install of MFiX 23.2, if I additionally install openmpi and gfortran into that environment, the DMP build is successful. The conda openmpi requires a matching gfortran, it won’t work with the “system” compiler. So:

$ conda activate mfix-23.2
(mfix-23.2) conda install -c conda-forge openmpi gfortran
(mfix-23.2) mfix

should get you up and running with DMP.

Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  • gfortran

Current channels:

To search for alternate channels that may provide the conda package you’re
looking for, navigate to

https://anaconda.org

and use the search bar at the top of the page.

I am very sorry, I did not notice you are running on Windows. I should have realized from all the C:/ paths. (The full bug report, which we encourage users to submit would have specified the operating system).

Unfortunately, DMP is not supported on Windows. (If you run from the GUI, the DMP button is disabled.)

My bad…should have clarified that first. I was actually going to but for some reason I forgot. I read in some places where it could be done and some places where it could not. But I either use Linux, or windows sub-system for linux as two choices.

But thanks a lot again.

Use a real Linux box if you can (or a cluster!) - we haven’t had great results with WSL.

I think no one has had a good experience with WSL for any such application, let alone MFix :rofl:
But anyways.
Thanks

I run MFiX on Virtualbox, I have no problems running DMP “on” Windows that way. Only thing I miss is the 3D acceleration, which does not work well.

1 Like

Is there any difference in the performance between VirtualBox on windows and Linux in terms of running Mfix with DMP?

Can’t say I have tried this extensively, I have only found that the Linux version is easier to work with, in particular considering the parallel capabilities (DMP). If you mean running Virtualbox host on either Windows or Linux, and you want a Linux guest system with Mfix, you really don’t need Virtualbox in the first place. Was this what you meant? Running a native Linux environment will probably give the best graphical performance, but I happen to work mostly in Windows, and then Virtualbox with Linux guest OS is the second best.

1 Like

You can experiment to see how much of a difference it makes, but running in a Linux guest on VirtualBox will never get you the same level of performance as running on “bare metal” Linux. It’s also quite dependent on how VirtualBox is configured - if VirtualBox is not set up properly, it can be extremely slow. But this is really beyond the scope of the MFiX forum.

1 Like

Yes that is what I meant. Thank you for the response.