## 3 Technology Background
### Fun
\begin{table}
\begin{tabular}{c c c c c c c c c} \hline \hline \multicolumn{2}{c}{**Image Characteristics**} & \multicolumn{8}{c}{**Mean Spectral Angle (\({}^{\textbf{o}}\))**} \\ \hline
**Endmembers** & **Abundances** & **4** & **8** & **16** & **32** & **64** & **128** & **256** \\ \hline \multirow{4}{*}{4} & Gauss Spheric & 0.2329 & 0.1933 & 0.1933 & 0.1933 & 0.1933 & 0.1933 & 0.1933 & 0.1933 \\  & Legendre Polynomial & 3.3223 & 1.0612 & 0.1554 & 0.0682 & 0.0547 & 0.0546 & 0.0543 \\  & Dirichlet & 0.0595 & 0.0592 & 0.0592 & 0.0592 & 0.0592 & 0.0592 & 0.0592 \\  & Gauss Spheric & – & – & 0.0838 & 0.0871 & 0.1374 & 0.1374 & 0.0875 \\  & Legendre Polynomial & – & – & 0.7113 & 0.703 & 0.7154 & 0.7149 & 0.6541 \\  & Dirichlet & – & – & 0.0838 & 0.0852 & 0.0852 & 0.085 & 0.085 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Impact of partitioning depth (_pixels_) on endmember-extraction accuracy (evaluation based on synthetic images with 256 bands, 256 lines, 256 samples, and 60 dB of SNR). ### Network Infrastructure

The ARTICo3 architecture provides performance scalability on a single node, relying on the application developer to decide how many accelerators to load for a given kernel. In order to extend the scalability to a multi-FPGA context, thus enabling a two-way scalable system, a networked approach has been implemented. The proposed solution is built upon a small cluster of parallel-processing elements, referred to as nodes, in a master/slave(s) approach (see Figure 2), where data-level parallelism can be further exploited by dividing the computational workload between all available nodes. In this work, data distribution and execution synchronization are made using MPI, a well-known parallel programming API used in high-performance systems with distributed memory, which has also been used in the past to prototype communications in space [45]. However, it is important to highlight that the proposed distribution methods can be implemented using any other type of communication primitives. Regarding data distribution, two different methods have been proposed and evaluated: the application developer can decide on whether to maximize parallelism, or to minimize data transactions (communication packets). Both alternatives start with the master dividing the input hyperspectral image in as many blocks as slaves are involved in the processing stage, but they differ in the next steps. In the maximum parallelization approach, each slave further divides the image in blocks whose size can be directly processed by the core reduction algorithm (_pixels_block). Then, partial endmembers are extracted from each of these blocks. The whole set of partial endmembers are then sent back to the master, which regroups them before sending new artificial image blocks to the slaves for another round of endmember extraction. This procedure continues until one block remains and all endmembers are finally obtained. In the minimum data transactions approach, on the other hand, each slave performs a local reduction on its own, only sending back to the master the reduced endmembers contained in the corresponding input subimage. The master then performs a final reduction round to obtain the actual endmembers present in the original hyperspectral image. \begin{table}
\begin{tabular}{c c c} \hline \hline  & **Implementation \#1** & **Implementation \#2** \\ \hline
**Precision** & Single—32 bits & Half—16 bits \\
**Optimization** & Automatic (directives) & Automatic (directives) + Manual (code) \\ \hline
**Latency (cycles)** & 200331—1 endmember & 50917—1 endmember \\  & 1588512—32 endmembers & 384509—32 endmembers \\ \hline \hline \end{tabular}
\end{table} 
Table 6: Accelerator latency: single-precision versus half-precision floating-point implementations.