I often have problems running 2 CFX 10 solvers in parallel and I think it may be related to the acfx_anymodule key. I have the following keys in my license file:

1 acfx_solver
1 acfx_nolimit
1 acfx_parallel
4 acfx_par_proc
2 acfx_anymodule
4 acfx_par_proc

Consider 2 scenarios:

1) I start a CFX parallel solver running and while this is running I start a second parallel solver running. Both parallels ran fine.

2) I start a CFX serial solver running and while this is running I start a second CFX solver running, this time in parallel. I then stop the serial run and start a second parallel run while the first parallel run is still going. The second parallel run fails. So in this scenario I can only run one parallel solver whereas in scenario 1) I could run two.

Can you explain what is happening in the second scenario?


In theory, to run the solver in parallel you need EITHER an acfx_solver key and an acfx_parallel key OR 2 acfx_anymodule keys. However in your scenario 2) you appear to have highlighted an error in the CFX 10 solver software.

When the CFX 10 solver is run it first looks for a SOLVER key and then, if it is being run in parallel, it looks for a PARALLEL ENABLER key.

The SOLVER key is satisfied by either an acfx_solver key or 2acfx_anymodule keys (looked for in that order)

The PARALLEL ENABLER key is satisfied by an acfx_parallel key or 2 acfx_anymodule keys (looked for in that order)

In the first scenario where you had one parallel job running and then set another going shortly after:

+ the first solver would have checked an acfx_solver key for the solver and an acfx_parallel key for the enabler (the first items in each group)
+ the second solver would have checked out the 2 acfx_anymodule keys for the solver which would have satisfied the enabler as well.

In the second scenario where you had a serial solver running, then started a parallel solver, then stopped the serial solver and tried to start the second parallel:

+ The serial would have checked out the acfx_solver for the solver - no parallel enabler needed as it is serial
+ The first parallel therefore has to check out the 2 acfx_anymodule keys for the solver. That should have been sufficient but because of the order of the checking for the PARALLEL ENABLER key it also checked out the acfx_parallel key for the enabler (as it is first in the list for enablers). This was not the intended action.
+ Stopping the serial would release the acfx_solver key again
+ The second parallel would then check out the acfx_solver key for the solver but would not have an acfx_parallel key available because it was in use erroneously by the first parallel; the second parallel would therefore fail.

So the order in which the solver software checks for PARALLEL ENABLER keys is wrong. If the order was reversed then there would have been no problem with the second scenario.

In summary:

In CFX 10 if the solver uses 2 acfx_anymodule keys then this should be sufficient for the SOLVER and the PARALLEL ENABLER, but if there is an acfx_parallel license available then because of the order in which PARALLEL ENABLER keys are checked for, it will also - wrongly - check out the acfx_parallel key.

In CFX 10.0 there is no workaround to this problem. However in CFX 11.0 the solver will not check for a parallel enabler key (acfx_parallel) so this problem will not occur.





Show Form
No comments yet. Be the first to add a comment!