| Algorithm 1. Finding Optimal Machine Parameters. |
| given the environment parameter |
| papp← application's parallelism |
| set the default parameters |
| f ← maximum frequency |
| n ← 1 core |
| do { |
| calculate E(f, n, papp) |
| if (n_next is not last level) { |
| n_next ← next increased level |
| calculate E(f, n_next, papp)} |
| if (f_next is not last level) { |
| f_next← next decreased level |
| calculate E(f_next, n, papp)} |
| if (E(f, n_next, papp)<E(f, n, papp)) n←n_next |
| if (E(f_next, n, papp)<E(f, n_next, papp)) f←f_next |
| } while ((E(f, n, papp)<E(f, n_next, papp) AND E(f, n, papp)<E(f_next, n, papp)) |
| f_opt←f // found optimal frequency |
| n_opt←n// found optimal cores |