The parallel version: Field IIpro
The Field IIpro version has now been released for commercial use. The program
uses multi-threaded parallel execution to speed up simulation, which on modern
multi-core CPUs can give a very significant reduction in simulation time. This has
been accomplished by rewriting large parts of the program to make it faster and reuse
memory more efficiently. Especially the command calc_scat has been improved.
Compatibility
The program is 100% compatible with the free web version and has been extensively
validated on all platforms to comply with the web version. Old code can therefore be
run directly and gain from the speedup. A single commands sets the number of threads
used for execution. This should normally be set to the number of independent cores of the
CPU. Hyper-threading can also be used, but the advantage of hyper-threading cores is usually
less than actual, physical cores.
Python versions
A new version of the program has been written for running under Python version 3.8. The program
is being benchmarked and validated and runs as fast as under Matlab, and
all functionality has been maintained. The calling functions are named the same as in Matlab and behaves
the same. The Python version is now released with the same pricing as the Matlab version.
Octave and C versions
A new feature is also that the code is not only available for Matlab, but also for running
under the free Octave program under Linux. Standalone C programs can also be made as a
C linkable library has been made. This makes it possible to create programs which can be run
form a command prompt independently from either Matlab or Octave. The m-files must then be
converted to a C-program, which often is longer than the Matlab program. Assistance can be
given for this conversion process.
Currently the following versions can be acquired:
System |
Matlab |
Octave |
C library |
Python 3.8 |
Linux |
Yes |
Yes |
Yes |
Yes |
Mac OS X |
Yes |
Enquire about version |
Yes |
Yes |
Windows |
Yes |
Enquire about version |
Yes |
Yes |
Performance
The professional version of Field II takes advantage of the
multi-core capabilities of modern CPUs. The central part of the programs calculation
routine and its memory management has been re-written for optimizing speed
on multi-core CPUs for the latest version by managing memory per thread.
This has both increased single-core and multi core
execution of the calc_scat command. The increase in performance is seen
below.
Performance for rectangles
The graph shows the speed-up relative to the public available web version 3.30 as a
function of the number of threads. The PC is running Ubuntu Linux 18.04LTS on a
AMD Ryzen Thredripper 2990WX CPU with 32 cores with hyper-threading for a combine
total of 64 hyper-threading cores. This machine can run
64 independent jobs and a speed-up of a factor of more than 129 is obtained on these
32 cores compared to the freely available web version. A 64 elements linear array is simulated
with calc_scat for 10 million scatterers. Simulation time is cut form 12 minutes and 30 seconds to
5.8 seconds when using all 64 threads.
Speed up ratio for using the different cores.
The same performance meaure has been investigated using the Python version, and th result is shown below.
Speed up ratio for using the different cores for the Python version.
For a newer iMac with a 4 cores 2.7 GHz Intel i5 Field IIpro can typically
simulate 1 million point scatterers in around 18 seconds for
a 64 active elements transducer.
Similar speed-up ratios can be found for all other commands when simulating for
a number of points or point scatterer. Small jobs with few scatterers does not benefit more,
but larger jobs gains the significant speed-up for nearly all applications and options.
Performance for bounding lines
The performance has also been measured for the bounding lines method.
Below is shown an example of the speed-up ratio relative to one core on
the dual Intel(R) Xeon(R) E2630, 2.60 GHz CPUs with 12 cores and hyper threading.
Paper about Field IIpro
You can read the following paper, if you want to known more about Field IIpro and
its performance:
Jensen, JA 2014, 'A Multi-threaded Version of Field II', in Proceedings of IEEE
International Ultrasonics Symposium. IEEE, pp. 2229-2232., 10.1109/ULTSYM.2014.0555
Please contact Jørgen Arendt Jensen at
j.arendt.jensen@gmail.com
for more information on pricing, delivery, and help with the new version.
|