基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置与流程

文档序号:25897158发布日期:2021-07-16 20:22阅读:82来源:国知局
基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置与流程

1.本发明涉及集成电路电磁仿真技术领域,具体涉及一种基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置。


背景技术:

2.针对复杂的集成电路模型进行电磁仿真时,传输线法等简单的计算方法不再适用,需要采用数值计算方法以场的方式进行较为精确的模拟,这就需要将集成电路模型所在的复杂的计算场域进行离散,形成离散单元,以离散单元为基础对场进行求解。总体上,离散的单元尺寸越小,仿真结果越精确,但这导致计算的复杂度增加,因此在单元数量和计算精度上需要达到一种最优。另一方面,针对多尺度结构的、复杂且不规则的集成电路版图进行网格剖分时,不可避免地会采用非结构网格进行剖分,由于被剖分的集成电路模型具有非常强的多尺度结构,网格剖分时集成电路版图不规则多边形顶点插入的顺序的随机性、网格剖分过程中新节点插入坐标产生的误差等都足以改变多尺度结构的复杂集成电路剖分的网格,因此,不同时间、不同计算进程对同一个集成电路模型剖分出的网格都是不一样的。
3.现有的集成电路电磁仿真并行计算方法大多是将每个最基本的计算任务作为完全独立的计算单元,不同的计算任务之间无任何通信或联系,导致同一集成电路模型不同计算任务使用不同的剖分的网格进行计算,从而为集成电路模型的电磁仿真带来随机误差。在研究同一集成电路模型的频率响应曲线、电压

电流响应曲线等问题时,针对不同的计算点采用不同的剖分的网格,会因为不同网格带来的随机误差导致计算的响应曲线出现抖动。因此,在采用并行计算方法批量计算大规模集成电路电磁仿真提高计算速度的同时,还需要确保不同计算任务对应的相同的集成电路模型使用的是同样的剖分的网格,这样可以消除由于不同计算任务对同一集成电路模型进行网格剖分产生的网格差异带来的随机误差,从而避免集成电路的电磁响应曲线出现抖动。
4.

技术实现要素:

5.针对现有技术存在的上述不足,本发明的目的在于:提供一种基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置,建立文件名映射关系并构建文件锁,根据并行发起的计算进程得到并行粗颗粒,然后基于文件锁对各个并行粗颗粒进行仿真计算。这样,可以确保处理同一集成电路模型的不同进程使用相同的网格进行仿真计算,解决了因为不同网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
6.一种基于文件锁的集成电路电磁仿真粗颗粒并行方法,包括:建立文件名映射关系,根据文件名映射关系构建文件锁,所述文件锁用于对计算任务进行锁定控制;
将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元;依据待仿真的集成电路模型数量和每个集成电路模型的待计算任务,并行发起多个计算进程,每个计算进程实现一个并行粗颗粒;基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真,锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理;当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
7.进一步地,预设待仿真的集成电路模型有n个,第i个集成电路模型的待计算任务有m(i)个,并行发起k个计算进程;所述文件锁为基于唯一文件名锁定的计算任务标识或剖分的网格数据,所述文件名至多包括三个字段,第一字段表示当前文件所在的集成电路模型编号i,i=0~n

1;第二字段表示当前文件所在第i个集成电路模型的计算任务编号j,j=0~m(i)

1;第三字段表示当前文件的类型。
8.进一步地,所述基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真,具体包括:针对第i个集成电路模型,定义集成电路模型唯一的剖分的网格数据文件名为i_mesh,所述i为阿拉伯数字i对应的字符串,所述剖分的网格数据文件名用于标识所述第i个集成电路模型是否已经被计算进程处理,同时所述数据文件用于存储所述集成电路模型的剖分的网格数据;如果存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的网格剖分,如果不存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分未被处理,任何计算进程都可处理所述第i个集成电路模型的网格剖分;针对第i个集成电路模型,定义集成电路模型唯一的网格剖分已经完成的标识文件名为i_meshdone,如果该文件存在,表示所述第i个集成电路模型的网格剖分已经完成,其他计算进程可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,对所述第i个集成电路模型的其他计算任务进行仿真;如果存在文件名i_mesh但不存在文件名i_meshdone,表示所述第i个集成电路模型的网格剖分正在进行,其他计算进程不可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,也不可以继续进行所述第i个集成电路模型的任何仿真计算。
9.进一步地,所述锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理,具体包括:针对第i个集成电路模型的第j个计算任务,定义所述计算任务的唯一标识文件名为i_j_doing,所述i和j为阿拉伯数字i和j对应的字符串表示;如果存在文件名i_j_doing,表示所述第i个集成电路模型的第j个计算任务已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的第j个计算任务,如果不存在文件名i_j_doing,表示所述第i
个集成电路模型的第j个计算任务未被处理,任何计算进程都可处理所述第i个集成电路模型的第j个计算任务;针对第i个集成电路模型的第j个计算任务,定义所述计算结果的唯一标识文件名为i_j_result,用于存储第i个集成电路模型的第j个计算任务的计算结果。
10.进一步地,所述基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同剖分的网格对同一集成电路模型进行电磁仿真,锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理;当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果;具体包括:s1:在第0个计算进程上,针对n个集成电路模型的序列0~n

1生成随机序列{nr},针对第i个集成电路模型的计算任务序列0~m(i)

1生成随机序列{mr(i)},将随机序列{nr}和随机序列{mr(i)}广播给所有其他并行粗颗粒;s2:第k个计算进程查找文件nr(i)_mr(nr(i),j)_doing,若该文件已经存在,则转入步骤s8;若该文件不存在,则创建该文件,执行步骤s3;s3:第k个计算进程查找文件nr(i)_mesh,若该文件已经存在,则执行步骤s5;若该文件不存在,则创建该文件,并对第nr(i)个集成电路模型进行网格剖分,生成剖分的网格数据文件nr(i)_mesh;s4:生成第nr(i)个集成电路模型的剖分的网格数据文件生成完毕标识文件nr(i)_meshdone,执行步骤s7;s5:查询文件nr(i)_meshdone是否存在,若不存在,暂停预定时间,重复执行步骤s5;若存在,则执行步骤s6;s6:读取剖分的网格数据文件nr(i)_mesh;s7:基于第nr(i)个集成电路模型的剖分的网格数据完成该集成电路模型的第mr(nr(i),j)个计算任务的电磁仿真计算:(nr(i),mr(nr(i),j)),计算完毕后生成计算结果nr(i)_mr(nr(i),j)_result;s8:设置 j=j+1,如果j的增加总次数超过所有集成电路模型的任务数,说明第k个计算进程已经遍历所有计算任务,执行步骤s9;若j>=m(nr(i)),设置j=0且i=i+1,若i>=n,设置i=0,返回执行步骤s2;s9:当所有计算进程遍历所有计算任务时,由计算进程0收集计算结果,并将所有计算任务的计算结果整理生成最终计算结果。
11.进一步地,所述随机序列{nr}为n个0~n

1的互不相同的随机整数,所述随机序列{mr(i)}为m(i)个0~m(i)

1的互不相同的随机整数;针对所有计算进程,设置,j=k/m(i),其中,k表示第k个计算进程。
12.进一步地,所述文件锁的文件锁定包括计算任务占有锁定和集成电路模型网格剖分占有锁定,所述文件锁的文件解锁包括集成电路模型剖分的网格数据生成完毕标识文件,所述文件锁的信息锁定包括集成电路模型剖分的网格数据和计算任务结果输出文件;针对计算任务占有锁定的文件,该文件有3个字段,前2个字段名为i_j_,第3个字段名为doing,表示编号为(i,j)的计算任务已经被某个计算进程处理,任何其他计算进程不得处理这个计算任务;
针对集成电路模型网格剖分占有锁定的文件,该文件有2个字段,第一个字段名为i_,第2个字段名可为mesh,表示编号为i的集成电路模型的网格剖分任务已经被某个计算进程处理,任何其他计算进程不得处理这个集成电路模型的网格剖分任务;针对集成电路模型剖分的网格数据生成完毕标识文件,该文件有2个字段,第一个字段为i_,第二个字段名可为meshdone,表示编号为i的集成电路模型的剖分网格数据已经生成完毕,任何其他计算进程均可读取该集成电路模型对应的剖分的网格数据;针对集成电路模型剖分的网格数据的文件,该文件有2个字段,第一个字段名为i_,第二个字段名可为mesh,表示文件存放的是第i个集成电路模型的所有的剖分的网格信息;针对计算任务结果输出文件,该文件有3个字段,前两个字段名为i_j_,第3个字段名为result,表示文件存放的是编号为(i,j)的计算任务的计算结果。
13.进一步地,所述依据所述加权cpu时间和所述总cpu时间的占比确定出并行粗颗粒包括:将各计算颗粒的加权cpu时间按照从大到小的顺序排序并依次累加直到累加和超过90%的所述总cpu时间,将所述累加和之中的每个计算颗粒作为一个并行粗颗粒。
14.进一步地,所述计算颗粒的加权cpu时间的计算公式为:t
weight,i
=n
task,i
*t
i
式中:t
weight,i
为第i个计算颗粒的加权cpu时间,t
i
为第i个计算颗粒单次计算的cpu时间,n
task,i
为第i个计算颗粒执行的计算任务数;所述整个计算过程的总cpu时间的计算公式为:其中,t为整个计算过程的总cpu时间,m为整个计算程序被划分的计算颗粒数,t
weight,i
为第i个计算颗粒的加权cpu时间。
15.一种基于文件锁的集成电路电磁仿真粗颗粒并行装置,包括:计算颗粒划分模块,用于将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元;粗颗粒并行计算模块,依据待仿真的集成电路模型数量和每个集成电路模型的待计算任务,并行发起多个计算进程,每个计算进程实现一个并行粗颗粒,基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真,锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理;统计整理模块,用于当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
16.相比于现有技术,本发明具有以下优点:本发明提供了一种基于文件锁的集成电路电磁仿真粗颗粒并行方法及装置,首先建立文件名映射关系并构建文件锁,根据并行发起的计算进程得到并行粗颗粒,然后基于
文件锁对各个并行粗颗粒进行仿真计算。这样,可以确保处理同一集成电路模型的不同进程使用相同的网格进行仿真计算,解决了因为不同网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
17.附图说明
18.图1为本发明实施例一中基于文件锁的集成电路电磁仿真粗颗粒并行方法的流程图;图2为本发明实施例一中针对集成电路进行并行粗颗粒仿真计算流程图;图3为本发明实施例一中文件锁的锁定原理框图;图4为本发明实施例二中基于文件锁的集成电路电磁仿真粗颗粒并行计算装置的框图。
19.具体实施方式
20.下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
21.实施例一:参照图1~图3,一种基于文件锁的集成电路电磁仿真粗颗粒并行方法,包括:建立文件名映射关系,根据文件名映射关系构建文件锁,所述文件锁用于对计算任务进行锁定控制。具体地,预设待仿真的集成电路模型有n个,第i个集成电路模型的待计算任务有m(i)个,并行发起k个计算进程;所述文件锁为基于唯一文件名锁定的计算任务标识或剖分的网格数据,所述文件名至多包括三个字段,第一字段表示当前文件所在的集成电路模型编号i,i=0~n

1;第二字段表示当前文件所在第i个集成电路模型的计算任务编号j,j=0~m(i)

1;第三字段表示当前文件的类型。当前文件的类型指集成电路模型的类型,比如多层pcb版图模型、ic封装模型、多层尺度更小的芯片设计模型、多个模型的联合仿真,以及集成电路模型的规模信息等。
22.将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元。具体地,并行发起k个计算进程,k个并行的计算进程对应k个并行的计算颗粒。
23.依据待仿真的集成电路模型数量和每个集成电路模型的待计算任务,并行发起多个计算进程,每个计算进程实现一个并行粗颗粒,基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真,锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理。具体地,针对第i个集成电路模型,定义集成电路模型唯一的剖分的网格数据文件名为i_mesh,所述i为阿
拉伯数字i对应的字符串,所述剖分的网格数据文件名用于标识所述第i个集成电路模型是否已经被计算进程处理,同时所述数据文件用于存储所述集成电路模型的剖分的网格数据;如果存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的网格剖分,如果不存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分未被处理,任何计算进程都可处理所述第i个集成电路模型的网格剖分;针对第i个集成电路模型,定义集成电路模型唯一的网格的剖分已经完成的标识文件名为i_meshdone,如果该文件存在,表示所述第i个集成电路模型的网格剖分已经完成,其他计算进程可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,对所述第i个集成电路模型的其他计算任务进行仿真;如果存在文件名i_mesh’不存在文件名i_meshdone,表示所述第i个集成电路模型的网格剖分正在进行,其他计算进程不可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,也不可以继续进行所述第i个集成电路模型的任何仿真计算。
24.锁定后的计算粗颗粒表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理;具体地,针对第i个集成电路模型的第j个计算任务,定义所述计算任务的唯一标识文件名为i_j_doing,所述i和j为阿拉伯数字i和j对应的字符串表示;如果存在文件名i_j_doing,表示所述第i个集成电路模型的第j个计算任务已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的第j个计算任务,如果不存在文件名i_j_doing,表示所述第i个集成电路模型的第j个计算任务未被处理,任何计算进程都可处理所述第i个集成电路模型的第j个计算任务;针对第i个集成电路模型的第j个计算任务,定义所述计算结果的唯一标识文件名为i_j_result,用于存储第i个集成电路模型的第j个计算任务的计算结果。
25.当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
26.上述基于文件锁的集成电路电磁仿真粗颗粒并行方法,首先针对每个集成电路模型的文件名,建立文件名映射关系,并根据文件名映射关系构建文件锁;然后根据并行发起的多个计算进程得到多个并行粗颗粒,最后基于文件锁对各个并行粗颗粒进行仿真计算。这样,可以确保处理同一集成电路模型的不同计算进程使用相同的剖分的网格进行仿真计算,解决了因为不同的剖分的网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同计算进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
27.上述基于文件锁的集成电路电磁仿真粗颗粒并行方法,为了确保处理同一集成电路模型的不同进程使用相同的剖分的网格进行仿真计算,解决了因为不同的剖分的网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。基于文件锁建立关于集成电路模型的消息异步传递机制,让多个集成电路模型的仿真可以粗颗粒并行。具体的仿真计算方法参照图2,包括:s1:在第0个计算进程上,针对n个集成电路模型的序列0~n

1生成随机序列{nr},针对第i个集成电路模型的计算任务序列0~m(i)

1生成随机序列{mr(i)},将随机序列{nr}
和随机序列{mr(i)}广播给所有其他并行粗颗粒;s2:第k个计算进程查找文件nr(i)_mr(nr(i),j)_doing,若该文件已经存在,则转入步骤s8;若该文件不存在,则创建该文件,执行步骤s3;s3:第k个计算进程查找文件nr(i)_mesh,若该文件已经存在,则执行步骤s5;若该文件不存在,则创建该文件,并对第nr(i)个集成电路模型进行网格剖分,生成剖分的网格数据文件nr(i)_mesh;s4:生成第nr(i)个集成电路模型的剖分的网格数据文件生成完毕标识文件nr(i)_meshdone,执行步骤s7;s5:查询文件nr(i)_meshdone是否存在,若不存在,暂停预定时间,重复执行步骤s5;若存在,则执行步骤s6;s6:读取剖分的网格数据文件nr(i)_mesh;s7:基于第nr(i)个集成电路模型的剖分的网格数据完成该集成电路模型的第mr(nr(i),j)个计算任务的电磁仿真计算:(nr(i),mr(nr(i),j)),计算完毕后生成计算结果nr(i)_mr(nr(i),j)_result;s8:设置 j=j+1,如果j的增加总次数超过所有集成电路模型的任务数,说明第k个计算进程已经遍历所有计算任务,执行步骤s9;若j>=m(nr(i)),设置j=0且i=i+1,若i>=n,设置i=0,返回执行步骤s2;s9:当所有计算进程遍历所有计算任务时,由计算进程0收集计算结果,并将所有计算任务的计算结果整理生成最终计算结果。
28.其中,所述随机序列{nr}为n个0~n

1的互不相同的随机整数,所述随机序列{mr(i)}为m(i)个0~m(i)

1的互不相同的随机整数;针对所有计算进程,设置,j=k/m(i),其中,k表示第k个计算进程。
29.上述粗颗粒并行计算方法,参照图3,文件锁根据功能包括文件锁定和文件解锁,所述文件锁的文件锁定包括计算任务占有锁定和集成电路模型网格剖分占有锁定,所述文件锁的文件解锁包括集成电路模型网格数据生成完毕标识文件,文件锁的信息锁定包括集成电路模型剖分的网格数据和计算任务结果输出文件。
30.其中,针对计算任务占有锁定的文件,该文件有3个字段,前2个字段名为i_j_,第3个字段名为doing,表示编号为(i,j)的计算任务已经被某个计算进程处理,任何其他计算进程不得处理这个计算任务;针对集成电路模型网格剖分占有锁定的文件,该文件有2个字段,第一个字段名为i_,第2个字段名可为mesh,表示编号为i的集成电路模型的网格剖分任务已经被某个计算进程处理,任何其他计算进程不得处理这个集成电路模型的网格剖分任务;针对集成电路模型剖分的网格数据生成完毕标识文件,该文件有2个字段,第一个字段为i_,第二个字段名可为meshdone,表示编号为i的集成电路模型的剖分网格数据已经完毕,任何其他计算进程均可读取该集成电路模型对应的剖分的网格数据;针对集成电路模型剖分的网格数据的文件,该文件有2个字段,第一个字段名为i_,第二个字段名可为mesh,表示文件存放的是第i个集成电路模型的所有的剖分的网格信息;针对计算任务结果输出文件,该文件有3个字段,前两个字段名为i_j_,第3个字段
名可为result,表示文件存放的是编号为(i,j)的计算任务的计算结果。
31.这样,采用文件锁定和文件解锁技术,其中,计算任务的文件锁定可以保证一个计算任务只能同时被一个计算进程处理,任何其他计算进程不得同一时间处理这个计算任务;集成电路模型剖分的网格文件锁定可以保证一个集成电路模型的网格剖分任务只能同一时间被一个计算进程处理,任何其他计算进程不得处理这个集成电路模型的网格剖分任务。集成电路模型网格剖分文件解锁指当一个集成电路模型的网格剖分已经完毕,任何其他计算进程均可读取该集成电路模型对应的剖分的网格数据。这样,可以防止多个计算进程同时对同一个集成电路模型进行网格剖分并写入同一个文件,导致重复运算同一个运算任务和文件写入冲突的错误。当文件锁是锁定状态时,在锁定状态被解锁之前,所有试图对这个文件加锁的计算进程都会被阻塞;当文件锁是待加锁状态时,所有试图以读模式对它进行加锁的计算进程都可以得到访问权,但是以写模式对它进行加锁的线程将会被阻塞;当文件锁在读模式的锁定状态时,如果有另外的计算线程试图以写模式加锁,文件锁通常会阻塞随后的读模式锁的请求,这样可以避免读模式锁长期占用,而等待的写模式锁请求则长期阻塞。
32.这样,采用上述文件锁来对各个并行粗颗粒进行仿真计算,就可以确保同一集成电路模型的不同计算任务使用相同的网格进行仿真计算,解决了因为不同剖分网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同计算进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
33.上述基于文件锁的集成电路电磁仿真粗颗粒并行方法,针对并行粗颗粒的计算方法为:将各计算颗粒的加权cpu时间按照从大到小的顺序排序并依次累加直到累加和超过90%的所述总cpu时间,将所述累加和之中的每个计算颗粒作为一个并行粗颗粒。
34.具体的,若将集成电路模型的仿真计算划分为c1、c2、c3共3个计算颗粒,3个计算颗粒可执行整个计算过程的计算任务;若c1执行500个计算任务,c2执行200个计算任务,c3执行5个计算任务;那么共705个计算任务构成整个计算过程,上述整个计算过程只需c1、c2、c3共3个计算颗粒来实现。其中执行整个计算过程依次需要c1、c2、c3这3个计算颗粒执行。
35.根据各计算颗粒计算所得的加权cpu时间进行大小排序,若c1加权cpu时间为1s,c2加权cpu时间为100s,c3加权cpu时间为20s,则最终排序结果为c2>c3>c1;3个计算颗粒的加权cpu时间从大到小依次相加,即t(c2)+t(c3)+

直到时间和大于总cpu时间的90%为止;如果t(c2)+t(c3)>90%,那就是c2、c3分别作为一个并行粗颗粒;如果t(c2)>90%总cpu时间,那么c2为并行粗颗粒。
36.这样,基于文件名映射关系对各个并行粗颗粒进行仿真计算,极大程度减少计算进程之间的通信及因为同步而产生的等待时间,同时,由于计算任务采用基于上述文件名锁定方式的消息异步传递方法,可以保证处理同一集成电路模型的不同计算进程使用相同的剖分的网格进行仿真计算,解决了因为不同的剖分的网格带来的随机误差导致计算的响应曲线出现抖动。
37.上述基于文件锁的集成电路电磁仿真粗颗粒并行方法,所述计算颗粒的加权cpu时间的计算公式为:t
weight,i
=n
task,i
*t
i
式中:t
weight,i
为第i个计算颗粒的加权cpu时间,t
i
为第i个计算颗粒单次计算的cpu时间,n
task,i
为第i个计算颗粒执行的计算任务数;
所述整个计算过程的总cpu时间的计算公式为:其中,t为整个计算过程的总cpu时间,m为整个计算程序被划分的计算颗粒数,t
weight,i
为第i个计算颗粒的加权cpu时间。
38.上述基于文件锁的集成电路仿真粗颗粒并行计算方法,通过建立文件名映射关系以及构建文件锁,根据并行发起的计算进程得到并行粗颗粒,然后基于文件名映射关系及文件锁对各个并行粗颗粒进行仿真计算。这样,可以确保处理同一集成电路模型的不同计算进程使用相同的剖分的网格进行仿真计算,解决了因为不同的剖分的网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同计算进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
39.实施例二:参照图4,一种基于文件锁的集成电路电磁仿真粗颗粒并行装置,包括:文件锁构建模块,用于建立文件名映射关系,根据文件名映射关系构建文件锁,所述文件锁用于对计算任务进行锁定控制。具体地,预设待仿真的集成电路模型有n个,第i个集成电路模型的待计算任务有m(i)个,并行发起k个计算进程;所述文件锁为基于唯一文件名锁定的计算任务标识或剖分的网格数据,所述文件名至多包括三个字段,第一字段表示当前文件所在的集成电路模型编号i,i=0~n

1;第二字段表示当前文件所在第i个集成电路模型的计算任务编号j,j=0~m(i)

1;第三字段表示当前文件的类型。当前文件的类型指集成电路模型的类型,比如多层pcb版图模型、ic封装模型、多层尺度更小的芯片设计模型、多个模型的联合仿真,以及集成电路模型的规模信息等。
40.计算颗粒划分模块,用于将整个集成电路模型的电磁仿真分割成多个计算颗粒,获取各计算颗粒的加权cpu时间和总cpu时间,依据所述加权cpu时间和所述总cpu时间的占比确定出计算粗颗粒;所述计算颗粒为需要多次重复执行的计算单元;具体地,并行发起k个计算进程,k个并行的计算进程对应k个并行的计算颗粒。
41.粗颗粒并行计算模块,依据待仿真的集成电路模型数量和每个集成电路模型的待计算任务,并行发起多个计算进程,每个计算进程实现一个并行粗颗粒,基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真,锁定的计算任务表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理。
42.统计整理模块,用于当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
43.其中,基于文件锁对各个并行粗颗粒需要处理的计算任务进行锁定控制及仿真计算,确保处理同一集成电路模型的不同计算任务的并行粗颗粒采用相同的剖分的网格对同一集成电路模型进行电磁仿真。具体包括:针对第i个集成电路模型,定义集成电路模型唯一的剖分网格数据文件名为i_mesh,所述i为阿拉伯数字i对应的字符串,所述剖分的网格数据文件名用于标识所述第i个
集成电路模型是否已经被计算进程处理,同时所述数据文件用于存储所述集成电路模型的剖分的网格数据;如果存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的网格剖分,如果不存在文件名i_mesh,表示所述第i个集成电路模型的网格剖分未被处理,任何计算进程都可处理所述第i个集成电路模型的网格剖分;针对第i个集成电路模型,定义集成电路模型唯一的网格剖分已经完成的标识文件名为i_meshdone,如果该文件存在,表示所述第i个集成电路模型的网格剖分已经完成,其他计算进程可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,对所述第i个集成电路模型的其他计算任务进行仿真;如果存在文件名i_mesh’不存在文件名i_meshdone,表示所述第i个集成电路模型的网格剖分正在进行,其他计算进程不可以读取所述第i个集成电路模型的剖分的网格数据文件i_mesh,也不可以继续进行所述第i个集成电路模型的任何仿真计算。
44.其中,锁定后的计算粗颗粒表示已经存在计算进程对该计算任务进行仿真处理,其他计算进程不得同时处理。具体包括:针对第i个集成电路模型的第j个计算任务,定义所述计算任务的唯一标识文件名为i_j_doing,所述i和j为阿拉伯数字i和j对应的字符串表示;如果存在文件名i_j_doing,表示所述第i个集成电路模型的第j个计算任务已经被计算进程处理,其他计算进程不可处理所述第i个集成电路模型的第j个计算任务,如果不存在文件名i_j_doing,表示所述第i个集成电路模型的第j个计算任务未被处理,任何计算进程都可处理所述第i个集成电路模型的第j个计算任务;针对第i个集成电路模型的第j个计算任务,定义所述计算结果的唯一标识文件名为i_j_result,用于存储第i个集成电路模型的第j个计算任务的计算结果。
45.当所有并行粗颗粒遍历所有计算任务时,收集计算结果并将所有计算任务的计算结果整理生成最终计算结果。
46.上述基于文件锁的集成电路电磁仿真粗颗粒并行装置,首先针对每个集成电路模型的文件名,建立文件名映射关系,并根据文件名映射关系构建文件锁;然后根据并行发起的多个计算进程得到多个并行粗颗粒,最后基于文件锁对各个并行粗颗粒进行仿真计算。这样,可以确保处理同一集成电路模型的不同计算进程使用相同的剖分的网格进行仿真计算,解决了因为不同的剖分的网格带来的随机误差导致计算的响应曲线出现抖动;还能避免不同计算进程之间因为通信而带来的计算进程间的等待,提高集成电路电磁仿真并行计算效率。
47.最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的保护范围当中。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1