数值算法与分布式文件系统性能分析
1. 异步语言与数值算法系统实验
在数值算法的研究中,采用了特定配置的计算机作为测试平台,其配置如下:Athlon 64 X2 3600+ (2*256 L2) / 1024 DDR2 / Windows Vista Home Premium (32 bit) / Visual C++ 9.0 (with options /O2 and /arch:SSE2)。所有任务均用 C++ 实现,矩阵元素为双精度实数。
1.1 矩阵乘法
矩阵乘法算法的碎片化处理在相关研究中有详细描述。测试了不同的方法,结果如下表所示:
| 方法/矩阵大小 | 512x512 | 1024x1024 | 2048x2048 |
| — | — | — | — |
| 标准解决方案 | 3.26 | 45.64 | 499.22 |
| AMD Core Math Library 4.2.0 | 0.09 | 0.73 | 5.67 |
| 碎片化方法(标准解决方案) | 0.22 | 1.78 | 14.52 |
| 碎片化方法(ACML) | 0.16 | 1.00 | 7.89 |
碎片化版本的矩阵乘法算法比标准解决方案快约 25 倍,因为碎片化方法更有效地利用了缓存内存。不过,它比 ACML 慢约 2.5 倍,因为 ACML 是专门为 AMD 进行底层优化的。但如果在代码片段中使用 “dgemm”,差异可缩小至 40%。
1.2 LU 分解
LU 分解算法可按以下方式碎片化:源矩阵由数据片段构建,创建四个代码片段。第一个处理主对角线上的数据