User login

Navigation

You are here

why my umat's behavior degrade in parallel mode?

I've met some strange problems implementing umat. To speak in short, it's parallel degradation, which means when run in serial mode, everything is OK, there's no failure of equilibirium iteration and therefore no cut back, but when switch to parallel mode, there are random cut backs. I checked the process by outputing results to files and found very bizarre phenomenon, the data changes when transfering from the subroutine called to its caller. For example, if the main program calles sub(a), and in sub a is specified intent(out). The subroutine returns and assigns a=1, but after returning to the main program, a=2 not 1. The value changes during the combination of dummy and actual argument. This is totally nonsense! After I uses pointer to transfer data, things get much better immediately, but there's still random failures of equilibrium iteration and I don't know why. Can anyone help me out? Thank you!

Comments

I found another strange phenomenon of the problem. If the model has only
one element, even though there are 8 integration points, the
performance of parallel mode is good, there's no cut back.

The problem is solved. I adds three commands to the entry "compile_fortran" in the abaqus_v6.env in folder site and everything turns out OK. The commands are "/Qopenmp", "/libs:static", "/threads". I don't know which one plays the key role. Hope my experience can help you.

Dear Chen,

may I ask you a question?

did you use common block or SAVE command in your subroutine? (I mean, it is a "thread safe" code?)

Thank you,

 

Alessandro

Subscribe to Comments for "why my umat's behavior degrade in parallel mode?"

More comments

Syndicate

Subscribe to Syndicate