SIMION®
The field and particle trajectory simulator
Industry standard charged particle optics software
Refine your design: model > simulate > view > analyze > program > optimize it.
About | Documentation | Community/Support | Downloads | Ordering

SIMION 8.0 Issues/Bugs/Enhancements

Filter issues by query:
Issue I503 [81,enhancement,partlyimplemented]
  Fast Parallel .PA# refines (one solution per CPU core)

  Normally, when SIMION refines a .PA# file, it refines each of the
  solution files (.PA0/.PA_, .PA1, .PA2, ...) in sequence.  However,
  one could increase the speed of this by refining these solutions
  separately, in parallel over multiple CPU cores.  This is possible
  only if you have more than one CPU core, such as a modern CPU with
  multiple CPU cores, a system with multiple CPUs, or even multiple
  computers.  In theory, you can cut your refine time down by a factor
  of 1/N where N is the number of adjustable electrodes, provided the
  individual solutions take about the same amount of time to refine,
  provided you have N cores, and provided there is little memory
  contention.

  In 8.1 early access mode (in 8.0.5-TEST22 or above), the "refine"
  function in the Lua simion.pas interface (Issue I422) has a new
  option in which you can specify that only a subset of the solution
  (0..N) should be refined in the current SIMION process.  So, to
  refine the solutions in parallel, you can start up multiple instances
  of SIMION and invoke the "refine" function with a disjoint subset
  of electrode solution numbers.

  For example, consider the quad1.pa# array (built from the quad1.gem
  file in "examples\performance_tests\7_dc_quadrupole_tests").  To
  build and refine only electrode solution #2 in the quad1.pa# array
  (i.e. quad1.pa2), you can run this Lua code:

    local pa = simion.pas:open('quad1.pa#')
    pa:refine{solutions={2}}

  The "solutions" option takes an array of electrode numbers, and here we
  only specified a single number.  Omitting this option will cause
  SIMION to generate all solutions in sequence.

  One can alternately invoke this from the command-line as follows as
  a Lua expression:

    simion.exe --nogui lua -e "local pa = simion.pas:open('quad1.pa#'); pa:refine{solutions={2}, convergence=1e-7}"

  In future SIMION updates, additional convenience methods for
  performing these actions will likely be provided.  In particular,
  there will likely be an option from the Refine screen (GUI) to run
  multiple threads.  For now, the only the most flexible Lua method is
  provided.

  So we could run the above code on three separate computers (or three
  separate CPU cores) while replacing the number 2 with 0, 1, or 2, to
  generate these three files in parallel.  Building the quad1.pa0 is
  virutally instantaneous, but the quad1.pa1 and quad1.pa2 files take
  some time to build, so it's really only useful to use two cores.  On
  a certain four core system tested (dual CPU, each with two cores),
  quad1.pa1 and quad2.pa2 take 13.3 seconds (6.5 seconds each) to
  refine in sequence but only 7.9 seconds to refine in parallel.

  As another example, icr.pa# takes 7.0 sec to refine sequentially to
  a 1e-7 convergence level (convergence=1e-7).  It takes 3.0 seconds
  when refined on three CPU cores on the same machine ({0,1,2}, {3,4},
  and {5,6}).

  If you are refining the solutions on multiple computers, it is
  recommended you set up a file share on one computer, place the .PA#
  file in that share and refine the three solutions for the .PA# file
  there.  Therefore, SIMION will place the solution files all in the
  same place.

  See the documentation on the simion.pas interface (Issue I422)
  for details on other parameters (e.g. convergence limit) that
  can be passed to the "refine" function.

  Implemented in 8.1 early access mode (8.0.5-TEST22).  

Any comments on this web page? (will be sent to IMI Adaptas SIMION Support)
[Optional] Your name: email: phone: