并行编译器与双四元数乘法算法解析
1. TRACO 并行编译器
TRACO 是一款源到源的编译器,它能够从 C/C++ 语言的循环中提取粗粒度和细粒度的并行性。该编译器基于描述循环中所有依赖关系的传递闭包来实现并行化算法,并生成可编译的并行 OpenMP C/C++ 或 OpenACC C/C++ 代码。
在不同编译器对 NPB 和 Polybench 循环的并行化数量方面,有如下数据:
| 基准测试 | 并行性类型 | TRACO | Pluto | Par4All | Cetus | ICC |
| — | — | — | — | — | — | — |
| NAS | 无同步 | 109 | 35 | 79 | 107 | 45 |
| NAS | 细粒度 | 22 | 7 | 25 | 19 | 9 |
| NAS | 总计 | 131 | 42 | 104 | 126 | 56 |
| Polybench | 无同步 | 30 | 29 | 30 | 29 | 28 |
| Polybench | 细粒度 | 15 | 10 | 10 | 8 | 9 |
| Polybench | 总计 | 45 | 39 | 39 | 38 | 37 |
从表格数据可以看出,TRACO 在 NAS 基准测试的无同步和细粒度并行化方面都有不错的表现,尤其是在无同步并行化中数量较多。这表明 TRACO 在处理不同类型的并行性时具有一定的优势。
2. 双四元数乘法算法
在数据处理和计算机科学领域,超复数的应用越来越广泛,而双四元数乘法是超复数代数中最耗时的运算之一。传