1
光合基金
GCC与HIPCC混合编译Kylin软件
2023-03-11 17:15:43
106

程序简介

Kylin软件是山东大学马海波教授团队开发的国产从头算量子化学计算软件。该软件支持多种量子化学计算方法,可进行大活性空间(超过100个轨道)强关联体系的精确能量求解。Kylin软件的特色是基于密度矩阵重正化群方法(Density Matrix Renormalization Group, DMRG)的一系列高精度量子化学方法,包括DMRG-CI,DMRG-FCI,DMRG-SCF,DMRG-ec-MRCI,DMRG-ENPT等。更多信息可访问官方主页:https://kylin-qc.com。

Kylin 软件的异构加速程序设计

Kylin软件中最核心的计算模块为基于矩阵乘积态(Matrix Product State, MPS)的密度矩阵重正化群(Density

Matrix Renormalization Group, DMRG)计算模块。该模块的核心计算部分为张量收缩(矩阵乘)计算,依靠线性代数库(如BLAS、MKL等)实现。

Kylin软件的异构加速主要基于实验室开发的异构计算的核函数及程序接口实现。Kylin软件的主程序部分依靠C++开发,通过调用相关的异构计算程序接口实现异构加速。

Kylin 软件的编译

由于Kylin软件的主程序部分功能依赖于C++17的filesystem,而HIPCC编译器目前尚未支持这一功能,因此无法用HIPCC编译主程序。所以我们采用GCC编译器与HIPCC编译器混合编译的方法实现Kylin软件的编译。HIPCC编译器负责编译异构计算核函数和程序接口生产异构加速库,GCC编译器负责编译主程序并链接生成可执行文件。

Kylin 软件的CMakeLists

Kylin软件依靠CMake工具实现编译安装。我们需要为异构加速库和主程序分别编写CMakeLists实现混合编译。

异构加速库部分的Cmakelists文件

通过该CMakeLists文件即可在src/gpu/路径下生成名为libkylin_gpu.a的库文件。

主程序的Cmakelists文件

我们使用变量USE_GPU来控制是否编译GPU版的Kylin软件。在编译时可以通过-DUSE_GPU= true来打开这一开关。通过指定所需的HIP库(即amdhip64 和 hipblas)的路径,并指定加速库,即可实现利用GCC编译链接生产可执行文件。

Cmake编译流程

mkdir build && cd build

cmake -DUSE_GPU=true ..

make -j

make install

全部评论(1)
只看楼主
暂无数据
--
楼主
Level.4
0 帖子
楼主热帖
暂无数据