CN117075909B - 用于实现并行编程的编译方法、电子设备和介质 - Google Patents
用于实现并行编程的编译方法、电子设备和介质 Download PDFInfo
- Publication number
- CN117075909B CN117075909B CN202311309287.1A CN202311309287A CN117075909B CN 117075909 B CN117075909 B CN 117075909B CN 202311309287 A CN202311309287 A CN 202311309287A CN 117075909 B CN117075909 B CN 117075909B
- Authority
- CN
- China
- Prior art keywords
- instruction
- code
- parallel programming
- syntax tree
- abstract syntax
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 150000001875 compounds Chemical class 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 5
- 239000002131 composite material Substances 0.000 claims description 4
- 239000000758 substrate Substances 0.000 claims 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种用于实现并行编程的编译方法、电子设备和介质,方法包括S1、获取原始抽象语法树;S2、遍历原始抽象语法树;S3、若当前遍历的节点存在具有并行编程指令属性的源代码,执行S4,否则,返回S2;S4、检查是否符合并行编程指令语法,若符合,执行S5,否则,结束;S5、若为主机端编译,执行S6,若为设备端编译,执行S7;S6、将当前遍历的节点转换为主机端调用设备段代码的抽象语法树结构,执行S8;S7、将当前遍历的节点转换为设备端的执行代码的抽象语法树结构;S8、若存在未遍历节点,则返回S2,否则,确定目标抽象语法树;S9、生成目标机器语言。本发明具有通用性,且能降低成本,提高效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种用于实现并行编程的编译方法、电子设备和介质。
背景技术
并行编程模型会提供统一的并行编程应用程序编程接口(ApplicationProgramming Interface,简称API),编译器需要实现对并行编程API的支持。现有的一些主流的编译器能够实现对并行编程API的支持,通常是提供一整套的编译流程来实现,不具有通用性,且编译流程复杂、繁琐。对于非主流的编译器,无法直接基于主流的编译流程来实现对并行编程API的支持。且对于不同的异构设备还需要添加各自对应的运行时动态和指令转换逻辑等,需要高昂的成本,且实现效率低。由此可知,如何提供一种通用的实现并行编程的编译技术,且降低实现并行编程的编译成本,提高实现并行编程的编译效率成为亟待解决的技术问题。
发明内容
本发明目的在于,提供一种用于实现并行编程的编译方法、电子设备和介质,具有通用性,且能降低实现并行编程的编译成本,提高实现并行编程的编译效率。
根据本发明第一方面,提供了一种用于实现并行编程的编译方法,包括:
步骤S1、获取原始抽象语法树,所述原始抽象语法树包括多个节点,每一节点对应至少一行源代码;
步骤S2、依次遍历所述原始抽象语法树中未遍历过的节点;
步骤S3、若当前遍历的节点对应的源代码中存在具有预设并行编程指令属性的源代码,则执行步骤S4,否则,返回执行步骤S2;
步骤S4、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码是否符合预设并行编程指令语法,若符合,则执行步骤S5,否则,生成语法错误提示信息,结束流程;
步骤S5、获取当前编译属性信息,若为主机端编译,则执行步骤S6,若为设备端编译,则执行步骤S7;
步骤S6、根据预设并行编程指令种类,将当前遍历的节点转换为主机端调用设备段代码的抽象语法树结构,执行步骤S8;
步骤S7、根据预设并行编程指令种类,将当前遍历的节点转换为设备端的执行代码的抽象语法树结构,执行步骤S8;
步骤S8、若所述原始抽象语法树中存在未遍历节点,则返回步骤S2,否则,将当前处理后的原始抽象语法树确定为目标抽象语法树;
步骤S9、基于所述目标抽象语法树生成目标机器语言。
根据本发明第二方面,提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明第一方面所述的方法。
根据本发明第三方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明第一方面所述的方法。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种用于实现并行编程的编译方法、电子设备和介质可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有以下有益效果:
本发明仅需将原始抽象语法树转换为异构设备实现并行编程过程中能直接识别的目标抽象语法树,无需在编译其他过程中添加额外的处理,对于基于相同设计理念的异构设备,具有通用性。本发明减少了运行时对环境的依赖,且执行环境中不需要设置额外的动态库,极大降低了支持并行编程的成本,提高了实现并行编程的编译效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的用于实现并行编程的编译方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种用于实现并行编程的编译方法,如图1所示,包括:
步骤S1、获取原始抽象语法树,所述原始抽象语法树(abstract syntax code,简称AST)包括多个节点,每一节点对应至少一行源代码。
步骤S2、依次遍历所述原始抽象语法树中未遍历过的节点。
可以理解的是,所述原始抽象语法树中的每一节点均需遍历,且仅遍历一次。
步骤S3、若当前遍历的节点对应的源代码中存在具有预设并行编程指令属性的源代码,则执行步骤S4,否则,返回执行步骤S2。
步骤S4、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码是否符合预设并行编程指令语法,若符合,则执行步骤S5,否则,生成语法错误提示信息,结束流程。
可以理解的是,在执行抽象语法树转换之前,需要先判断原始抽象语法树节点具有预设并行编程指令属性的源代码是否符合预设并行编程指令语法,若不符合,则直接生成语法错误提醒,结束流程,避免后续做无用计算。
步骤S5、获取当前编译属性信息,若为主机端编译,则执行步骤S6,若为设备端编译,则执行步骤S7。
需要说明的是,当前编译属性信息指的是标识为主机端编译或设备段编译的信息,此信息在执行编译流程时,可以直接获取到。作为示例,主机端指的是中央处理器(Central Processing Unit)一侧,设备端指的是图形处理器(英语:Graphics ProcessingUnit,简称:GPU)一侧。
步骤S6、根据预设并行编程指令种类,将当前遍历的节点转换为主机端调用设备段代码的抽象语法树结构,执行步骤S8。
步骤S7、根据预设并行编程指令种类,将当前遍历的节点转换为设备端的执行代码的抽象语法树结构,执行步骤S8。
步骤S8、若所述原始抽象语法树中存在未遍历节点,则返回步骤S2,否则,将当前处理后的原始抽象语法树确定为目标抽象语法树。
需要说明的是,通过步骤S1-步骤S8的转换,即可将原始抽象语法树转换为异构设备实现并行编程过程中能直接识别的目标抽象语法树。
步骤S9、基于所述目标抽象语法树生成目标机器语言。
本发明实施例所述方法仅需将原始抽象语法树转换为异构设备实现并行编程过程中能直接识别的目标抽象语法树,无需在编译其他过程中添加额外的处理,减少运行时环境的依赖,执行环境中不需要额外的动态库,支持编译后的可执行文件快速迁移。对于基于相同设计理念的异构设备中,对抽象语法树的转换是通用的,对于编译器增加新的设备支持几乎无成本。且由于直接转换抽象语法树,且没有运行时的依赖,编译过程中可以进行更多的优化处理,最终程序性能会更好。
作为一种实施例,所述步骤S1包括:
步骤S11、获取源代码字符流进行词法分析,生成符号流。
其中,编译器的输入为源代码的文本,读取源代码文本能够获取到源代码字符流,通过词法分析能够将字符流按照一定的规则生成一定的符号,将生成的符号组合在一起生成符号流。
步骤S12、将所述符号流进行语法分析生成所述原始抽象语法树。
需要说明的是,原始抽象语法术后需要满足语法分析对应的规范,若不满足,则整个过程将会失败退出,无法继续进行。
作为一种实施例,所述步骤S3包括:
步骤S31、判断当前遍历的节点对应的源代码中的代码语句或代码块的前一行代码中是否包括预设的并行编程指令固定文本,若存在,在将该代码语句或代码块确定为具有预设并行编程指令属性的源代码。
需要说明的是,步骤S31需要结合源代码进行分析。所述预设并行编程具体可以为OpenMP编程,所述预设的并行编程指令固定文本为“#pragma omp”。OpenMP编程为现有的一种并行编程方式,在此不再赘述。
作为一种实施例,所述步骤S4包括:
步骤S41、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码中的指令名称是否符合预设的并行编程指令设置规范,若符合,则执行步骤S4,否则,返回执行步骤S22,否则,执行步骤S44。
步骤S42、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码的关联语句、声明或代码块是否符合预设的并行编程指令设置规范,若符合,则执行步骤S4,否则,返回执行步骤S23,否则,执行步骤S44。
步骤S43、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码的跟随子句以及参数格式是否符合合预设的并行编程指令设置规范,若符合,则执行步骤S5,否则,执行步骤S44。
步骤S44、生成语法错误提示信息,结束流程。
通过步骤S41-步骤S44能够快速全面地检查当前遍历的节点对应的具有预设并行编程指令属性的源代码是否符合预设并行编程指令语法,若不符合则生成语法错误提示信息,结束流程,避免后续进行无用计算。
作为一种实施例,所述步骤S6包括:
步骤S61、判断当前遍历的节点对应的具有预设并行编程指令属性的源代码所属的预设并行编程指令种类,若为声明指令,则执行步骤S62,若为独立指令,则执行步骤S63,若为生成指令,则执行步骤S64,若为复合指令,则执行步骤S65,若为组合指令,则执行步骤S66。
步骤S62、根据述声明指令以及对应的子句,采用预设的主机端特征记录表记录所述声明指令的关联语句、声明或代码块的特征信息,若所述声明指令同时属于独立指令,则从子句中预测出对应的特征信息,记录在所述预设的主机端特征记录表中。
需要说明的是,预设的主机端特征记录表原始为空,随着流程的执行,根据需求在所述预设的主机端特征记录表中增加特征信息。
步骤S63、根据独立指令以及对应的子句,在原始抽象语法树中***独立指令以及对应的子句所指示含义代码对应的AST节点。
步骤S64、根据生成指令、对应的子句以及预设的主机端特征记录表,预测关联语句或代码结构在设备端执行的线程分布方式,并结合关联语句或代码结构推断参数依赖,基于设备端执行的线程分布方式和参数依赖,将原始抽象语法树中该生成指令对应的AST节点替换为调用设备代码对应的AST节点。
步骤S65、将复合指令中所包含的指令拆分,按照复合指令的先后关系将拆分后的指令逐一返回执行步骤S61;
步骤S66、将组合指令中包含的指令拆分,按照组合指令中位置的先后将拆分后的指令逐一返回执行步骤S61。
需要说明的是,步骤S65、步骤S66拆分生成的指令,返回步骤S61中也作为当前遍历的节点对应的具有预设并行编程指令属性的源代码,逐一进行处理。
作为一种实施例,所述步骤S7包括:
步骤S71、判断当前遍历的节点对应的具有预设并行编程指令属性的源代码所属的预设并行编程指令种类,若为声明指令,则执行步骤S72,若为独立指令,则执行步骤S73,若为生成指令,则执行步骤S74,若为复合指令,则执行步骤S75,若为组合指令,则执行步骤S76。
步骤S72、根据述声明指令以及对应的子句,采用预设的设备端特征记录表记录所述声明指令的关联语句、声明或代码块的特征信息,若所述声明指令同时属于独立指令,则从子句中预测出对应的特征信息,记录在所述预设的设备端特征记录表中。
需要说明的是,预设的设备端特征记录表原始为空,随着流程的执行,根据需求在所述预设的设备端特征记录表中增加特征信息。
步骤S73、根据独立指令以及对应的子句,在原始抽象语法树中***独立指令以及对应的子句所指示含义代码对应的AST节点。
步骤S74、根据预设的设备端特征记录表依次将生成代码对应的关联代码或循环中的语句进行转换处理,若出现具有预设并行编程指令属性的指令,则返回执行步骤S71。
步骤S75、将复合指令中所包含的指令拆分,按照复合指令的先后关系将拆分后的指令逐一返回执行步骤S71。
步骤S76、将组合指令中包含的指令拆分,按照组合指令中位置的先后将拆分后的指令逐一返回执行步骤S71。
需要说明的是,步骤S74中出现的具有预设并行编程指令属性的指令,步骤S65、步骤S66拆分生成的指令,返回步骤S71中也作为当前遍历的节点对应的具有预设并行编程指令属性的源代码,逐一进行处理。
作为一种实施例,所述步骤S9包括:
步骤S91、将所述目标抽象语法树输入中间代码生成器中生成目标中间代码。
步骤S92、将所述目标中间代码输入机器无关代码优化器中进行优化,生成优化后的目标中间代码。
步骤S93、将所述优化后的目标中间代码输入代码生成器生成待优化目标机器语言。
步骤S94、将所述待优化目标机器语言输入机器相关代码优化器中进行优化,生成目标机器语言。
需要说明的是,步骤S91-步骤S94中的中间代码生成器、机器无关代码优化器、代码生成器、相关代码优化器直接采用现有的中间代码生成器、机器无关代码优化器、代码生成器、相关代码优化器实现即可,在此不再展开描述。
需要说明的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行本发明实施例所述的方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机指令用于执行本发明实施例所述的方法。
本发明实施例仅需将原始抽象语法树转换为异构设备实现并行编程过程中能直接识别的目标抽象语法树,无需在编译其他过程中添加额外的处理,对于基于相同设计理念的异构设备,具有通用性。本发明减少了运行时对环境的依赖,且执行环境中不需要设置额外的动态库,极大降低了支持并行编程的成本,提高了实现并行编程的编译效率。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (10)
1.一种用于实现并行编程的编译方法,其特征在于,包括:
步骤S1、获取原始抽象语法树,所述原始抽象语法树包括多个节点,每一节点对应至少一行源代码;
步骤S2、依次遍历所述原始抽象语法树中未遍历过的节点;
步骤S3、若当前遍历的节点对应的源代码中存在具有预设并行编程指令属性的源代码,则执行步骤S4,否则,返回执行步骤S2;
步骤S4、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码是否符合预设并行编程指令语法,若符合,则执行步骤S5,否则,生成语法错误提示信息,结束流程;
步骤S5、获取当前编译属性信息,若为主机端编译,则执行步骤S6,若为设备端编译,则执行步骤S7;
步骤S6、根据预设并行编程指令种类,将当前遍历的节点转换为主机端调用设备端代码的抽象语法树结构,执行步骤S8;
步骤S7、根据预设并行编程指令种类,将当前遍历的节点转换为设备端的执行代码的抽象语法树结构,执行步骤S8;
步骤S8、若所述原始抽象语法树中存在未遍历节点,则返回步骤S2,否则,将当前处理后的原始抽象语法树确定为目标抽象语法树,所述目标抽象语法树为异构设备实现并行编程过程中能直接识别的抽象语法树;
步骤S9、基于所述目标抽象语法树生成目标机器语言。
2.根据权利要求1所述的方法,其特征在于,
所述步骤S1包括:
步骤S11、获取源代码字符流进行词法分析,生成符号流;
步骤S12、将所述符号流进行语法分析生成所述原始抽象语法树。
3.根据权利要求1所述的方法,其特征在于,
所述步骤S3包括:
步骤S31、判断当前遍历的节点对应的源代码中的代码语句或代码块的前一行代码中是否包括预设的并行编程指令固定文本,若存在,在将该代码语句或代码块确定为具有预设并行编程指令属性的源代码。
4.根据权利要求3所述的方法,其特征在于,
所述预设并行编程为OpenMP编程,所述预设的并行编程指令固定文本为“#pragmaomp”。
5.根据权利要求1所述的方法,其特征在于,
所述步骤S4包括:
步骤S41、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码中的指令名称是否符合预设的并行编程指令设置规范,若符合,则执行步骤S4,否则,返回执行步骤S22,否则,执行步骤S44;
步骤S42、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码的关联语句、声明或代码块是否符合预设的并行编程指令设置规范,若符合,则执行步骤S4,否则,返回执行步骤S23,否则,执行步骤S44;
步骤S43、检查当前遍历的节点对应的具有预设并行编程指令属性的源代码的跟随子句以及参数格式是否符合合预设的并行编程指令设置规范,若符合,则执行步骤S5,否则,执行步骤S44;
步骤S44、生成语法错误提示信息,结束流程。
6.根据权利要求1所述的方法,其特征在于,
所述步骤S6包括:
步骤S61、判断当前遍历的节点对应的具有预设并行编程指令属性的源代码所属的预设并行编程指令种类,若为声明指令,则执行步骤S62,若为独立指令,则执行步骤S63,若为生成指令,则执行步骤S64,若为复合指令,则执行步骤S65,若为组合指令,则执行步骤S66;
步骤S62、根据述声明指令以及对应的子句,采用预设的主机端特征记录表记录所述声明指令的关联语句、声明或代码块的特征信息,若所述声明指令同时属于独立指令,则从子句中预测出对应的特征信息,记录在所述预设的主机端特征记录表中;
步骤S63、根据独立指令以及对应的子句,在原始抽象语法树中***独立指令以及对应的子句所指示含义代码对应的AST节点;
步骤S64、根据生成指令、对应的子句以及预设的主机端特征记录表,预测关联语句或代码结构在设备端执行的线程分布方式,并结合关联语句或代码结构推断参数依赖,基于设备端执行的线程分布方式和参数依赖,将原始抽象语法树中该生成指令对应的AST节点替换为调用设备代码对应的AST节点;
步骤S65、将复合指令中所包含的指令拆分,按照复合指令的先后关系将拆分后的指令逐一返回执行步骤S61;
步骤S66、将组合指令中包含的指令拆分,按照组合指令中位置的先后将拆分后的指令逐一返回执行步骤S61。
7.根据权利要求1所述的方法,其特征在于,
所述步骤S7包括:
步骤S71、判断当前遍历的节点对应的具有预设并行编程指令属性的源代码所属的预设并行编程指令种类,若为声明指令,则执行步骤S72,若为独立指令,则执行步骤S73,若为生成指令,则执行步骤S74,若为复合指令,则执行步骤S75,若为组合指令,则执行步骤S76;
步骤S72、根据述声明指令以及对应的子句,采用预设的设备端特征记录表记录所述声明指令的关联语句、声明或代码块的特征信息,若所述声明指令同时属于独立指令,则从子句中预测出对应的特征信息,记录在所述预设的设备端特征记录表中;
步骤S73、根据独立指令以及对应的子句,在原始抽象语法树中***独立指令以及对应的子句所指示含义代码对应的AST节点;
步骤S74、根据预设的设备端特征记录表依次将生成代码对应的关联代码或循环中的语句进行转换处理,若出现具有预设并行编程指令属性的指令,则返回执行步骤S71;
步骤S75、将复合指令中所包含的指令拆分,按照复合指令的先后关系将拆分后的指令逐一返回执行步骤S71;
步骤S76、将组合指令中包含的指令拆分,按照组合指令中位置的先后将拆分后的指令逐一返回执行步骤S71。
8.根据权利要求1所述的方法,其特征在于,
所述步骤S9包括:
步骤S91、将所述目标抽象语法树输入中间代码生成器中生成目标中间代码;
步骤S92、将所述目标中间代码输入机器无关代码优化器中进行优化,生成优化后的目标中间代码;
步骤S93、将所述优化后的目标中间代码输入代码生成器生成待优化目标机器语言;
步骤S94、将所述待优化目标机器语言输入机器相关代码优化器中进行优化,生成目标机器语言。
9.一种电子设备,其特征在于,包括:
至少一个处理器;
以及,与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行前述权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于执行前述权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311309287.1A CN117075909B (zh) | 2023-10-11 | 2023-10-11 | 用于实现并行编程的编译方法、电子设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311309287.1A CN117075909B (zh) | 2023-10-11 | 2023-10-11 | 用于实现并行编程的编译方法、电子设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117075909A CN117075909A (zh) | 2023-11-17 |
CN117075909B true CN117075909B (zh) | 2023-12-15 |
Family
ID=88702661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311309287.1A Active CN117075909B (zh) | 2023-10-11 | 2023-10-11 | 用于实现并行编程的编译方法、电子设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117075909B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117311988B (zh) * | 2023-11-27 | 2024-03-12 | 沐曦集成电路(南京)有限公司 | 一种带掩码的规约操作优化方法、装置、设备及介质 |
CN118113301B (zh) * | 2024-04-26 | 2024-07-05 | 中国气象局地球***数值预报中心 | 一种数值天气预报模式程序的程序代码检查方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113283613A (zh) * | 2021-07-23 | 2021-08-20 | 上海燧原科技有限公司 | 深度学习模型的生成方法、优化方法、装置、设备及介质 |
CN114385173A (zh) * | 2020-10-16 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 编译方法、装置、设备及存储介质 |
CN114398039A (zh) * | 2021-12-03 | 2022-04-26 | 武汉大学 | 一种自动细粒度的两级并行翻译方法 |
CN116149670A (zh) * | 2023-04-21 | 2023-05-23 | 湖南泛联新安信息科技有限公司 | 一种基于图的hdl编译优化方法 |
CN116501330A (zh) * | 2023-04-23 | 2023-07-28 | 寂山智工(苏州)科技有限公司 | 一种基于解耦架构的文本类编程语言编译方法 |
-
2023
- 2023-10-11 CN CN202311309287.1A patent/CN117075909B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385173A (zh) * | 2020-10-16 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 编译方法、装置、设备及存储介质 |
CN113283613A (zh) * | 2021-07-23 | 2021-08-20 | 上海燧原科技有限公司 | 深度学习模型的生成方法、优化方法、装置、设备及介质 |
CN114398039A (zh) * | 2021-12-03 | 2022-04-26 | 武汉大学 | 一种自动细粒度的两级并行翻译方法 |
CN116149670A (zh) * | 2023-04-21 | 2023-05-23 | 湖南泛联新安信息科技有限公司 | 一种基于图的hdl编译优化方法 |
CN116501330A (zh) * | 2023-04-23 | 2023-07-28 | 寂山智工(苏州)科技有限公司 | 一种基于解耦架构的文本类编程语言编译方法 |
Non-Patent Citations (2)
Title |
---|
Automatic Generation of Warp-Level Primitives and Atomic Instructions for Fast and Portable Parallel Reduction on GPUs;Simon Garcia De Gonzalo等;《2019 IEEE/ACM International Symposium on Code Generation and Optimization (CGO)》;1-12 * |
基于OpenMP的并行Fortran程序数据竞争静态检测方法;葛优;《小型微型计算机***》;1-6 * |
Also Published As
Publication number | Publication date |
---|---|
CN117075909A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117075909B (zh) | 用于实现并行编程的编译方法、电子设备和介质 | |
JP4822817B2 (ja) | コンパイルシステム | |
US7086046B2 (en) | Method and apparatus for displaying compiler-optimizated code | |
CN110149800B (zh) | 一种用于处理与源程序的源代码相关联的抽象语法树的装置 | |
US20070226720A1 (en) | System and Method for Efficiently Passing Information Between Compiler and Post-Compile-Time Software | |
EP2434396A1 (en) | Automatic synchronous-to-asynchronous software application converter | |
CN111736954B (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** | |
US9164744B2 (en) | Method and system for program building | |
JP2022031507A (ja) | ディープラーニングフレームワークにおける演算子の展開方法、展開装置及び電子機器 | |
CN109491658A (zh) | 计算机可执行代码数据的生成方法及装置 | |
US20060200796A1 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JP2002024029A (ja) | コンパイラ、コンパイル方法及びコンパイルプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
CN115639980A (zh) | 一种低代码平台可拖拽的前端逻辑编排方法及装置 | |
US8930925B2 (en) | Method for enabling compilation of a Cobol source program utilizing a two-stage compilation process, the Cobol source program including a mix of Cobol, C++ or JAVA statements, and optional OpenMP directives | |
KR20170014613A (ko) | 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체 | |
JP2009169864A (ja) | コンパイル方法およびコンパイルプログラム | |
CN111596923B (zh) | Haxe静态链接库构建方法、装置和电子设备 | |
JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
CN112596737A (zh) | 一种函数调用关系的扫描方法、***、设备及存储介质 | |
EP1785848A1 (en) | Method and apparatus for semantic checking of program code | |
Kats et al. | Interactive disambiguation of meta programs with concrete object syntax | |
Smyth et al. | Code generation for sequential constructiveness | |
JP2001034482A (ja) | コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |