一种基于gpu的自适应领域禁忌搜索求解软硬件划分方法

文档序号:10489232阅读:210来源:国知局
一种基于gpu的自适应领域禁忌搜索求解软硬件划分方法
【专利摘要】本发明公开了一种基于GPU的自适应领域禁忌搜索求解软硬件划分方法,首先将软硬件划分领域中常用的禁忌搜索算法进行改造,使其计算过程与GPU的体系结构特征相匹配,从而为将算法移植至GPU进行准备。其次,为进一步提高算法的性能,本发明不仅给出了算法在GPU上的整体框架,而且还对算法在GPU上的具体执行做了优化。对比实验表明,本发明在求解质量和计算速度上都要优于已知工作。
【专利说明】
一种基于GPU的自适应领域禁忌搜索求解软硬件划分方法
技术领域
[0001] 本发明涉及软硬件协同设计技术领域,涉及一种软硬件划分方法,特别是涉及一 种基于GPU的自适应领域禁忌搜索求解软硬件划分方法。
【背景技术】
[0002] 现代嵌入式系统通常由硬件和软件组成。硬件主要指是面向特定应用的处理器, 具有执行速度快、功耗低等特点,但是成本较高;而软件执行速度慢,功耗高但是成本低。通 常将运行在目标嵌入式系统上的各计算任务表示成资源需求不一的节点,软硬件划分的目 的是在满足特定约束下,将各计算任务合理地映射到软件或硬件上,使得整个系统的性能 最优化。软硬件划分是软硬件协同设计中的关键步骤。
[0003] 软硬件划分是个NP完全问题。目前,求解软硬件划分问题的常用算法主要分为两 类,即精确求解算法和近似求解算法。精确求解算法主要用来处理小规模的软硬件划分问 题。当问题规模增大时,解的规模呈指数级增长,精确求解算法变得不可行,转而使用启发 式方法求解。
[0004] 求解软硬件划分问题的启发式方法分为专用启发式方法和通用启发式方法。专用 启发式方法分为硬件约束优先方法或软件约束优先方法。通用启发式方法主要指各类智能 搜索算法,如遗传算法、蚁群算法、粒子群优化方法、模拟退火方法、人工免疫算法、禁忌搜 索方法等以及这些方法的结合。这些智能优化算法具有以下特点:属于轨迹类或者种群类 算法,主要通过多次迭代来逼近求解目标;另外,在每次迭代时初始化一定数量的候选解, 通过对候选解的选择决定下次迭代的质量好坏。然而,当候选解数量过多时,会造成算法在 运行时间上的增加。当问题规模很大时,时间上的开销尤为明显。
[0005]这类算法的执行过程本身具有内在并行的特点。因此,很自然地对这些算法进行 并行化以加速问题的求解。但是,关于并行智能优化算法求解软硬件划分问题的工作很少, 已知的公开发表的相关工作仅包括并行遗传算法和并行混合粒子群优化算法来求解软硬 件划分问题。所用平台为多台个人PC组成的小规模集群。
[0006] 近年来,有很多的工作描述GPU加速的智能优化算法求解组合优化问题。受这些文 献的启发,本发明首次探索了在软硬件划分领域使用GPU来加速禁忌搜索求解划分的过 程。

【发明内容】

[0007] 本发明的目的是为了克服上述【背景技术】的不足之处,提供一种基于GPU的自适应 领域禁忌搜索求解软硬件划分方法。
[0008] 本发明所采用的技术方案是:一种基于GPU的自适应领域禁忌搜索求解软硬件划 分方法,其特征在于,包括以下步骤:
[0009] 步骤1:在主机端,获取软硬件划分的初始解以及相关信息;将初始解分别设置为 当前解和全局最优解;
[0010] 步骤2:在主机端将软硬件划分的任务图的数据表达方式进行转换;
[0011] 步骤3:设置参数;初始化主机端所需的存储空间;初始化GPU端所需的存储空间;
[0012 ] 步骤4:在主机端,将数据传输至GPU端,启动GPU端内核;
[0013] 步骤5:在设备端,通过内核计算出最优候选邻域并将结果传回主机端;
[0014] 步骤6:在主机端,更新禁忌表以及禁忌标示符;
[0015] 步骤7:在主机端,更新当前解以及全局最优解;
[0016] 步骤8:在主机端,判断是否满足停止准则;
[0017] 若否,则返回步骤4;
[0018]若是,则结束流程。
[0019] 作为优选,步骤1中所述初始解是指通过启发式方法或随机方法求得的待划分任 务图的硬件耗费;所述相关信息主要包括解向量、解向量的映射向量和初始解的软件耗费 以及通信耗费;所述解向量是和硬件耗费对应的由〇或者1组成的数组;所述解向量的映射 向量是由〇或者1组成的数组;主要保存任务图各节点被排序前的状态,用于后续的通信耗 费的计算。
[0020] 作为优选,步骤2中所述任务图的数据表达方式进行转换是指将任务图传输给GPU 前,需要将邻接表的表示方式转换为适合在GPU端进行运算的压缩的稀疏行格式 (Compressed Sparse Row:CSR)的表达方式。
[0021] 作为优选,步骤3中所述参数主要包括最大迭代周期数、连续未改进周期数、禁忌 表的长度、邻域的规模、候选邻域解集合中被选为当前解的邻域索引标识符、以及启动GPU 内核所需的线程块大小以及线程块的个数;
[0022] 所述主机端所需的存储空间包括禁忌表的存储空间,各个邻域候选解的禁忌状态 的存储空间,保存当前解生成的全部2翻转邻域候选解的索引、软件耗费、硬件耗费、通信耗 费的存储空间,最佳候选邻域的编号,软件耗费、硬件耗费、通信耗费的存储空间;
[0023] 所述GPU端所需的存储空间包括当前解向量和当前解的映射向量的存储空间,各 个邻域候选解的禁忌状态的存储空间,各个邻域候选解是否满足约束的状态标识符数组, 任务图的压缩的稀疏行格式的存储空间,当前解生成的全部2翻转邻域候选解的索引、软件 耗费、硬件耗费、通信耗费的存储空间,保存满足约束的可行邻域候选解的存储空间,最佳 候选邻域的编号、软件耗费、硬件耗费、通信耗费的存储空间。
[0024] 作为优选,步骤4中所述将数据传输至GPU端,传输的数据包括当前解的解向量、当 前解向量的映射、当前解的软件耗费、硬件耗费和通信耗费、全局最优解的硬件耗费、软硬 件划分的任务图、禁忌表;所述GPU端内核主要包括对2翻转邻域解的耗费计算内核、对满足 约束的可行邻域解的进行挑选内核,以及对可行的邻域解进行禁忌评价的内核。
[0025] 作为优选,步骤5中所述计算出最优候选邻域的过程包括以下子步骤:
[0026]步骤5.1:在GPU端,每个2翻转邻域为一个候选解;GPU并行地对每个候选解计算软 件耗费、硬件耗费和通信耗费;计算完成后,根据软件耗费与通信耗费之和是否满足约束评 价,将〇或者1写入状态标识符数组的对应位置中;其中,〇表示不满足约束;1表示满足约束; 同时将邻域的标示符、软件耗费、硬件耗费和通信耗费写入GHJ端申请的存储空间中;
[0027]步骤5.2:在GPU端,根据邻域状态标识符数组,通过并行Compaction算法,将状态 标示符数组中标号为1的邻域存入GHJ端满足约束的可行邻域候选解的存储空间中;
[0028] 步骤5.3:在GPU端,通过禁忌表,并行地判断每个可行解是否在禁忌表里,若可行 解不在禁忌表中并且在所有2翻转可行解中具有最小硬件耗费,则为最佳邻域候选解;如果 可行邻域解在禁忌表中,但是其硬件耗费低于全局最优值,同样也被选择为最佳候选邻域。
[0029] 作为优选,步骤5中所述传回主机端的结果主要为最佳候选邻域的编号、软件耗 费、硬件耗费以及通信耗费。
[0030] 作为优选,步骤6中所述在主机端更新禁忌表的过程是基于循环队列的先进先出, 禁忌对象是当前解在上次迭代中的邻域标示符;更新禁忌标示符时,出队列的索引标号为 〇,同时进队列的索引标号为1。
[0031] 作为优选,步骤7中所述更新当前解以及全局最优解,是用本次迭代选出的最佳邻 域替代当前解,主要包括替换当前解的解向量、解向量的映射、硬件耗费、软件耗费、通信耗 费、当前解的标示符;如果最佳邻域的耗费优于全局最佳硬件耗费,同样更新全局硬件耗 费;当更新全局硬件耗费时,连续未改进周期数被清0。
[0032] 作为优选,步骤8中所述停止准则主要是指执行步骤4至步骤8的循环次数或者达 到了最大次数或者连续未改进周期数后,停止运算。
[0033]本发明与已有技术相比较,效果是积极且明显的:首先,本发明在算法的执行时间 上要低于目前已知的工作;其次,在求解质量上,也要优于已知的工作。
【附图说明】
[0034] 图1为本发明实施例的整体框架示意图;
[0035] 图2为本发明实施例的待划分任务图模型以及对应的压缩的稀疏行格式表达示意 图;
[0036] 图3为本发明实施例的候选解生成规则示意图;
[0037]图4为本发明实施例的compaction算法流程示意图。
【具体实施方式】
[0038] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发 明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不 用于限定本发明。
[0039] 附图1为本发明的主要框架。整个框架分为主机端和客户端,主机端包括CPU和内 存;客户端指GPU。主机端的任务是产生初始解;将初始解作为当前解传输给客户端;接受客 户端的最佳候选解;更新禁忌表和禁忌状态表;通过最佳候选解更新当前解和全局最优解; 对停止条件进行判断决定是否进行下一次运算过程。在客户端,通过当前解产生所有的2-翻转候选解,逻辑上,GPU并行地对所有的候选解计算硬件耗费、软件耗费和通信耗费;根据 约束条件排除不满足约束的候选解;根据禁忌状态表选择未禁忌的可行解,将其传输回主 机端。
[0040] 本实施例将待划分的任务图表示成无向图G(V,E)。其中,V= {V1,V2, . . .,vn},代表 待划分的任务节点集合。每个节点包含两个耗费,即节点划分为硬件时的耗费h(Vi)和划分 为软件时的耗费S(V 1)13E代表节点之间的边集合,边上的权值表示当两个相邻节点属于不 同的划分时,节点之间会产生相应的通信耗费c( Vl,Vj)。因此,P={VH,Vs}称为一个软硬件 划分,Vh和Vs满足VHnVS=0,V H U Vs = V。相应地,划分P的边集合定义为Ep = {(vi,v j): vi e VH,vj e VS或者Vi e Vs,Vj e Vh}。附图2中的右上图为一个简单的待划分任务图。图中节点包 含任务分别被划分为硬件或者软件时的执行耗费。边上的权值表示当连接的两个任务被划 分为硬件和软件或者软件和硬件时产生的通信耗费。
[0041] 划分P主要由3个耗费度量,即硬件耗费HP、软件耗费Sp以及通信耗费&。这3个耗费 定义如下:
[0042]
[0043] 其中:Iu表示节点i的硬件耗费(i = l,2...,n);Vl表示表示任务图中划分为硬件的 节点;W表示任务图中划分为软件的节点;Vh表示任务中的节点子集,该集合中的节点由硬 件执行;Vs表示任务中的节点子集,该集合中的节点由软件执行;Ep表示任务图中连接处于 两个不同划分集合的边集合;Hp表示处于硬件节点集合中所有节点的硬件耗费的总和;Sp表 示处于软件节点集合中所有节点的硬件耗费的总和;Cp表示任务图中连接处于两个不同划 分集合的边集合的所权值之和,即被划分任务图的总的通信耗费。
[0044] 通过上式,划分问题P定义如下:
[0045] 问题P:给定图G和耗费函数s,h,c和R 2 0。求在满足约束Sp+Cp SR下,使得硬件耗费 Hp最小的一个软硬件划分P。
[0046] 将划分P的解表示成η维向量X= {χι,Χ2, ...,χη}。分量Xi = I时,表示节点由软件执 行;X1 = O时,表示节点由硬件执行。C(X)表示整个系统的通信耗费。因此,问题P可以形式化 为如下最小化问题:
[0047]
[0048]具中,hi表不节点的使仵耗贾,Si表示节点的软件耗费。问题P的硬件耗费、软件耗 费、以及通信耗费的计算公式如下:
[0052] 问题P中,评价解是否满足约束的计算公式如下所示:
[0049]
[0050]
[0051]
[0053]
[0054] 本实施的系统平台为wind〇ws7,开发环境中串行部分实现的开发工具为Visual Studi 〇2012,编程语言为C++;并行部分实现的开发工具为⑶DA C 7.0版本。本发明的主要 框架请见图1,以下为本发明实施例的具体步骤:
[0055] (1)为简化问题的讨论,假定软件划分的初始解通过某个算法产生,该算法在求解 过程中没有对任务节点进行排序,那么初始解可以为图3中的当前解向量0101,解向量的映 射向量同样为0101。解的软件耗费,硬件耗费和通信耗费分别为33,8,15。另外,假定任务节 点是贪心启发式算法生成的,那么任务节点会按照硬件耗费与软件耗费的比率进行降序排 序,那么初始解向量就为1 〇〇 1,而解向量的映射保持不变。
[0056] (2)将任务图进行转换,使得其能够适应GPU算法的执行。转换结果如图2中的左下 图,其中,data数组表示任务图上边的通信耗费;r〇W_ptr数组中下标表示节点编号,下标 中的元素表示该节点邻接的第一条通信边在data数组中的下标。比如,row_ptr数组中第0 个元素代表任务图节点^,那么^与^、^具有邻接关系。邻接表的通信耗费分别为9和3,至 于哪个节点是第一与Vl邻接取决于具体编程实现,在本例中节点V2是第一个与Vl邻接的节 点,因此在row_ptr数组中第0个元素的值为0,表示第一个邻接节点上的通信耗费在data数 组中的下标为0。同样的,节点V2、V3、V4的一个邻接节点在data数组中的下标为2,4,6,8。 r〇W_ptr数组的大小为节点的个数加1,最后一个元素表示data数组最后一个元素的下标, 因此data数组的大小为任务图边数量的2倍。col_index数组表示data数组中的通信耗费对 应的节点编号。
[0057] (3)算法的最大迭代周期数设置为2000,连续未改进周期数设置为200,禁忌表的 长度设置为节点个数的开方。本实施中有4个节点,则禁忌表长度为,4,即为2。邻域规模为 n* (n-1) /2,η为节点个数。因此,邻域规模为6。
[0058] (4)在GPU端开辟存储空间,包括当前解向量,大小为4的int类型数组;解向量的映 射,大小为4的int类型;任务图的存储空间,包括大小为4+1即5的int类型的row_ptr数组、 4*2+1即9的float类型的data数组、4*2即8的int类型的co l_index数组;大小为2的int类型 的禁忌表;int类型的邻域标示符数组、float类型的邻域软件耗费数组、float类型的邻域 硬件耗费数组、float类型的邻域通信耗费数组以及int类型的邻域可行标识符数组的大小 都为6;由于事先不知道可行解的数目,因此可行解数组的大小等于邻域规模,同样包括int 类型的邻域标示符数组、float类型的邻域软件耗费数组、float类型的邻域硬件耗费数组 以及float类型的邻域通信耗费数组。
[0059] (5)启动GHJ端的内核需要配置线程规模。CUDA的线程组织包括线程网格和线程 块;一个GPU内核对应一个线程网格,而一个线程网格至少由一个线程块组成,线程网格的 规模代表启动该内核所需的线程块数量。一个线程块又至少由一个线程组成。所以启动一 个GPU内核所需的线程总数=线程网格的大小*线程块的大小。本发明在GPU端运行的内核 包括所有2翻转邻域的耗费计算以及约束评价、可行解的挑选以及可行解的禁忌评价共3个 内核。其中,前两个内核的线程配置统一为邻域规模的大小。在本实施中领域规模为6,因此 前两个内核的线程总数都设置为6即可。关于可行解的禁忌评价,在本实施中设置为3,使 用一个线程块,即线程网格大小为1。
[0060] (6)在计算邻域的耗费时,每个线程对应一个邻域,因此邻域编号由线程号以及线 程块号,线程网格的大小共同决定,具体计算公式如下所示:
[0061 ] neibIdx = bIockIdx.x X bIockDim.x+threadldx.x
[0062] 上式中,neibldx表示候选邻域的编号,blockldx.x表示线程块的编号, blockDim.x表示线程块的大小,threadldx.x表示线程块内每个线程的编号。值得注意的 是,获取线程块和线程编号本身是CUDA C提供的内置变量,只需在实现时直接使用即可。
[0063] 知道邻域编号后,还需要知道生成该编号对应的邻域所需要翻转的当前解向量的 两个位置。为此,用Posl和pos2表示翻转当前解向量的2个下标,则具体通过下面两个式子 求得:
[0064]
[0065]
[0066] 其中,η表示带划分任务图的节点数量,neiblndex表示该邻域候选解的编号。因此 可得生成该邻域候选解所需的第一个翻转位置posl。继而可得生成邻域候选解所需的第二 个翻转位置P〇s2。
[0067] 如本实施为例,将编号0~5代入上式后,生成的邻域候选解即为附图3表示。
[0068] 求得每个邻域的2个翻转位置后,根据翻转位置可以求得该邻域的软件耗费、硬件 耗费、和通信耗费。以附图2为例子,已知当前解的软件耗费,硬件耗费和通信耗费在(1)求 得分别为33,8,15。现在求候选邻域解向量为1001的3个耗费。该候选解是通过翻转位置0和 位置1产生的。在位置0,分量从0到1,表示软件耗费增加,硬件耗费减少。在当前解软硬件耗 费基础上,分别加上V 1的软件耗费6,减去V1的硬件耗费3后,软硬耗费分别更新为39和5;同 理,在位置1,分量从1到〇,表示减去该点的软件耗费,增加该节点的硬件耗费,那么需要减 去V2的软件耗费20,加上V 2的硬件耗费14,该邻域的软硬耗费最终分别更新为19和19。该方 法的优势在于利用当前解的已知信息,避免了按照实施过程(1)中的公式重头开始造成的 低效。
[0069]关于编号为0、解向量为1001的邻域通信耗费的计算,同样是利用已知当前解的通 信耗费求得。具体为,翻转为位置〇时,解向量变为1101,由于与节点V1邻接的节点中,节点V3 处于不同的划分中,表示该边会产生通信耗费;相反,如果节点V2此时与%处于同样的划分 当中,则不会产生通信耗费。根据此条件,需要将通信耗费更新为15-9+3 = 9;同样地,翻转 位置1时,解向量变为1001,与节点V2邻接的节点中,节点V1与节点V 3都处于不同的划分中, 因此这两条边都会产生通信耗费。将通信耗费更新为9+9+7 = 25,即为候选邻域解1001的实 际通信耗费。
[0070] 根据以上的方法即可求得其余候选邻域解的软件耗费、硬件耗费、通信耗费。最 后,将每个候选邻域解的编号、软件耗费、硬件耗费和通信耗费写入对应的开辟的全局内存 数组当中即可。结果如下表1所示:
[0071] 表1.候选邻域的解及耗费

[0073] (7)由于本发明的软硬件划分算法的求解目标是带约束的,因此并非所有的候选 邻域解都满足给定的约束条件,需要排除软件耗费和通信耗费之和不满足约束的解,保留 满足约束的解。
[0074] 假定问题P的约束为40,根据优化目标P,对候选邻域进行标示,满足约束为1;否 贝IJ,为0。表2为邻域可行标识符数组中的结果。
[0075]表2.邻域可行标识结果
L〇〇77」根据标示结果,通过在compaction算法保留满足约束的可行解。该算法通过附图4 的过程实现。上式中,邻域编号为2,3,4的解的邻域编号,软件耗费,硬件耗费和通信耗费 被保留至GPU端可行解的对应数组中。表3为保存至可行解数组中的表示 [00 78] 表3.通过compaction被保留的邻域候选解
L0080」(8)根据表3、禁忌表、以及优化目标P,选择没W被禁忌的,且使仵耗费最小的邻域 解。在本例中,由于是第1次迭代,禁忌表为空,所有可行解都可以被选择。在GPU端,执行此 选择过程的算法为带禁忌状态表的reduction操作。标准reduction操作主要是指输入数组 的求和,求最大值或者求最小值过程。最后,邻域编号为3的可行解的硬件耗费最小,因此选 择该邻域解为下次迭代的当前解。
[0081] (9)将非禁忌的可行解的编号、软件耗费、硬件耗费和通信耗费传回CPU端。
[0082] (10)更新禁忌表。将生成当前解的邻域编号保存至禁忌表中。在本例中,由于是第 一次迭代,所以当前解由初始解生成,没有索引进入禁忌表中。但在第二次迭代时,编号为3 的可行邻域变为当前解,所以在更新禁忌表时,需要将此编号入禁忌表。同时,将禁忌状态 表中的对应位置更新为1,表示该邻域被禁忌。
[0083] 另外,当禁忌表?两时,先解禁个邻域标识符,同时将禁忌状态表的对应标识符位 置的值更新为0。之后,再将当前解的邻域编号入禁忌表。
[0084] 禁忌表是一个循环队列,入队和出队分别在表头和表尾进行。
[0085] (11)通过最佳未禁忌邻域标识符,将当前解向量进行转换,使之成为新的当前解 向量,同时需要转换的还包括解向量的映射向量。用最佳未禁忌邻域的软件耗费、硬件耗费 以及通信耗费更新当前解的对应耗费。值得一提地是,即使最佳未禁忌邻域的硬件耗费大 于当前解的硬件耗费,仍然进行更新。
[0086] (12)更新解的全局耗费,具体为如果新的当前解的硬件耗费低于已有的全局耗 费,则对全局耗费进行更新。在更新时,对参数连续未改进周期数清〇;否则,该参数增1。当 大于值大于200时,算法终止。
[0087] (13)将新的当前解向量解、向量的映射、软件耗费、硬件耗费、通信耗费、邻域禁忌 状态表传输至GHJ端。最大迭代周期数设置增1,如果大于2000,算法终止;否则,算法退出。
[0088] 为验证本发明在基准测试集上的结果,表4给出所每个任务图的节点数n、边数m以 及相应的问题规模s i ze = 2 X n+3 X m的大小:
[0089]表4.测试数据集
[0091 ]每个节点的软件耗费为[1,100]之间的均匀分布的随机数,硬件耗费为对应节点 软件耗费的服从正态分布随机数;节点之间的通信耗费为区间[0,2 · P · Smax]之间的服从 均匀分布的随机数。其中,smax为任务图中单个节点的软件耗费的最大值;P为通信-计算比 (CCR),当P取值为0.1,1,10时,分别对应计算密集任务,中间型任务,以及通信密集型任务。 约束R的取值分为两种情况:1)严格实时约束,取值为[0,I/2 X Σ si ]之间的均匀分布的随 机数;2)弱实时约束,取值为[1/2X Σ&,Σ&]之间均匀分布的随机数。因此,通信-计算比 和约束R的组合一共有六种情况。
[0092]接下来,就CCR=I,R = high来说明本发明的优势,表5为该情况下与已有的TABU 方法的运行速度和质量的比较。其中,alg-ANTS表示本发明的串行实现,GANTS表示在GPU上 的并行实现。在绝大多数情况下,本发明的运行时间都低于已有的alg-ANTS方法。
[0093] 表5.CCR=I,R = high下ANTS和GANTS发明对解的改进程度和运行时间
[0095] 应当理解的是,本说明书未详细阐述的部分均属于现有技术。
[0096] 应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本 发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权 利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发 明的请求保护范围应以所附权利要求为准。
【主权项】
1. 一种基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征在于,包括以下步 骤: 步骤1:在主机端,获取软硬件划分的初始解以及相关信息;将初始解分别设置为当前 解和全局最优解; 步骤2:在主机端将软硬件划分的任务图的数据表达方式进行转换; 步骤3:设置参数;初始化主机端所需的存储空间;初始化GRJ端所需的存储空间; 步骤4:在主机端,将数据传输至GRJ端,启动GRJ端内核; 步骤5:在设备端,通过内核计算出最优候选邻域并将结果传回主机端; 步骤6:在主机端,更新禁忌表以及禁忌标示符; 步骤7:在主机端,更新当前解以及全局最优解; 步骤8:在主机端,判断是否满足停止准则; 若否,则返回至步骤4; 若是,则结束流程。2. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤1中所述初始解是指通过启发式方法或随机方法求得的待划分任务图的硬件耗 费;所述相关信息主要包括解向量、解向量的映射向量和初始解的软件耗费以及通信耗费; 所述解向量是和硬件耗费对应的由〇或者1组成的数组;所述解向量的映射向量是由〇或者1 组成的数组;主要保存任务图各节点被排序前的状态,用于后续的通信耗费的计算。3. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤2中所述任务图的数据表达方式进行转换是指将任务图传输给GPU前,需要将邻 接表的表示方式转换为适合在GPU端进行运算的压缩的稀疏行格式的表达方式。4. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤3中所述参数主要包括最大迭代周期数、连续未改进周期数、禁忌表的长度、邻域 的规模、候选邻域解集合中被选为当前解的邻域索引标识符、以及启动GHJ内核所需的线程 块大小以及线程块的个数; 所述主机端所需的存储空间包括禁忌表的存储空间,各个邻域候选解的禁忌状态的存 储空间,保存当前解生成的全部2翻转邻域候选解的索引、软件耗费、硬件耗费、通信耗费的 存储空间,最佳候选邻域的编号,软件耗费、硬件耗费、通信耗费的存储空间; 所述GPU端所需的存储空间包括当前解向量和当前解的映射向量的存储空间,各个邻 域候选解的禁忌状态的存储空间,各个邻域候选解是否满足约束的状态标识符数组,任务 图的压缩的稀疏行格式的存储空间,当前解生成的全部2翻转邻域候选解的索引、软件耗 费、硬件耗费、通信耗费的存储空间,保存满足约束的可行邻域候选解的存储空间,最佳候 选邻域的编号、软件耗费、硬件耗费、通信耗费的存储空间。5. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤4中所述将数据传输至GPU端,传输的数据包括当前解的解向量、当前解向量的映 射、当前解的软件耗费、硬件耗费和通信耗费、全局最优解的硬件耗费、软硬件划分的任务 图、禁忌表;所述GPU端内核主要包括对2翻转邻域解的耗费计算内核、对满足约束的可行邻 域解的进行挑选内核,以及对可行的邻域解进行禁忌评价的内核。6. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于,步骤5中所述计算出最优候选邻域的过程包括以下子步骤: 步骤5.1:在GPU端,每个2翻转邻域为一个候选解;GPU并行地对每个候选解计算软件耗 费、硬件耗费和通信耗费;计算完成后,根据软件耗费与通信耗费之和是否满足约束评价, 将〇或者1写入状态标识符数组的对应位置中;其中,〇表示不满足约束;1表示满足约束;同 时将邻域的标示符、软件耗费、硬件耗费和通信耗费写入GHJ端申请的存储空间中; 步骤5.2:在GPU端,根据邻域状态标识符数组,通过并行Compact ion算法,将状态标示 符数组中标号为1的邻域存入GPU端满足约束的可行邻域候选解的存储空间中; 步骤5.3:在GHJ端,通过禁忌表,并行地判断每个可行解是否在禁忌表里,若可行解不 在禁忌表中并且在所有2翻转可行解中具有最小硬件耗费,则为最佳邻域候选解;如果可行 邻域解在禁忌表中,但是其硬件耗费低于全局最优值,同样也被选择为最佳候选邻域。7. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤5中所述传回主机端的结果主要为最佳候选邻域的编号、软件耗费、硬件耗费以 及通信耗费。8. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤6中所述在主机端更新禁忌表的过程是基于循环队列的先进先出,禁忌对象是当 前解在上次迭代中的邻域标示符;更新禁忌标示符时,出队列的索引标号为0,同时进队列 的索引标号为1。9. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特征 在于:步骤7中所述更新当前解以及全局最优解,是用本次迭代选出的最佳邻域替代当前 解,主要包括替换当前解的解向量、解向量的映射、硬件耗费、软件耗费、通信耗费、当前解 的标示符;如果最佳邻域的耗费优于全局最佳硬件耗费,同样更新全局硬件耗费;当更新全 局硬件耗费时,连续未改进周期数被清0。10. 根据权利要求1所述的基于GPU的自适应领域禁忌搜索求解软硬件划分方法,其特 征在于:步骤8中所述停止准则主要是指执行步骤4至步骤8的循环次数或者达到了最大次 数或者连续未改进周期数后,停止运算。
【文档编号】G06F19/00GK105844110SQ201610212930
【公开日】2016年8月10日
【申请日】2016年4月7日
【发明人】何发智, 侯能, 周毅
【申请人】武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1