## 5 Experiments
### Experimental Setup  
The experiments were performed on both a standalone PC and a high-performance computing cluster. For the cluster mode, Eddie (see [[http://www.ecdf.ed.ac.uk](http://www.ecdf.ed.ac.uk)]([http://www.ecdf.ed.ac.uk](http://www.ecdf.ed.ac.uk)), accessed on 22 February 2021), the University of Edinburgh high-performance computing cluster was used. It is the third iteration of the University's compute cluster and consists of 7000 Intel Xeon cores. Each compute node has up to 3 TB of memory. It is suitable to increase the processing speed by running the task (algorithm) in parallel. It allows for breaking the task into several more easily addressable subtasks, each of which can be run on a separate CPU in parallel. It runs Open Grid scheduler and Scientific Linux 7. An overview of the Eddie architecture is shown in Figure 3.  
The login node allows users to either submit batch jobs or to start an interactive session, where the number of cores and memory per core can be specified. The compute node has local memory and is connected to shared memory called an Eddie distribute file system. Users can store the input data in the shared memory. All compute nodes are also interconnected with a 10 Gbps Ethernet network. It uses an Open Grid Scheduler for memory allocations and job scheduling.  
Using the MapReduce programming model, the DMAS algorithm was designed and implemented using Pyspark API. A sequential version of DMAS was implemented in Python programming language. Similarly, a parallel version was implemented using Python multiprocessing library. The efficiency of all these approaches were tested on a standalone PC and Eddie. The configuration for both the standalone PC and the Eddie cluster can be found in Table 1. After setting up the environment for PySpark and Python, PySpark was launched with a configuration with one master and multiple workers node. Each node has the same configuration, as shown in Table 1.  
For the performance evaluation on a standalone PC, all versions were run three times, and wall time was noted. Similarly, an interactive session on Eddie was started with four nodes, where one node acts as a master and the other three nodes act as workers. The master node reads and generates RDDs from the input data and antenna positions stored on the Eddie distributed file system. These RDDs are broadcasted to all worker nodes, along with an empty matrix to store pixel values. The worker nodes calculate subsets of  
\begin{table}
\begin{tabular}{l l l} \hline \hline
**Item** & **Standalone** & **Eddie** \\ \hline CPU & Intel(R) Core(TM) i7-3770 CPU & Intel® Xeon® Processor \\  & @ 3.40 GHz (8 CPUs), 3.4 GHz & E5-2630 v3 (2.4 GHz) \\ Memory & 16 GB & 16 GB \\ Operating System & Windows 10 Education 64-bit & Scientific Linux 7 \\ JDK Version & 1.8.0 & 1.8.0 \\ Spark Version & 2.4.1 & 2.4.1 \\ Python Version & 3.7.5 & 3.7.5 \\ \hline \hline \end{tabular}
\end{table}
Table 1: Experimental setup for both stand-alone and Eddie cluster.  
Figure 3: Overview of the Eddie architecture [34]. The login node has limited memory and allows users to submit batch jobs or to start an interactive session. The submitted jobs run on the assigned worker nodes connected through a 10 Gbps Ethernet network shown by double lines.  
pixel values based on the algorithm discussed in Section 4.1 and return the results to the master node using the MapReduce programming model. The master node transforms the resulting matrix into an image using Python built-in functions and saves the results to the Eddie storage. An example image generated using DMAS and DAS for a lamb brain phantom can be found in Figure 4.  
It can be noted that the DMAS reconstructs the brain volume more accurately compared to DAS. It is important to mention that the data were preprocessed before image reconstruction. The signal obtained for lamb brain phantom were subtracted from reference signals obtained from an empty skull model to remove strong reflections from skull.