预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN108932172A(43)申请公布日2018.12.04(21)申请号201810681045.8(22)申请日2018.06.27(71)申请人西安交通大学地址710049陕西省西安市碑林区咸宁西路28号(72)发明人董小社何锋张兴军邹年俊肖兮李胜利肖强王靖桦(74)专利代理机构西安通大专利代理有限责任公司61200代理人徐文权(51)Int.Cl.G06F9/54(2006.01)G06F17/50(2006.01)权利要求书2页说明书5页附图1页(54)发明名称一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法(57)摘要本发明公开了一种基于OpenMP/MPI混合并行CFD计算的共享内存通信同步方法,包括以下步骤:每个MPI进程根据进程内线程的总个数初始化用于OpenMP共享缓冲通信的内存缓冲区,并初始化用于共享缓冲区同步的互斥锁,将互斥锁置于加锁状态;启动OpenMP线程进行迭代计算;每个线程根据标志字将需要通信的边界数据写入共享缓冲区,结束后将同步的互斥锁解锁;每个线程利用互斥锁同步从共享缓冲区读取自己需要的其他线程的边界数据;每个线程根据上步判断条件,继续依次判断自己的下一个面是否需要通信并加锁读取数据;判断标志字节是否为真,若为真则则返回到轮询的开始,继续进行加锁读取判断,否则终止循环,每个线程都通过共享缓冲获得了需要交换的边界数据。CN108932172ACN108932172A权利要求书1/2页1.一种基于OpenMP/MPI混合并行CFD计算的共享内存通信同步方法,其特征在于,包括以下步骤:步骤1,每个MPI进程根据进程内线程的总个数初始化用于OpenMP共享缓冲通信的内存缓冲区,并初始化用于共享缓冲区同步的互斥锁,将互斥锁置于加锁状态;步骤2,启动OpenMP线程进行迭代计算,每个OpenMP线程设置并初始化每个边界面是否需要OpenMP共享内存通信的标志字节Mark,计算索引号以确定使用主或者备缓冲区;步骤3,每个线程将需要通信的边界数据写入共享缓冲区,结束后将同步的互斥锁解锁;步骤4,每个线程利用互斥锁同步机制,从共享缓冲区读取自己需要的其他线程的边界数据;步骤5,每个线程根据步骤4的条件,继续依次判断自己的下一个面是否需要通信并加锁读取数据;步骤6,判断标志字节Mark是否为真,如果为真,则意味着仍有某个需要通信的面尚未成功加锁并读取共享缓冲通信数据,则返回步骤4,否则,终止循环,本次共享缓冲通信结束,每个线程都通过共享缓冲获得了需要交换的边界数据。2.根据权利要求1所述的一种基于OpenMP/MPI混合并行CFD计算的共享内存通信同步方法,其特征在于,步骤1具体包括以下步骤:1)每个MPI进程根据其内每个线程需要进行共享内存通信的边界面的数量,每个边界面设置主、备两个用于通信的双缓冲区,使得进程内所有线程都能够访问这些共享缓冲区,交替向双缓冲区中写入每一轮迭代需要的边界数据,避免在向共享缓冲区写入数据时的“读后写”同步;2)根据1)设置的缓冲区数量,申请相等数目的互斥锁,用于每个缓冲区的“写后读”同步,由于首次迭代时主备共享缓冲区都未写入数据,因此将所有用于同步的互斥锁都置于加锁状态,在未写入数据时拒绝读取数据。3.根据权利要求1所述的一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法,其特征在于,步骤2具体包括:1)每个线程首先根据网格块的边界面是否需要OpenMP共享内存通信,设置标志字节Mark;如果Mark中对应边界面的相应二进制位是1,则表示该边界面需要通过共享内存进行通信,为0则不需要;根据每个边界面是否需要共享内存通信,将Mark中该二进制位的值通过公式(1)由初始化的0置反变为1,其中i是该边界面的索引编号(1~6):Mark=(Mark|1<<(i-1))(1)2)根据迭代次数,通过与2取模运算的方式,来确定本次是向余数为1的主缓冲区或余数为0的备缓冲区写入数据。4.根据权利要求1所述的一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法,其特征在于,步骤3包括:1)根据Mark值,通过和1<<(i-1)进行与运算,取得第i个二进制位的值来判读第i个边界是否需要共享内存通信,需要时将边界数据写入对应的共享缓冲区;2)将通信数据写入共享缓冲后,释放用于同步该块缓冲区的互斥锁,其他线程就通过加锁读取该缓冲区共享数据。2CN108932172A权利要求书2/2页5.根据权利要求1所述的一种基于OpenMP/MPI混合并行CFD计算的细粒度共享内存通信同步方法,其特征在于,步骤4包括:1)每个线程通过Mark和1<<(i-1)进行与运算,