论文部分内容阅读
粒子沉降运动在自然界中是一种很常见的现象,而且这一运动现象也广泛存在于众多领域中,例如工业应用、生命科学、环境科学和医学科学等。因此,近年来对粒子沉降这一现象的研究引起了许多学者的关注。由于粒子沉降涉及复杂的计算,人们无法采用理论的方法将其求解,而实验的方法也受到了种种阻碍。随着数值计算方法的兴起,给粒子沉降现象的模拟带来了希望,而目前在流体力学领域应用比较多的数值模拟方法就是晶格玻尔兹曼方法(Lattice Boltzmann Method,LBM)。LBM是近年发展起来的一种新流体力学计算方法,它算法较为简单,又易于处理复杂边界,并且还具有天然的并行性,非常适合大规模的并行计算。因此被广泛用来数值模拟各种复杂流体力学问题。关于LBM,在本文的第二章有简要介绍。本文采用LBM方法建立了单粒子的粒子沉降二维动力学模型,利用所建模型数值模拟单粒子在流体中的二维沉降运动。通过运用LBM,目前对粒子沉降现象的研究已经有了很大的进展,但大多数仅仅只是实现对各种粒子沉降运动的模拟,却没有人考虑其模拟的效率问题。由于粒子沉降模型之复杂,数据量之大,当模型规模比较大时,模拟所耗时间就会相当长从而导致效率低下。在当今高速发展的社会,效率是一个很重要的因素。粒子沉降现象是可以被广泛运用的,因此对该模型的模拟进行加速,提高其效率非常有必要。本文的研究重点就是如何提高粒子沉降模拟效率。虽然LBM有着天然的并行性,但也只是相对于传统的数值模拟方法有了一些改进,为了使其模拟过程更加高效,本文采用了近年发展并迅速流行起来的方法——在CUDA架构下基于GPU的并行计算方法。在LBM方法模型的基础上,使用"CPU+GPU"异构模式,采用CUDA编写程序,成功实现了对流体的模拟。也就是将LBM的并行性与GPU的并行性完美结合,达到最佳效果。关于GPU和CUDA,在第三章有简要的介绍。本文在先用LBM的两个基本算例——Poisueille流和方腔流验证了基于GPU的并行计算方法的可行性和高效性,然后再在CUDA框架下设计并实现了粒子沉降运动在GPU上基于LBM的数值模拟的并行算法。在普通的个人计算机上,分别采用CPU和GPU进行模拟计算,实验结果证明在GPU上进行基于LBM的粒子沉降运动数值模拟的并行计算是完全可行的,其模拟结果与在CPU上进行模拟的结果完全一致,而且还可以获得非常可观的加速性能。虽然基于GPU的并行计算大大提高了程序运行效率,但我们并不满足于此,在此基础上还可以通过多种方法对其进行优化。本文采用第四章介绍的几种重要的CUDA程序优化方法——维度划分优化、存储器访问优化、指令流优化以及综合优化方法分别对基于GPU的粒子沉降模拟程序进行进一步的优化,实验结果证明优化后的程序运行效率有了进一步的提高。其中属综合优化效果最为明显,最终获得了71倍多的加速比。实现粒子沉降模型LBM模拟的加速,为其更广泛的应用于实际生活中奠定了基础,也推动了GPU通用并行计算技术应用于更多实际问题的发展进程。