论文部分内容阅读
微波管CAD软件在进行全三维数值模拟时,需要处理巨大的数据量,模拟计算时间较长,因此对模拟软件的计算性能有很高的要求。本文的主要工作就是优化微波管三维电子光学系统CAD软件“电子光学模拟器”(Electron Optics Simulator,简称EOS)的计算性能。为优化程序的性能,需要了解程序的剖析技术、常用的程序优化技术、内存的优化使用、高速缓存的应用等。另外,程序优化应该具有针对性。在优化之前,首先应该掌握程序的性能瓶颈,即需要利用一定的手段和工具剖析程序,检测程序热点。所谓程序热点,就是指程序中总执行时间程序时间比例较高的几个函数或语句。通过分析EOS程序流程,并利用Microsoft Visual Studio 2005性能分析工具检测程序,找到了EOS程序的热点——在有限元网格中定位电子位置的算法。本文分别按广度优先搜索、深度优先搜素的方式设计了两个定位电子的算法,分别为按有限元网格层次遍历的扫描法和按方向定位的追踪法。同时也给出了这两种算法中用到的辅助算法。同时,对EOS中的其他重要部分也进行了优化,如计算电场电位的函数等。优化过程应用了基本的优化技术,如循环展开、内存的优化使用等,除此之外文中还介绍了大型稀疏矩阵的存储技术。优化之后,首先利用Microsoft Visual Studio 2005性能分析工具检测EOS程序的性能,对比优化前有了显著提高;为了验证优化的效果,用优化前后的EOS分别计算了几个模型,对比发现计算性能确实显著提高。目前多核计算机已经应用到日常科研及生活当中,如果能在EOS程序中实现并行编程,使其充分利用多核并行计算的优势,就能够在现有的条件下显著提高EOS的性能。因此本文介绍了并行计算机体系结构、并行编程模型、并行算法、并行计算性能评测等内容,同时比较了几种并行编程环境的优劣。通过比较发现,OpenMP相对适合在多核环境下实现共享存储的并行编程,并且比较容易掌握。经过测试发现,将简单、计算量大的循环利用OpenMP实现并行化可以得到理想的加速比。最终在EOS中尝试应用OpenMP对计算电子轨迹的过程实现了并行化,并测试得到了其并行效果。