一种轻量级裸片代码的创建及并行运行方法_3

文档序号:9921882阅读:来源:国知局

[0046](二)子线程处理过程
子线程被父线程创建后,将执行以下步骤:
(I)获得由父线程传入的环境信息,包括父线程(即当前线程)当前函数的所有变量、并行运行代码块的起始位置和结束位置。
[0047](2)配置环境,用上一步获得的信息配置本子线程的变量信息,使本子线程获得父线程的变量快照。
[0048](3)跳转至并行运行代码块的起始位置。
[0049](4)如果公用计数器被其他线程锁定,本子线程将会进入阻塞等待状态,直至公用计数器被解锁后再执行步骤(5)。
[0050](5)锁定公用计数器。此后其他线程不可读写该计数器的值。
[0051](6)若公用计数器符合退出规则,则解锁公用计数器并跳转至解锁公用计数器并跳转至并行运行代码块的结束位置,继续执行步骤(12)。
[0052](7)获得公用计数器的副本,并将此副本作为本子线程本轮的计数器值。
[0053](8)使用计数器修改函数修改公用计数器。
[0054](9)解除公用计数器的锁定。
[0055](10)以计数器副本的值作为计数器的值,执行完一次并行运行代码块的代码。
[0056](11)以下一个子线程作为当前子线程跳转至(4)。
[0057](12)执行最后的额外操作(此步骤为可选的步骤)。
[0058](13)结束当前子线程。
[0059]实施例二
本实例选取的计算机CPU为2450Μ的15处理器,CPU的主频为3.1GHz进行测试。本实施例测试时让并行运行代码块作500*500的矩阵乘法运算,首先测试采用单线程方式运行与并行运行代码块相同的矩阵乘法运算结果,然后采用本发明的并行运行方法(以同步方式启用4线程运行)来进行测试并行运行代码块作500*500的矩阵乘法运算,最后将二者的测试结果进行对比。之后,本实施例又采取同样的方式测试并行运行代码块作1000*1000、1500*1500、2000*2000、2500*2500、3000*3000的矩阵乘法运算对比结果,其中,单线程方式和本发明的方法程序运行时间如图9所示,而相对加速比则如图10所示。从图9和图10可以看出,本发明的方法与单线程方式相比,运行所需的时间更短,运行效率更高。
[0060]以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
【主权项】
1.一种轻量级裸片代码的创建及并行运行方法,其特征在于:包括: 51、父线程执行至需并行运行的代码处,获取用户要求并发的线程数以及用户是否需要线程同步的信息,并对公用计数器进行初始化; 52、计算并行运行代码块的起始位置和结束位置; 53、获取所需的环境彳目息; 54、根据用户要求并发的线程数和用户是否需要线程同步的信息创建子线程; 55、子线程获取由父线程传入的所需的环境信息,然后配置子线程的环境; 56、根据用户是否需要线程同步的信息,决定由子线程采用公用计数器单独执行并行运行的代码或者由子线程和父线程采用公用计数器共同执行并行运行的代码。2.根据权利要求1所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述所需的环境信息包括但不限于父线程当前函数的所有变量、并行运行代码块的起始位置和结束位置。3.根据权利要求2所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述步骤SI,其包括: 511、父线程按照单线程的方式执行到需要并行运行的代码处; 512、获取用户要求并发的线程数以及用户是否需要线程同步的信息,并对公用计数器进行初始化。4.根据权利要求3所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:在所述步骤SI 2,其包括: 父线程获取用户要求并发的线程数以及用户是否需要线程同步的信息; 父线程设定公用计数器的类型、变量名和初始值,并修改公用计数器所采用的函数; 父线程设定线程任务继续执行的条件; 父线程设定线程执行并行运行代码块的代码前需执行的额外代码; 父线程设定所需的参数或用逗号分隔的参数组。5.根据权利要求1所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述步骤S4,其具体为: 若用户需要线程同步,则创建n-1个子线程;反之,则创建η个子线程,其中,η为用户要求并发的线程数。6.根据权利要求5所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述步骤S5,其包括: 551、子线程获取由父线程传入的所需的环境信息; 552、子线程根据获得的环境信息配置本子线程的变量信息,以使本子线程获得父线程的变量快照; 553、子线程跳转至并行运行代码块的起始位置。7.根据权利要求6所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述步骤S6,其具体为: 若用户需要线程同步,则父线程与创建的n-1个子线程等价,父线程执行完一次并行运行代码块的代码至并行运行代码块的结束位置后,等待η-1个子线程分别采用公用计数器执行完一次并行运行代码块的代码;反之,则父线程与创建的η个子线程异步,父线程直接跳转至并行运行代码块的结束位置,等待η个子线程分别采用公用计数器执行完一次并行运行代码块的代码。8.根据权利要求7所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:所述η-1个子线程分别采用公用计数器执行完一次并行运行代码块的代码或η个子线程分别采用公用计数器执行完一次并行运行代码块的代码这一步骤,其包括: 561、以n-1个子线程或η个子线程中的任一子线程作为当前子线程,判断公用计数器是否被其他子线程或父线程锁定,若是,则当前子线程进入阻塞等待状态,直至公用计数器被解锁后执行步骤S62,反之,则当前子线程直接执行步骤S62; 562、当前子线程锁定公用计数器; 563、判断公用计数器是否符合设定的退出规则,若是,则当前子线程解锁公用计数器并跳转至并行运行代码块的结束位置,反之,则当前子线程执行步骤S64; 564、当前子线程获得公用计数器的副本,并以获得的副本的值作为当前子线程本轮的计数器值; 565、当前子线程采用计数器修改函数修改公用计数器,然后解除公用计数器的锁定; 566、当前子线程以当前子线程本轮的计数器值作为计数器的值,执行完一次并行运行代码块的代码,然后以下一个子线程作为当前子线程返回步骤S61。9.根据权利要求1-8任一项所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:在所述步骤S5之后还设有步骤S6,所述步骤S6,其具体为:父线程执行并行运行代码块后的其它代码,并在执行完毕后释放所占的资源。10.根据权利要求1-8任一项所述的一种轻量级裸片代码的创建及并行运行方法,其特征在于:当用户需要线程同步时,所述父线程与子线程的堆内存空间是共享的而栈空间是独立的。
【专利摘要】本发明公开了一种轻量级裸片代码的创建及并行运行方法,包括:父线程执行至需并行运行的代码处,获取用户要求并发的线程数以及用户是否需要线程同步的信息,并对公用计数器进行初始化;计算并行运行代码块的起始位置和结束位置;获取所需的环境信息;根据用户要求并发的线程数和用户是否需要线程同步的信息创建子线程;子线程获取由父线程传入的所需的环境信息,然后配置子线程的环境;根据用户是否需要线程同步的信息,决定由子线程采用公用计数器单独执行并行运行的代码或者由子线程和父线程采用公用计数器共同执行并行运行的代码。本发明具有程序编写的成本低且并行程序的运行效率高的优点,可广泛用于计算机程序领域。
【IPC分类】G06F9/445
【公开号】CN105700913
【申请号】CN201511032025
【发明人】张巍, 霍颖翔, 滕少华
【申请人】广东工业大学
【公开日】2016年6月22日
【申请日】2015年12月30日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1