underworldcode / underworld2

underworld2: A parallel, particle-in-cell, finite element code for Geodynamics.
http://www.underworldcode.org/
Other
168 stars 58 forks source link

Questions about the new version of mpirun. #655

Closed LemonBoy68 closed 1 year ago

LemonBoy68 commented 1 year ago

Hello everyone,

Recently, I updated underworld2 from version 2.7.1b to 2.13.1b. When I use mpirun parallel computing, there will be related warnings "Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci- domain to configure to support such devices(warning: it would break the library ABI, don't enable unless really needed)." More importantly, the speed of running the same program in the new version is slower than that of the 2.7.1b version Times, I would like to ask why this result? Thanks.

Ninghui

Output file: Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci-domain to configure to support such devices (warning: it would break the library ABI, don't enable unless really needed). Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci-domain to configure to support such devices (warning: it would break the library ABI, don't enable unless really needed). Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci-domain to configure to support such devices (warning: it would break the library ABI, don't enable unless really needed). Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci-domain to configure to support such devices (warning: it would break the library ABI, don't enable unless really needed). Ignoring PCI device with non-16bit domain. Pass --enable-32bits-pci-domain to configure to support such devices (warning: it would break the library ABI, don't enable unless really needed). Global element size: 290x100 Local offset of rank 0: 0x0 Local range of rank 0: 58x100

julesghub commented 1 year ago

Hi @LemonBoy68,

Nice to hear from you. Off the top of my head I'm not sure what the difference is between 2.7.1b and 2.13.1b. That message comes from your MPI implementation.

What kind of mpi are you installing underworld with. Also what operating system are you testing on? Are you using the same MPI implementation for underworld 2.7.1 and 2.13.1?

I assume serial runs should be approximately the same timing?

LemonBoy68 commented 1 year ago

Thanks, Very happy to hear from you! My operating system is Linux, and uw2 runs on docker. I didn’t make much changes to the program, but made necessary changes to uw.mpi: underworld.nProcs() > underworld.mpi.size, underworld.rank () > underworld.mpi.rank, underworld.barrier() > underworld.mpi.barrier(). Serial takes about the same time.

julesghub commented 1 year ago

If you're running under docker then parallel performance isn't optimal - and the configuration of the docker system on your machine can have a big effect.

For parallel runs I recommend installing the code bare-metal on your system. i.e. pip install underworld (dependencies will be required).

tingyang2004 commented 1 year ago

Hi Julian, Just out of curiosity, under what conditions will Docker's parallel performance be significantly worse than directly installed code? Because I originally thought that the recommended uw2 installation option for a personal desktop or workstation was Docker.

LemonBoy68 commented 1 year ago

Thanks for your reply!A September 2015 paper, "The impact of Docker containers on the performance of genomic pipelines," assessed the performance loss caused by Docker by comparing the time it takes for the genomic analysis process to run in a physical machine and a Docker environment, but it seems that the performance difference between Docker and physical machines is not very much.

julesghub commented 1 year ago

What was the outcome @LemonBoy68?

julesghub commented 1 year ago

Hi Julian, Just out of curiosity, under what conditions will Docker's parallel performance be significantly worse than directly installed code? Because I originally thought that the recommended uw2 installation option for a personal desktop or workstation was Docker.

Well it depended a lot on the hostmachine and how you have it configured. In general Docker is recommended, but due to the errors reported above I suggested a bare-metal approach.

One thing I forgot to ask @LemonBoy68, were you using the uw2.13.1 docker, or trying to install uw2.13.1 in the uw2.7.1 docker?

LemonBoy68 commented 1 year ago

I use uw2.13.1 alone. Also, I tried to install uw on my workstation with the pip command, and got a series of errors as well.

cwd: /tmp/pip-req-build-gi3e10np Building wheel for underworld (pyproject.toml) ... error ERROR: Failed building wheel for underworld Failed to build the underworld ERROR: Could not build wheels for underworld, which is required to install pyproject.toml-based projects

julesghub commented 1 year ago

I'm unsure what the error is, perhaps you could include the total output of pip install underworld==2.13.1