Hints, Tips and Solutions – January 2004

Remote ALTER processing

A new parallelization method has been implemented into SmartSpice. Now .ALTERs can be destributed not only over several CPUs (by using -P option), but over a network of computers as well.

Remote .ALTER processing works the following way:

When it is invoked (by using -remote command line option), SmartSpice will read the input deck and check for .ALTER statements in it. If there are no .ALTER statements in the input deck, SmartSpice will just continue simulating the given netlist in batch mode. If .ALTERs are found, SmartSpice will extract parts of the netlist which form entire circuits and write out each circuit as separate files (.ALTER files). Resulting files containing one altered circuit each are named by adding the suffix -n to the composite basical netlist file name and have no extension. Number of produced files equals to the amount of .ALTER statements in the composite netlist plus one (deck without .ALTERs).

SmartSpice will then collect hosts from ralter_hosts list variable set in SmartSpice.ini file. This data consists of host names to distribute .ALTERs onto and number of CPUs to use on each host. On the next step SmartSpice will try to launch one simulation on each host (filling all hosts if number of .ALTERs is greater than amount of hosts specified). If the simulator on certain host is launched successfully, parent SmartSpice will check for amount of available CPUs source child with according .ALTER file and start simulation. Then, if there are not processed .ALTERs remaining, the parent will launch additional simulators on this given host (up to number CPUs specified by user, but never exceeding actual number of CPUs present).

If host fails for some reason, the .ALTER file it was processing will be released, and parent SmartSpice will retry to launch the simulator on the failed host again. If the host fails for ralter_numretries times, the parent SmartSpice will stop retrying to launch the remote simulator on it. If all hosts fail, but unprocessed .ALTERs still remain, SmartSpice will exit with error an message.

When remote SmartSpice finishes simulation, it signals the parent that it became idle and is immediately sourced with another unprocessed .ALTER file. If there are no unprocessed .ALTERs left, remote SmartSpice will terminate.