The loss of Abaqus performance: part 2

About seven months ago, I wrote a post about an extreme loss of performance in Abaqus 2019 comparing to Abaqus 2016 in the particular analysis (Abaqus 2019 Bug: Catastrophic performance degradation of solver with user subroutines). I also pointed out that this effect first appeared in the 2017 release and lasts so far. I tried to demonstrate the problem on a synthetic example, but when I created it, I mistakenly captured a completely different effect, which also appeared in the 2017 release and was not a bug. This effect was the introduction of the /fp:precise parameter in the Fortran compiler settings. @JS 's advice on disabling /fp:precise helped to fix the loss of performance shown in that synthetic example. But later in the comments, I noted that the real calculations that I do in Abaqus 2019 still continue to suffer from performance degradation from 2 to 5 times, even when /fp:precise is disabled (which doesn't change almost anything in these real calculations). Then I promised to return with a working example that demonstrates my problem. Finally, I did it.

I created two models that are very close to real simulations. These models differ in total number of elements. One of them is “light” and counts about 40 000 elements, and the other is “heavy” with about 900 000 elements total. Both models simulate curing of a composite and must be run with a user subroutine file. To recreate the models, use files in the attachment:

1. Change file extensions of model_light.txt and model_heavy.txt to *.py.

2. Change file extension of user_subroutine.txt to *.for.

3. Run python script model_light.py or model_heavy.py to create desired model.

4. Locate user subroutine file user_subroutine.for in job properties.

The loss of Abaqus 2017-2019 performance comparing to Abaqus 2016 relates to running jobs on multiple CPU cores. Hereinafter, job execution time is measured in terms of wallclock time which can be found in the .msg file. Results of testing both models on 1–20 CPU cores are given below.

Something strange happens with Abaqus 2019 on both models when running jobs on 6 or more CPU cores. As the number of CPU cores increases, we can see the growth of performance loss factor from 1.5 to 5.

I think I probably captured a bug. If it is so, I would be very grateful for resolving this in some fix pack for the 2019 release of Abaqus.


SYSTEM INFORMATION

Workstation with two Intel Xeon E5-2630 v4 processors (10 cores in each) installed on a two-socket motherboard.

Abaqus 2016.HF7 (fix pack 1646) + Intel Fortran 16.0 Update 1 + Visual Studio 2012

Abaqus 2019.HF9 (fix pack 2021) + Intel Fortran 16.0 Update 1 + Visual Studio 2015 Update 3

OS version: Windows 10 Pro 1809, 64-bit.


NOTES

Different versions of Visual Studio are not a cause of performance loss. I made Abaqus 2019 work with Visual Studio 2012 by modifying the win86_64.env file. The result was the same.

The presence of the /fp:precise parameter in the win86_64.env file for Abaqus 2019 is not a cause of performance loss. I got the same result when disabled it.


@RM , @RM ​​​​​​​, @CJ ​​​​​​​, @JS , @IP ​​​​​​​