CN112860228B - 一种本征值求解方法、装置、计算机设备及存储介质 - Google Patents

一种本征值求解方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112860228B
CN112860228B CN202110176464.8A CN202110176464A CN112860228B CN 112860228 B CN112860228 B CN 112860228B CN 202110176464 A CN202110176464 A CN 202110176464A CN 112860228 B CN112860228 B CN 112860228B
Authority
CN
China
Prior art keywords
elpa
vasp
eigenvalue
calling
solver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110176464.8A
Other languages
English (en)
Other versions
CN112860228A (zh
Inventor
王倩
刘羽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yingxin Computer Technology Co Ltd
Original Assignee
Shandong Yingxin Computer Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yingxin Computer Technology Co Ltd filed Critical Shandong Yingxin Computer Technology Co Ltd
Priority to CN202110176464.8A priority Critical patent/CN112860228B/zh
Publication of CN112860228A publication Critical patent/CN112860228A/zh
Application granted granted Critical
Publication of CN112860228B publication Critical patent/CN112860228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种本征值求解方法、装置、计算机设备及存储介质。所述方法包括:在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;将VASP的变量参数传递至ELPA,并基于变量参数建立ELPA与VASP的通讯;将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;若本征值求解任务处理完成,则结束VASP对ELPA的调用。本发明的方案实现了VASP软件与第三方数学库ELPA软件的调用,使得最消耗计算机时的本征值求解过程可以利用ELPA的求解器处理,达到了对于VASP软件进行了性能优化的目的,利用更高效的本征值求解器极大的提高了VASP软件的计算性能,以及软件扩展性。

Description

一种本征值求解方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种本征值求解方法、装置、计算机设备及存储介质。
背景技术
材料科学领域的研究方法可以分为以下四个发展阶段:实验测试、理论模型构建与推导、基于HPC的计算模拟以及利用机器学习结合数据挖掘的方法进行材料研究。其中,第三阶段,基于第一性原理计算的密度泛函理论(DFT)目前仍然是材料科学领域研究的重要技术手段。目前市面上有多款开源或者是商业软件用于解决以上科学问题,比如VASP(Eigenvalue SoLvers for Petaflop-Application),CP2K,Quantum Espresso,Siesta等等软件。其中,VASP软件是一款通过近似求解薛定谔方程来得到研究体系的基态能量,从而得到一系列的基态性质的基于第一性原理计算的商用软件,也是计算材料科学领域应用最为广泛的软件之一。目前全球绝大多数超算中心都安装了VASP软件,据统计,VASP软件的作业机时占用全球总机时的12-20%,但由于其类似于Linpack软件,是重型浮点计算密集型应用,因此实际上其耗电量所占比例高达30-50%。
从物理上来看,VASP软件依赖于密度泛函理论,可以进一步将求解体系的薛定谔方程,近似为求解Kohn-Sham方程,简单来说就是将求解整个体系的能量本征值问题简化为求解一系列单电子的本征函数和本征。并且在Kohn-Sham理论中,仅仅需要得到最低能级的一些能量本征值和本征矢量即可,因为他们对应于电子的“占据轨道”。
从数学上来讲,这个过程其实是在求解一个复杂的线性方程组,求解过程本质上是矩阵对角化。然而由于哈密顿量本身依赖于需要被求解的电荷密度,所以一般采取自洽求解的方式处理Kohn-Sham方程。即便对于一个简单的体系也需要经过数十次的迭代过程,而规模大的计算模拟体系则需要成千上万次迭代计算。
从计算机角度来看,利用矩阵对角化求解本征值问题,一般计算量与体系规模呈三次方正比。因此如果利用VASP来计算大规模体系,计算量是非常可怕的,并且这部分会消耗绝大部分的计算时长。除此之外,如果将Kohn-Sham方程直接作为一个线性方程组在计算机中并行处理,由于算法限制,节点间需要非常密集的通讯操作。特别是在具有上千个计算节点,上万个计算核心的大规模并行计算机系统上,求解矩阵本征值问题中不可避免的数据通讯会严重影响计算性能的提升。以上两方面可以说是VASP软件目前的主要性能瓶颈,因此急需好的优化策略来提高其计算性能。
发明内容
有鉴于此,有必要针对本征值求解任务过多占用VASP软件计算资源的问题提供一种本征值求解方法、装置、计算机设备及存储介质。
根据本发明的第一方面,提供了一种本征值求解方法,所述方法包括:
在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
若所述本征值求解任务处理完成,则结束VASP对ELPA的调用。
在其中一个实施例中,所述在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化的步骤包括:
在VASP的scala.F模块的开始位置中声明调用ELPA的Fortran模块;
在VASP中定义ELPA实例;
查询ELPA的头文件以得到ELPA版本号;
基于所述ELPA版本号在VASP的scala.F模块的INIT_scala_DESC子程序中通过elpa_init函数对ELPA进行初始化;
调用ELPA的elpa_allocate函数将定义的ELPA实例分配给ELPA。
在其中一个实施例中,所述将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯的步骤包括:
获取VASP中需要传递的变量参数,并调用ELPA的set函数配置所述需要传递的变量参数;
基于所述需要传递的变量参数和ELPA的set函数建立通讯;
判断所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度是否相同;
若所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度不同,则终止计算。
在其中一个实施例中,所述将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理的步骤包括:
配置并调取ELPA的求解器以得到目标求解器;
配置并调用所述目标求解器的kernel函数;
获取VASP的本征值求解任务;
将所述本征值求解任务的目标参数传递给所述ELPA的eigenvectors函数,其中,目标参数包括实际计算的矩阵,输出的本征值以及对角化后的矩阵;
调用述ELPA的eigenvectors函数以对所述目标参数进行标准本征值求解。
在其中一个实施例中,所述若所述本征值求解任务处理完成,则结束VASP对ELPA的调用的步骤包括:
在VASP的结束位置调用ELPA的elpa_allocated函数销毁定义ELPA实例;
调用ELPA的elpa_uninit函数结束对ELPA的调用。
在其中一个实施例中,所述方法还包括:
对ELPA进行编译以生成动态库,并记录ELPA的头文件路径;
基于ELPA的头文件路径对VASP进行参数调整,并对调整参数后的VASP进行编译。
在其中一个实施例中,所述方法还包括:
为编译后的VASP添加预设控制参数,以使编译后的VASP通过所述预设控制参数启动调用ELPA。
根据本发明的第二方面,提供了一种本征值求解装置,所述装置包括:
初始化模块,用于在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
通信建立模块,用于将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
求解模块,用于将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
结束调用模块,用于在所述本征值求解任务处理完成时,则结束VASP对ELPA的调用。
根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:
至少一个处理器;以及
存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的本征值求解方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的分布式系统的本征值求解方法。
上述一种本征值求解方法,首先通过在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;然后将VASP的变量参数传递至ELPA,并基于变量参数建立ELPA与VASP的通讯;从而将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;最后在本征值求解任务处理完成时则结束VASP对ELPA的调用,实现了VASP与第三方数学库ELPA的调用,使得最消耗计算机时的本征值求解过程可以利用ELPA的求解器处理,达到了对于VASP进行了性能优化的目的,利用更高效的本征值求解器极大的提高了VASP的计算性能,以及扩展性,同时该方法还有效降低算例的运行时间,极大的节约了科研人员的研究时间成本,并且对超算集群的越来越重视的“绿色环保”理念做出了巨大的贡献。
此外,本发明还提供了一种本征值求解装置、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明一个实施例中提供的一种本征值求解方法的流程示意图;
图2为本发明另一个实施例提供的VASP与ELPA接口流程示意图;
图3为本发明另一个实施例提供的一种本征值求解装置的结构示意图;
图4为本发明另一个实施例中计算机设备的内部结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
对于本征值问题求解,目前存在多种优化策略。其中,ELPA是一个具有高扩展性,计算效率极高,用来直接求解稠密矩阵本征值问题的库函数。ELPA是在ScaLAPACK(LinearAlgebra PACKage线性数学库)某些算法的基础上优化改写的,两者底层通讯均依赖BLACS程序。但与ScaLAPACK相比,ELPA具有以下显著的优点:
1.利用两步法约化矩阵,好处在于可以将BLAS2的矩阵-矢量操作转化为BLAS3的矩阵-矩阵操作,极大的提高了计算强度,更有效利用计算资源。
2.动态的2D数据格式在不引起巨大的负载不均衡的前提下,有效降低通讯量。除此之外,精确的缓存块设置恶意有效降低Householder转化中计算开销。这两种方法合起来会极大提高并行效率,减少计算量。
3.D&C本身就是具有速度快,准确性高的处理三对角线矩阵的算法,但是只能计算全部的本征值,优化后可以直接降低计算量只计算需要的部分本征值。
ELPA目前已经成功运用在许多材料科学领域以及分子动力学的计算软件中,比如Gromacs,FHI-aims,Quantum Espresso,Wien2K等,但仍然未能在VASP中实现。因此基于以上考虑,我们发明了一种接口方法,实现了VASP对于ELPA求解器函数的任意调用,利用ELPA软件对于VASP中的本征值求解过程进行优化,提高VASP软件的计算性能。
在一个实施例中,请参照图1所示,本发明提供了一种本征值求解方法,所述方法包括:
S100,在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
S200,将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
S300,将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
S400,若所述本征值求解任务处理完成,则结束VASP对ELPA的调用。
上述一种本征值求解方法,首先通过在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;然后将VASP的变量参数传递至ELPA,并基于变量参数建立ELPA与VASP的通讯;从而将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;最后在本征值求解任务处理完成时则结束VASP对ELPA的调用,实现了VASP软件与第三方数学库ELPA软件的调用,使得最消耗计算机时的本征值求解过程可以利用ELPA的求解器处理,达到了对于VASP软件进行了性能优化的目的,利用更高效的本征值求解器极大的提高了VASP软件的计算性能,以及软件扩展性,同时该方法还有效降低算例的运行时间,极大的节约了科研人员的研究时间成本,并且对超算集群的越来越重视的“绿色环保”理念做出了巨大的贡献。
在又一个实施例中请参照图2所示,图2示出了VASP与ELPA接口流程示意图,为了实现ELPA库函数在VASP中的正确调用一共包含三大模块:接口包装模块,主要在代码级别实现VASP中调用ELPA;软件安装编译模块,主要实现ELPA库函数在VASP可执行程序的嵌入,以及接口调用模块,通过设置必要的参数实现算例实际运行过程中对于ELPA的调用,前述步骤S100具体包括:
S110,在VASP软件scala.F模块的开始位置中声明调用ELPA软件的Fortran模块;该步骤具体实施代码如下:
#ifdef ELPA
USE iso_c_binding
USE elpa
S120,在VASP软件中定义ELPA实例;举例来说可定义一个名称为fancy的ELPA实例,添加如下代码段到合适位置,具体可采用如下代码声明实例fancy:CLASS(elpa_t),pointer::fancy
S130,查询ELPA软件的头文件以得到ELPA软件版本号;该步骤具体实施代码如下:
#ifdefine ELPA_API_VERSION 20200417
#ifdefine ELPA_AUTOYUNE_API_VERSION 20200417
#20200417即为ELPA代码的头文件elpa_version.h中查询当前elpa的具体版本号
S140,基于所述ELPA软件版本号在VASP软件scala.F模块的INIT_scala_DESC子程序中通过elpa_init函数对ELPA软件进行初始化;该步骤具体实施代码如下:
序INIT_scala_DESC中利用elpa_init函数进行elpa初始化,其中传递的参数必须与查询版本号一致
Error stop"ELPA API version not supported"
end if
S150,调用ELPA软件的elpa_allocate函数将定义的ELPA实例分配给ELPA软件。具体可采用如下代码分配fancy实例:fancy=>elpa_allocate()。
在又一个实施例中,前述步骤S200具体包括以下子步骤:
S210,获取VASP软件中需要传递的变量参数,并调用ELPA软件的set函数配置所述需要传递的变量参数;该步骤具体实施代码如下:
call fancy%set("na",N,success)
call fancy%set("nev",N,success)
call fancy%set("local_nrows",GSD%NP,success)
call fancy%set("local_ncols",GSD%NQ,success)
call fancy%set("nblk",BN,success)
call fancy%set("mpi_comm_parent",COMM%MPI,success)
call fancy%set("process row",GSD%MYRPW,success)
call fancy%set("process col",GSD%MYRPW,success)
需要说明的是,加粗部分的代码均代表参数名称,剩余代码代表需要实际传递的变量名,以上所有参数的含义说明如下:
na是指所处理的矩阵大小,这里值为N;
nev是指需要处理的本征值个数,这里值为N;
local_nrows和local_ncols分别为分块后矩阵的行与列数目,其值分别为NP和NQ,传递给指针GSD;
nblk是指计算中用到的kernel函数所需要的block值,也可以理解为分块大小,这里值为NB=16;
mpi_comm_parent是指全局MPI通讯子,这里值为COMM%MPI_COMM;
process row和process col分别是指当前进程的行与列标号,其值分别为GSD%MYROW,GSD%MYCOL。
S220,基于所述需要传递的变量参数和ELPA软件的set函数建立通讯;该步骤具体实施代码如下:success=fancy%setup()。
S230,判断所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度是否相同;
S240,若所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度不同,则终止计算。该步骤具体实施代码如下:success=fancy%setup()。
在又一个实施例中,前述步骤S300具体包括以下子步骤:
S310,配置并调取ELPA软件的求解器以得到目标求解器;
S320配置并调用所述目标求解器的kernel函数;
S330获取VASP软件的本征值求解任务;
S340将所述本征值求解任务的目标参数传递给所述ELPA软件eigenvectors函数,其中,目标参数包括实际计算的矩阵,输出的本征值以及对角化后的矩阵;
S340调用述ELPA软件的eigenvectors函数以对所述目标参数进行标准本征值求解。
举例来说,选取并调用elpa的eigenvectors函数的代码如下:
在又一个实施例中,前述步骤S400具体包括以下子步骤:
S410,在VASP软件的结束位置调用ELPA软件的elpa_allocated函数销毁定义ELPA实例;
S420,调用ELPA软件的elpa_uninit函数结束对ELPA软件的调用。
举例来说,结束elpa函数及其实例的代码如下:
call ealp_deallocate(fancy,success)
call elpa_uninit()
在又一个实施例中,本发明方法还包括:
S510,对ELPA软件进行编译以生成动态库,并记录ELPA软件的头文件路径;其中,动态库为libelpa.so。
S520,基于ELPA软件的头文件路径对VASP软件进行参数调整,并对调整参数后的VASP软件进行编译。
其中,为了重编译VASP软件需要对VASP的makefile.include文件需要加入以下参数的调整:
(1)预编译选项添加:CPP_OPTIONS=-DscaLAPACK-DELPA;
(2)指定elpa库位置:-L/path to libelpa.so/-lelpa;
(3)指定elpa modules位置:-I/path to modules/modules;
(4)指定scalapack库以及blacs通讯库位置;
具体地编译VASP软件的代码如下:
在又一个实施例中,本发明方法还包括以下步:
S600,为编译后的VASP软件添加预设控制参数,以使编译后的VASP软件通过所述预设控制参数启动调用ELPA软件。具体地VASP运行参数的添加包括在VASP的控制参数中添加三个参数,来启动elpa在VASP中的调用,三个参数分别是:
LSCAAWARE=.TRUE.
LSCALU=.TRUE.
LELPA=.TRUE.
本发明方法的核心是通过修改VASP源代码,编译参数以及控制参数的设置,实现VASP软件与ELPA数学库的直接调用,具体包括:ELPA求解器在VASP代码的嵌入:通过求改VASP源代码,实现了ELPA初始化、传递VASP相关参数到ELPA函数的相应位置、求解器与kernal函数的设置与调用以及结束elpa函数及其实例的调用这一完整的过程;嵌入ELPA库的VASP软件安装编译:给出相应宏参数以及elpa设置,实现上述做过源代码修改的VASP的新版本编译;VASP运行调用ELPA:给出相应的INCAR参数设置,在实际运行中调用ELPA求解本征值问题。
在又一个实施例中,请参照图3所示,本发明还提供了一种本征值求解装置70,所述装置包括:
初始化模块71,用于在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
通信建立模块72,用于将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
求解模块73,用于将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
结束调用模块74,用于在所述本征值求解任务处理完成时,则结束VASP对ELPA的调用。
需要说明的是,关于本征值求解装置的具体限定可以参见上文中对本征值求解方法的限定,在此不再赘述。上述本征值求解装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的本征值求解方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (7)

1.一种本征值求解方法,其特征在于,所述方法包括:
在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
若所述本征值求解任务处理完成,则结束VASP对ELPA的调用;
其中,所述在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化的步骤包括:
在VASP的scala.F模块的开始位置中声明调用ELPA的Fortran模块;
在VASP中定义ELPA实例;
查询ELPA的头文件以得到ELPA版本号;
基于所述ELPA版本号在VASP的scala.F模块的INIT_scala_DESC子程序中通过elpa_init函数对ELPA进行初始化;
调用ELPA的elpa_allocate函数将定义的ELPA实例分配给ELPA;
其中,所述VASP的传递至ELPA的变量参数包括:na,nev,local_nrows,local_ncols,nblk,mpi_comm_parent,process row和process col,所述na是指所处理的矩阵大小,值为N;所述nev是指需要处理的本征值个数,值为N;所述local_nrows和local_ncols分别为分块后矩阵的行与列数目,其值分别为NP和NQ,传递给指针GSD;所述nblk是指计算中用到的kernel函数所需要的block值,值为NB=16;所述mpi_comm_parent是指全局MPI通讯子,值为COMM%MPI_COMM;所述process row和process col分别是指当前进程的行与列标号,值分别为GSD%MYROW,GSD%MYCOL;
所述方法还包括:
对ELPA进行编译以生成动态库,并记录ELPA的头文件路径;
基于ELPA的头文件路径对VASP进行参数调整,并对调整参数后的VASP进行编译;
为编译后的VASP添加预设控制参数,以使编译后的VASP通过所述预设控制参数启动调用ELPA,其中,VASP的控制参数中添加三个参数分别是LSCAAWARE=.TRUE.、LSCALU=.TRUE.、LELPA=.TRUE.。
2.根据权利要求1所述的方法,其特征在于,所述将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯的步骤包括:
获取VASP中需要传递的变量参数,并调用ELPA的set函数配置所述需要传递的变量参数;
基于所述需要传递的变量参数和ELPA的set函数建立通讯;
判断所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度是否相同;
若所述需要传递的变量参数的变量类型、维度与预设变量类型和预设维度不同,则终止计算。
3.根据权利要求2所述的方法,其特征在于,所述将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理的步骤包括:
配置并调取ELPA的求解器以得到目标求解器;
配置并调用所述目标求解器的kernel函数;
获取VASP的本征值求解任务;
将所述本征值求解任务的目标参数传递给所述ELPA的eigenvectors函数,其中,目标参数包括实际计算的矩阵,输出的本征值以及对角化后的矩阵;
调用述ELPA的eigenvectors函数以对所述目标参数进行标准本征值求解。
4.根据权利要求3所述的方法,其特征在于,所述若所述本征值求解任务处理完成,则结束VASP对ELPA的调用的步骤包括:
在VASP的结束位置调用ELPA的elpa_allocated函数销毁定义ELPA实例;
调用ELPA的elpa_uninit函数结束对ELPA的调用。
5.一种本征值求解装置,其特征在于,所述装置包括:
初始化模块,用于在VASP中添加调用ELPA的声明,并在VASP中对ELPA进行初始化;
通信建立模块,用于将VASP的变量参数传递至ELPA,并基于所述变量参数建立ELPA与VASP的通讯;
求解模块,用于将ELPA的求解器分配给VASP,并由VASP利用所分配的求解器对VASP中本征值求解任务进行处理;
结束调用模块,用于在所述本征值求解任务处理完成时,则结束VASP对ELPA的调用;
其中,所述初始化模块进一步用于:
在VASP的scala.F模块的开始位置中声明调用ELPA的Fortran模块;
在VASP中定义ELPA实例;
查询ELPA的头文件以得到ELPA版本号;
基于所述ELPA版本号在VASP的scala.F模块的INIT_scala_DESC子程序中通过elpa_init函数对ELPA进行初始化;
调用ELPA的elpa_allocate函数将定义的ELPA实例分配给ELPA;
其中,所述VASP的传递至ELPA的变量参数包括:na,nev,local_nrows,local_ncols,nblk,mpi_comm_parent,process row和process col,所述na是指所处理的矩阵大小,值为N;所述nev是指需要处理的本征值个数,值为N;所述local_nrows和local_ncols分别为分块后矩阵的行与列数目,其值分别为NP和NQ,传递给指针GSD;所述nblk是指计算中用到的kernel函数所需要的block值,值为NB=16;所述mpi_comm_parent是指全局MPI通讯子,值为COMM%MPI_COMM;所述process row和process col分别是指当前进程的行与列标号,值分别为GSD%MYROW,GSD%MYCOL;
所述装置还包括用于执行以下步骤的模块:
对ELPA进行编译以生成动态库,并记录ELPA的头文件路径;
基于ELPA的头文件路径对VASP进行参数调整,并对调整参数后的VASP进行编译;
为编译后的VASP添加预设控制参数,以使编译后的VASP通过所述预设控制参数启动调用ELPA,其中,其中,VASP的控制参数中添加三个参数分别是LSCAAWARE=.TRUE.、LSCALU=.TRUE.、LELPA=.TRUE.。
6.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器中运行的计算机程序,所述处理器执行所述程序时执行权利要求1-4任意一项所述的方法。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行权利要求1-4任意一项所述的方法。
CN202110176464.8A 2021-02-09 2021-02-09 一种本征值求解方法、装置、计算机设备及存储介质 Active CN112860228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110176464.8A CN112860228B (zh) 2021-02-09 2021-02-09 一种本征值求解方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110176464.8A CN112860228B (zh) 2021-02-09 2021-02-09 一种本征值求解方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112860228A CN112860228A (zh) 2021-05-28
CN112860228B true CN112860228B (zh) 2024-02-02

Family

ID=75989462

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110176464.8A Active CN112860228B (zh) 2021-02-09 2021-02-09 一种本征值求解方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112860228B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542968A (zh) * 2018-11-21 2019-03-29 成都材智科技有限公司 一种基于vasp软件计算数据处理方法与装置
CN111580976A (zh) * 2020-05-09 2020-08-25 苏州浪潮智能科技有限公司 一种vasp的资源调用方法、系统、设备以及介质
CN111857746A (zh) * 2020-06-24 2020-10-30 苏州浪潮智能科技有限公司 一种实现vasp软件在不同超算集群的通用安装方法
CN112015440A (zh) * 2020-09-25 2020-12-01 苏州浪潮智能科技有限公司 一种分子动力学软件的安装方法、装置、设备及可读介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1577822A1 (en) * 2004-03-15 2005-09-21 Avant-Garde Material Simulation SARL Method for energy ranking of molecular crystals using DFT calculations and empirical van der Waals potentials
US9009009B2 (en) * 2011-06-27 2015-04-14 The Research Foundation For The State University Of New York Method for predicting optimized crystal structures
US9881111B2 (en) * 2013-09-26 2018-01-30 Synopsys, Inc. Simulation scaling with DFT and non-DFT
US11482732B2 (en) * 2018-09-28 2022-10-25 The Regents Of The University Of Michigan Systems and methods for improved solid-state electrolytes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542968A (zh) * 2018-11-21 2019-03-29 成都材智科技有限公司 一种基于vasp软件计算数据处理方法与装置
CN111580976A (zh) * 2020-05-09 2020-08-25 苏州浪潮智能科技有限公司 一种vasp的资源调用方法、系统、设备以及介质
CN111857746A (zh) * 2020-06-24 2020-10-30 苏州浪潮智能科技有限公司 一种实现vasp软件在不同超算集群的通用安装方法
CN112015440A (zh) * 2020-09-25 2020-12-01 苏州浪潮智能科技有限公司 一种分子动力学软件的安装方法、装置、设备及可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
The ELPA Library—Scalable Parallel Eigenvalue Solutions for Electronic Structure Theory and Computational Science;Andreas Marek;Journal of Physics Condensed Matter;第26卷(第21期);第1-28页 *

Also Published As

Publication number Publication date
CN112860228A (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
Hoshino et al. CUDA vs OpenACC: Performance case studies with kernel benchmarks and a memory-bound CFD application
Yamato Study of parallel processing area extraction and data transfer number reduction for automatic GPU offloading of IoT applications
US11288050B2 (en) Method for acquiring executable file of heterogeneous computing system, method for running the heterogeneous computing system and related products
US9396033B2 (en) Method of executing parallel application on manycore cluster system and the manycore cluster system
CN111752571A (zh) 程序升级方法、装置、设备及存储介质
US20210073625A1 (en) Partitioning control dependency edge in computation graph
CN102004662A (zh) 嵌入式可裁剪式虚拟机
US11361050B2 (en) Assigning dependent matrix-vector multiplication operations to consecutive crossbars of a dot product engine
Al-Mouhamed et al. A review of CUDA optimization techniques and tools for structured grid computing
Liang et al. Romou: Rapidly generate high-performance tensor kernels for mobile gpus
Gropp Using node and socket information to implement MPI Cartesian topologies
CN112860228B (zh) 一种本征值求解方法、装置、计算机设备及存储介质
Moreno et al. Improving the performance and energy of non-dominated sorting for evolutionary multiobjective optimization on GPU/CPU platforms
US10095494B2 (en) Systems and methods for footprint based scheduling
CN113688982A (zh) 处理单元、相关装置和方法
Bandur et al. Code-generating VDM for embedded devices
Masliah et al. Metaprogramming dense linear algebra solvers applications to multi and many-core architectures
JP2022127619A (ja) ハードウェアアクセラレートされた命令の使用
Kourtis et al. Compiling neural networks for a computational memory accelerator
Kessler et al. Skeleton Programming for Portable Many‐Core Computing
Coelho Compilation of I/O communications for HPF
Ki et al. OpenMP-accelerated SWAT simulation using Intel C and FORTRAN compilers: development and benchmark
Buss et al. Design for interoperability in STAPL: pMatrices and linear algebra algorithms
Barack et al. Effectiveness of code refactoring techniques for energy consumption in a mobile environment
Belyaev et al. LuNA-ICLU compiler for automated generation of iterative fragmented programs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant