本发明属于量子计算,特别是一种多gpu模拟量子计算的方法及装置。
背景技术:
1、在量子计算领域,随着人们研究问题的复杂度逐渐增加,对量子计算机的需求也在日益递增。但物理量子计算机的实际制造难度大、制造成本高,并且现有量子计算机资源有限,难以满足实际的社会需求,因此根据量子计算原理采用gpu对量子计算机的实际计算过程进行模拟,用以解决量子计算机的需求难题,成为正在研究的一项关键技术。
2、但是,在量子计算过程中,随着量子比特数量的增加,叠加量子态的数量呈指数式增长,因此采用gpu进行模拟时需要存储的量子态数量和进行的操作数也呈指数式增长,而每个gpu同一时间并行的线程数以及gpu的内存都是有限的,因此限制了gpu能模拟的量子比特数目并且影响模拟效率,如何利用多gpu模拟量子计算,这是一个亟待解决的问题。
技术实现思路
1、本发明的目的是提供一种多gpu模拟量子计算的方法及装置,以解决现有技术中的不足,它能够提供一种结合gpu间数据传输性能动态规划量子态存储方案,提升复杂量子线路的计算性能。
2、本技术的一个实施例提供了一种多gpu模拟量子计算的方法,应用于分布式计算集群,所述计算集群包括终端服务器以及与所述终端服务器通信连接的多个gpu,所述方法包括:
3、接收终端服务器发送的待模拟量子线路,并确定待模拟量子线路的线路信息;
4、根据所述线路信息、多个gpu的硬件参数信息以及初始化多个gpu的状态信息,确定所述待模拟量子线路的gpu内存分配方案;
5、基于所述gpu内存分配方案,执行所述待模拟量子线路的计算,并发送模拟计算结果至所述终端服务器。
6、可选的,所述接收终端服务器发送的待模拟量子线路,并确定待模拟量子线路的线路信息,包括:
7、根据待模拟量子线路,获得量子比特数信息;
8、根据所述量子比特数信息,计算利用预设方式所需模拟的量子态个数信息和最大量子态操作数信息,其中,所述预设方式包括:全振幅模拟计算方式、部分振幅模拟计算方式和单振幅模拟计算方式中的一种。
9、可选的,所述初始化多个gpu的状态信息,包括:
10、获得所述多个gpu的节点数、每个节点的gpu数量、每个gpu核心数以及每个gpu的最大并行线程数;
11、通信连接各个gpu,并获取每个gpu的当前空闲内存以及各个gpu之间的数据传输速率。
12、可选的,所述根据所述线路信息、多个gpu的硬件参数信息以及初始化多个gpu的状态信息,确定所述待模拟量子线路的gpu内存分配方案,包括:
13、判断是否存在目标gpu,其中,所述目标gpu的最大并行线程数不小于所述最大量子态操作数;
14、若否,则进一步判断所述计算集群中多个gpu的当前空闲内存是否可以实现所有量子态模拟;
15、若所述计算集群中多个gpu的当前空闲内存可以实现所述所有量子态模拟,则分别计算所述所有量子态平均分配在每个gpu空闲内存的第一执行时间以及所述所有量子态优先占满单个gpu空闲内存后再占用其他gpu空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述gpu之间的数据传输速率、所述最大并行线程数、所述硬件参数信息以及所述量子态个数确定;
16、根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子线路的gpu内存分配方案。
17、可选的,所述方法还包括:
18、若存在所述目标gpu,则判断所述目标gpu的当前空闲内存是否可以实现所述所有量子态模拟;
19、若是,则将所述所有量子态存储于所述目标gpu的空闲内存中,以实现多gpu模拟量子计算。
20、可选的,所述方法还包括:
21、若所述目标gpu的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中多个gpu的当前空闲内存是否可以实现所有量子态模拟的步骤。
22、可选的,所述方法还包括:
23、若所述计算集群中多个gpu的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
24、可选的,所述根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子线路的gpu内存分配方案,包括:
25、若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中多个gpu的当前空闲内存;
26、若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个gpu空闲内存后再占用其他gpu。
27、本技术的又一实施例提供了一种多gpu模拟量子计算的装置,应用于分布式计算集群,所述计算集群包括终端服务器以及与所述终端服务器通信连接的多个gpu,所述装置包括:
28、接收模块,用于接收终端服务器发送的待模拟量子线路,并确定待模拟量子线路的线路信息,其中,所述线路信息包括最大量子态操作数信息;
29、确定模块,用于根据所述线路信息、多个gpu的硬件参数信息以及初始化多个gpu的状态信息,确定所述待模拟量子线路的gpu内存分配方案;
30、发送模块,用于基于所述gpu内存分配方案,执行所述待模拟量子线路的计算,并发送模拟计算结果至所述终端服务器。
31、可选的,所述接收模块,包括:
32、第一获得单元,用于根据待模拟量子线路,获得量子比特数信息;
33、第一计算单元,用于根据所述量子比特数信息,计算利用预设方式所需模拟的量子态个数信息和最大量子态操作数信息,其中,所述预设方式包括:全振幅模拟计算方式、部分振幅模拟计算方式和单振幅模拟计算方式中的一种。
34、可选的,所述确定模块,包括:
35、第二获得单元,用于获得所述多个gpu的节点数、每个节点的gpu数量、每个gpu核心数以及每个gpu的最大并行线程数;
36、第三获得单元,用于通信连接各个gpu,并获取每个gpu的当前空闲内存以及各个gpu之间的数据传输速率。
37、可选的,所述确定模块,包括:
38、第一判断单元,用于判断是否存在目标gpu,其中,所述目标gpu的最大并行线程数不小于所述最大量子态操作数;
39、第二判断单元,用于若否,则进一步判断所述计算集群中多个gpu的当前空闲内存是否可以实现所有量子态模拟;
40、第二计算单元,用于若所述计算集群中多个gpu的当前空闲内存可以实现所述所有量子态模拟,则分别计算所述所有量子态平均分配在每个gpu空闲内存的第一执行时间以及所述所有量子态优先占满单个gpu空闲内存后再占用其他gpu空闲内存的第二执行时间,其中,所述第一执行时间和第二执行时间根据所述gpu之间的数据传输速率、所述最大并行线程数、所述硬件参数信息以及所述量子态个数确定;
41、第一确定单元,用于根据所述第一执行时间与所述第二执行时间,确定所述待模拟量子线路的gpu内存分配方案。
42、可选的,所述确定模块,还包括:
43、第三判断单元,用于若存在所述目标gpu,则判断所述目标gpu的当前空闲内存是否可以实现所述所有量子态模拟;
44、第一存储单元,用于若是,则将所述所有量子态存储于所述目标gpu的空闲内存中,以实现多gpu模拟量子计算。
45、可选的,所述确定模块,还包括:
46、返回单元,用于若所述目标gpu的当前空闲内存不可以实现所述所有量子态模拟,则继续执行所述进一步判断所述计算集群中多个gpu的当前空闲内存是否可以实现所有量子态模拟的步骤。
47、可选的,所述确定模块,还包括:
48、输出单元,用于若所述计算集群中多个gpu的当前空闲内存不可以实现所有量子态模拟,则输出并显示错误提示信息。
49、可选的,所述第一确定单元,包括:
50、均分子单元,用于若所述第一执行时间不大于所述第二执行时间,则将所述所有量子态平均分配在所述计算集群中多个gpu的当前空闲内存;
51、优先占满子单元,用于若所述第一执行时间大于所述第二执行时间,则将所述所有量子态优先占满单个gpu空闲内存后再占用其他gpu。
52、本技术的又一实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
53、本技术的又一实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。
54、与现有技术相比,本发明首先接收终端服务器发送的待模拟量子线路,并确定待模拟量子线路的线路信息,根据线路信息、多个gpu的硬件参数信息以及初始化多个gpu的状态信息,确定待模拟量子线路的gpu内存分配方案,基于gpu内存分配方案,执行待模拟量子线路的计算,并发送模拟计算结果至终端服务器,它能够利用多gpu模拟量子计算,提供一种结合gpu间数据传输性能动态规划量子态内存存储方案,以实现量子计算的模拟。