1.一种基于GPU的并行进化算法的可靠性评估方法,其特征在于包括如下步骤:
S01:设置测试问题维度和可靠性阈值参数;
S02:在测试问题上独立重复采样并评估可靠性
对测试问题集中的每个问题和维度使用不同的随机数发生种子独立重复运行基于CPU和GPU的进化算法各N次;收集两者最终的最优解;根据可靠性计算模型和可靠性阈值参数,判断基于GPU的进化算法是否可靠;
所述的可靠性计算模型为:
其中r是待求的可靠性指标, 和
分别是基于GPU和CPU在维度为d的测试函数f上进行次独立重复试验
的N个求解结果集合; 或 为基于CPU或者GPU算法的第i次的求解结果,D为所有待测的问题维度,F为所有待测问题;card(D)和card(F)分别表示测试的总的维度和问题数目;W(A,B)为基于统计的误差计算方式,其计算公式如下:使用Wilcoxon非参数检验对A,B进行统计相似性检验;当p<0.05,A和B统计不相似,即A和B显著不同;否则A和B统计上相似,即A和B没有明显差别;
若r>R,则算法的可靠性得到验证,反之则算法无法达到要求的可靠性,R为可靠性阈值;
S03:若计算的可靠性高于可靠性阈值参数则可靠性得到验证;否则进行误差校准操作,若经任何一个误差校准操作后,计算的可靠性高于可靠性阈值参数,则可靠性得到验证,结束流程;若所有误差校准操作执行以后仍然无法验证可靠性,则待测的基于GPU的进化算法的可靠性无法得到验证。
2.根据权利要求1所述的基于GPU的并行进化算法的可靠性评估方法,其特征在于,所述的误差校准操作有多个,按优先级先后顺序以此进行执行;且每个误差校准操作执行完毕后均返回步骤S02进行可靠性验证;仅当前一误差校准操作执行后,可靠性验证仍未通过时,再执行下一个误差校准操作;任何一个误差校准操作后,若计算的可靠性高于可靠性阈值参数,则可靠性得到验证,方法结束。
3.根据权利要求1所述的基于GPU的并行进化算法的可靠性评估方法,其特征在于,所述的误差校准操作依据执行的优先顺序分别为:消除随机数引起的误差、消除浮点精度引起的误差和消除NVCC编译器引起的误差。
4.根据权利要求3所述的基于GPU的并行进化算法的可靠性评估方法,其特征在于,所述的消除随机数引起的误差,具体为:判断并行进化算法是否采用了GPU特有的随机数发生器;若确实使用,则使用CPU标准的随机数发生器生成随机数数组并传输至GPU全局内存,在此之后,基于GPU的进化算法的所有随机数都来自该数组。
5.根据权利要求3所述的基于GPU的并行进化算法的可靠性评估方法,其特征在于,所述的消除浮点精度引起的误差,具体为:检查GPU代码是否使用了非双精度浮点的变量,或者不符合IEEE‑754浮点标准的运算操作符和数学函数;如存在这两类情况,则使用双精度浮点变量替换原变量,并使用符合IEEE‑754标准或精度更高的函数替换原始函数。
6.根据权利要求3所述的基于GPU的并行进化算法的可靠性评估方法,其特征在于,所述的消除NVCC编译器引起的误差,具体为:检查GPU代码是否在被NVCC编译时打开了CUDA编译器优化,若存在编译器优化,则关闭。