defaultalt Field II home page
Point spread function Field II Simulation Program
    Main page
Center for Fast
Ultrasound Imaging
Ultrasound and
Biomechanics Section
JAJ

Background
information

Menu Line
Download
Menu Line
Users guide
Menu Line
Faq
Menu Line
Papers
Menu Line
Examples
Menu Line
Copyright
Menu Line
News
Menu Line

Field IIpro

Menu Line

Site

Menu Line


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.

//field_II_pro/field_II_pro_main.html
Last updated: 8:18 on Sun, 19-Sep-2021