Research Article
Performance Optimization and Modeling of Fine-Grained Irregular Communication in UPC
Listing 8
The computational kernel of an existing 2D heat equation solver.
| #define idx(i, k) ((i) ∗ n + (k)) | | for (it = 1; it ≤ itmax; it++) { | | double∗phi = (double∗) xphi[MYTHREAD]; | | int i, k; | | /∗ communication per time step ∗/ | | halo_exchange_intrinsic(); | | /∗ computation per time step ∗/ | | for (i = 1; i < m − 1; i++) | | for (k = 1; k < n − 1; k++) | | phin[idx(i, k)] = ((phi[idx(i + 1, k)] + phi[idx(i − 1, k)] − 2 ∗ phi[idx(i, k)]) ∗ dy2i + (phi[idx(i, k + 1)] + phi[idx(i, k − 1)] − 2 ∗ phi[idx(i, k)]) ∗ dx2i) ∗ dt; | | /∗ copying the content of phin to phi, checking convergence etc. ∗/ | | // … | | } |
|