## 5 Gaussian Mixture Model Modeling Using Data-Parallel Primitives
### Improvement of the Shared Memory Environment
\begin{table}
\begin{tabular}{l l l l} \hline \hline
**Computing Node** & **Dataset 1** & **Dataset 2** & **Dataset 3** \\ \hline
1-core CPU & 1 & 1 & 1 \\
2-core CPU & 1.988480932 & 1.993276194 & 1.985682702 \\
4-core CPU & 3.918993877 & 3.991065867 & 3.871235734 \\
8-core CPU & 7.615474127 & 7.840609266 & 7.441185576 \\
16-core CPU & 14.35827021 & 15.54666768 & 13.3

#### 6.2.2 Gmm

In this subsection, we divide the steps of the EM algorithm into five parts to analyze the execution time. They are:

* Time for the E-step. * Time to update the weights. * Time to update mean vectors. * Time to flatten the covariance matrix. * Time to update the covariance matrix. Since the number of iterations of the EM algorithm is not fixed, we report the execution time of each step on average for comparison. We can observe the changes in the execution time of these five different steps when the number of Gaussian components and the block size change. **Gaussian component**: Figure 17 shows the average execution time of three different datasets with different numbers of Gaussian components. In all datasets, each step requires more execution time when the number of Gaussian components increases. This is because the amount of calculation in each step is positively correlated with the number of Gaussian components in the EM algorithm. **Block size**: Figure 18 shows the changes in execution time of dataset 1 and dataset 2 when different block sizes are used. We can observe that a smaller block size setting requires a longer execution time in each dataset; this is because a smaller block size setting generates more blocks. Therefore, the total number of sets, S, in Algorithm 5 will increase and the execution time, except for E-step, will increase. Figure 16: The execution time of our proposed parallel histogram modeling algorithm. We run it for three datasets on a 16-core CPU under given parameter settings. Dataset 3 is an ensemble data so there is no block size to change. ## 7 Use Cases

In this use case, we are going to use a more complicated distribution representation to demonstrate our proposed algorithms. [PERSON] et al. [4] proposed a compact distribution-based representation for volume scientific datasets. Their approach subdivides volume data into multiple sub-blocks. The data values in a sub-block are decoupled into value distribution and location information. The value distribution of a sub-block is represented by a histogram. The location information is represented by 3-variant GMMs. If the number of histogram bins is \(B\), the sub-block should store \(B\) 3-variant GMMs. Each GMM describes the occurrence probability of data values that belong to a bin in the sub-block space. Figure 17: The execution time of GMM modeling if the number of Gaussian components is changed. The block size of **(a,b)** is fixed to 16. In the figures, orange, gray, yellow, blue, and green bars are the execution times of **E-step**, **mean vector updating**, **covariance matrix flattening**, and **covariance matrix updating**, respectively. Figure 18: We fix the number of Gaussian components to 4 and change the block size to conduct this experiment, using dataset1 and dataset2 on the CPU using 16 core. In the figures, orange, gray, yellow, blue, and green bars are the execution time of **E-step**, **mean vector updating**, **covariance matrix flattening**, and **covariance matrix updating**, respectively. Dataset 3 is an ensemble data so there is no block size to change. Each block's histogram and 3-variant GMMs can be combined using the Bayes rule to compute the value distribution at each grid point and perform arbitrary data analysis and visualization tasks. We use the proposed parallel histogram and GMM modeling algorithms to compute the distribution representation of a hurricane pressure dataset, Isabel. The spatial resolution of Isabel is 500 \(\times\) 500 \(\times\) 100, and the size of Isabel is 95 MB. We divide the dataset into sub-blocks, and the size of each sub-block is 16 \(\times\) 16 \(\times\) 16.