Geant4是CERN开发的一个蒙特卡洛模拟软件包,已有近20年的发展历史,功能强大,在很多领域有广泛应用。
然而geant4的安装非常让人头疼,各种系统和包的依赖以及安装过程中的各种细节使得新用户在使用geant4的第一步上举步维艰。
之前最省力的方式是在http://geant4.in2p3.fr/ 这里下载打包好的虚拟机镜像,本人也一直在用这种方式工作了一年左右,性能总体可以接受。
最近由于需要将Geant4部署到实验室的服务器上,而本人想一次性解决geant4安装部署难的痛点,加上最近了解到了docker,就有了利用docker部署geant4的想法。
Docker是最近几年非常火热的部署软件,可以打包应用以及依赖包到一个可移植的容器中,因为其是系统层面的虚拟,即一个容器仅仅是系统下的一个进程,因而启动速度为秒甚至毫秒级别,而且轻量级的设计使得docker镜像大小极小。
基础镜像选择的是ubuntu 14.04,因为之前笔记本顺利安装成功的就是这个系统版本,参考之前总结的安装步骤,顺利安装上了qt library,geant4 10.01和root,通过docker commit生成了geant4的镜像,用docker save导出,经tar zcvf压缩后,得到仅1.9G的镜像压缩包!
Geant4+root Docker镜像包网盘地址:http://pan.baidu.com/s/1mhIJyxa
由于docker镜像本身并没有显卡驱动,因此软件都不能可视化,geant4和root都只能使用batch mode,root使用root -b使用batch mode。
一次安装,到处部署,这次安装后,以后在其他服务器上部署简直轻松愉悦,而且由于docker的轻量级,性能也比虚拟机镜像高,跟直接安装在服务器上几乎没有区别。
如果有geant4用户看到这篇文章,欢迎交流。最近在考虑把geant4代码适配到GPU上,进行并行计算,但是调研了下发现难度很大,国外有一个G4CU项目以及它的升级项目MPEXS,发邮件询问项目负责人,说这两个项目还在开发中,暂时不开源,因此也无法借力。
不知道国内可否有项目组已经成功把geant4代码并行化了?期待合作。
Geant4在GPU上的并行话是可能的,但目前没有一个高效的手段,运行起来效率并不高。