论文部分内容阅读
自1946年计算机问世以来,数值计算一直是计算机应用的主要领域之一,它已经广泛应用到人类生产与生活的各个方面,矩阵运算是数值计算最基本和经常使用的运算之一,它是数值计算的一个基础,提高矩阵运算的性能则显得更为重要。本文把矩阵运算与多核、并行联系起来,并分别从矩阵库的设计,矩阵库的并行化以及多核环境下矩阵库运算的优化三个方面阐述了矩阵库的实现,具体内容如下:
(1)矩阵库的设计先在完成功能、运算需求、可维护性、面向对象、并行化等方面确定了矩阵库的设计原则;然后结合矩阵的数学定义、C++的特点和以后程序扩充的需要的基础上,给出了矩阵库的组织结构,并在Microsoft VisualC++2008 Express Edition平台上完成矩阵库的设计方案,最后在文中给出矩阵行列式求值的示例。
(2)矩阵库的并行研究在分析现有的消息传递模型、数据并行模型、共享存储并行编程模型三种并行模型之后,通过比较重点介绍了一种面向共享内存的多处理器多线程并行程序语言-OpenMP,并对OpenMP指令、库函数和并行化的循环选取原则作了介绍。然后在Microsoft Visual C++2008 Express Edition平台上用OpenMP并行机制对设计好的矩阵库串行程序实施并行化。同时,给出了矩阵行列式求值的并行化处理示例。
(3)利用Intel VTune进行优化在介绍现有的一些优化工具之后,重点介绍了英特尔公司针对英特尔多核处理器开发的Intel VTune优化工具,然后在上述平台下用Intel VTune优化工具对并行处理后的矩阵库进行程序分析,采集大量分析数据,以得到各种因素对运算效率的影响,并对算法进一步分析和改进。
(4)根据本文给出的矩阵库的中的矩阵的构造、矩阵的加减乘除运算、矩阵相等、矩阵转置、判断矩阵对称、判断矩阵对称正定、一般矩阵的秩、求逆矩阵、求对称正定矩阵逆、求托伯利兹矩阵逆等运算,在现有的软硬件平台上完成了串行、并行、优化后不同方面的对比实验。
通过对矩阵各种基本操作的应用和对输出结果的分析,计算结果准确,程序基本达到矩阵基本运算的初衷;通过实例的运算比较,结果表明并行优化后的程序的性能有改善。