论文部分内容阅读
当我们遇到某些复杂问题的时候,传统的数学建模或者实验技术不一定能解决,比如大尺度的自然现象、瞬态的物理过程、一些具有复杂边界的问题等。随着计算机的高速发展,人们开始通过计算机来解决这样的问题,且取得了显著的成绩,但是随着模型增大或问题的精细化,使得计算机模拟负担呈数量级的增长,因此提高计算效率非常关键。通过硅工艺来提高CPU的频率已经达到了瓶颈,想要通过提高CPU频率来增加运算速度显然很困难,因此人们瞄向了多核并行。Intel公司的多核处理器已经日趋成熟,还发明了应用于多核编程的TBB线程构建模块,通过线程构建模块,将大大提高某些程序的运行效率。1D3V粒子模拟软件BUMBLEBEE是一款描述激光和物质互作用的粒子模拟软件。由于它的运行时间长,且又是一款适合并行的软件,因此本文基于因特尔公司的TBB线程构建模块,将1D3V粒子模拟软件BUMBLEBEE的串行程序并行化,主要工作包括:1.对TBB产生的背景及其并行环境Intel Parallel Studio做了简单的介绍,通过对比其他的编程语言如MPI和Open MP,阐述了选择TBB线程构建模块的原因。2.对串行代码的数据结构做了介绍,包括各个模块的功能和模块之间的执行顺序,然后通过Intel Parallel Studio中自带的工具对串行代码的热点做了分析。3.对本文中需要用到的TBB模板做了详细介绍,包括循环并行模板parallel_for和任务调度器task模板,对TBB中的其他功能作了简要的介绍。4.详细的描述了并行的具体步骤,对并行过程中遇到的数据竞争问题做了分析,详细的描述了解决数据竞争的算法及其原理,展示了并行程序相对于串行程序的加速比以及并行程序的可扩展性,其中加速比在四核下接近于线性加速,可扩展性良好。5.对比了并行程序和串行程序的运行结果(运行结果包括场的变化、粒子位置的变化等),最终结果完全一致,验证了并行程序的正确性。最后分析了运行结果随时间的变化过程。