System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机科学与气象科学的交叉学科研究领域,尤其是涉及一种fortran与pytorch互连互通的适配器中间件及其使用方法。
技术介绍
1、地球系统模型一直是天气和气候数值模拟与预测的重要工具,而研发出更高效且更精确的地球系统模型始终是学界不断探索的重要发展方向。然而,目前的地球系统模型中,各分量模型的物理过程参数化方案时十分耗时。近年来,科学家们致力于寻求解决方案,尝试利用深度学习技术开发出了相关参数化的替代方案,取代大气和海洋中的参数化过程,这不仅显著提高了模型的计算效率,同时也大大减少了模型模拟所需的计算资源,具有突破性的意义。
2、然而,大多数地球系统模式都是基于fortran语言开发的,而深度学习模型则多采用python等新兴语言。这导致了两者之间存在语言不兼容的问题。由于缺少将深度学习模型有效耦合进地球系统模型的工具,这些深度学习模型现阶段只能进行线下训练,无法预知这些模型在在线模拟中能否产生稳定且精确的输出结果。因此,解决fortran与python之间的代码兼容性问题,以及开发出能将深度学习模型有效耦合至地球系统模型的工具,对于深度学习参数化替代模型的研究和开发具有至关重要的推动意义。
技术实现思路
1、本专利技术的目的是为了弥合基于fortran语言的地球系统模式与基于python语言的深度学习模型两种环境的割裂,提供一种fortran与pytorch互连互通的适配器中间件(fortran torch adaptor,fta)及其使用方法。f
2、本专利技术的目的可以通过以下技术方案来实现:
3、一种fortran与pytorch互连互通的适配器中间件,所述适配器中间件为利用c++与fortran的编程语言互操作特性设计的基于fortran的pytorch接口。
4、所述适配器中间件以c语言作为中间层,实现c++与fortran的互相调用。
5、所述适配器中间件通过改变张量对象中记录的维度信息,实现不同语言环境下对同一个内存空间中的数组元素的正确索引。
6、所述适配器中间件通过预编译来处理不同的ai模型的输入输出格式,提供通用接口。
7、一种fortran与pytorch互连互通的适配器中间件的使用方法,采用如上述所述的适配器中间件实现,所述方法包括以下步骤:
8、步骤1)准备阶段:安装适配器中间件的依赖项;
9、步骤2)配置阶段:在适配器中间件的配置文件中定义的配置选项;
10、步骤3)预编译阶段:根据ai模型输入输出定义接口的形式,并生成对应的接口文件,作为编译阶段的输入;
11、步骤4)编译阶段:根据环境信息,将接口文件编译成一个共享库文件,并构建执行文件用于测试,验证共享库的正确性;
12、步骤5)测试阶段:测试编译的共享库在用户环境下的执行效果,确保其在用户环境下正常运行;
13、步骤6)使用阶段:用户在程序中使用适配器中间件提供的通用接口,在fortran程序中引入适配器中间件生成的共享库,进而调用ai模型。
14、步骤1)所述的依赖项包括构建工具cmake、编译器gcc或icc以及pytorch的c++前端libtorch。
15、步骤2)所述的配置阶段的配置选项分为ai模型配置选项和环境配置选项两类。
16、所述ai模型配置选项包括模型的输入输出数据维度和数据类型
17、所述环境配置选项包括libtorch的存储位置和编译器的选择。
18、步骤3)所述的预编译阶段包括以下步骤:
19、步骤31)获取用户提供的存储输入输出格式信息的配置文件;
20、步骤32)适配器中间件根据所述配置文件生成对应的接口代码,并根据环境信息将其编译为共享库;
21、步骤33)在程序中使用适配器中间件提供的通用接口,来和配置中定义的ai模型进行交互。
22、与现有技术相比,本专利技术具有以下有益效果:
23、(1)易用性:用户仅仅需要像调用一个普通的fortran库函数一样使用fta提供的接口,这对于用户来说非常友好,因为用户无需掌握gpu开发的背景知识,也无需理解编程语言互操作的工作机制。
24、(2)可拓展性:针对fta的需求,需要提供灵活的使用方式,以便用户能够根据自身的需求进行自由的定制。用户可以根据不同的场景,选择合适的环境配置选项、使用的编译器、ai模型的输入输出维度与类型、是否使用gpu资源进行推理以及ai模型的存储位置等一系列可定制的参数。
25、(3)高效性:使用ai模型替换参数化方案后可以极大提升原始参数化方案的运行效率。
本文档来自技高网...【技术保护点】
1.一种Fortran与Pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件为利用C++与Fortran的编程语言互操作特性设计的基于Fortran的PyTorch接口。
2.根据权利要求1所述的一种Fortran与Pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件以C语言作为中间层,实现C++与Fortran的互相调用。
3.根据权利要求1所述的一种Fortran与Pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件通过改变张量对象中记录的维度信息,实现不同语言环境下对同一个内存空间中的数组元素的正确索引。
4.根据权利要求1所述的一种Fortran与Pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件通过预编译来处理不同的AI模型的输入输出格式,提供通用接口。
5.一种Fortran与Pytorch互连互通的适配器中间件的使用方法,其特征在于,采用如权利要求1-4中任一所述的适配器中间件实现,所述方法包括以下步骤:
6.根据权利要求5所述的一种Fortran与
7.根据权利要求5所述的一种Fortran与Pytorch互连互通的适配器中间件的使用方法,其特征在于,步骤2)所述的配置阶段的配置选项分为AI模型配置选项和环境配置选项两类。
8.根据权利要求7所述的一种Fortran与Pytorch互连互通的适配器中间件的使用方法,其特征在于,所述AI模型配置选项包括模型的输入输出数据维度和数据类型。
9.根据权利要求7所述的一种Fortran与Pytorch互连互通的适配器中间件的使用方法,其特征在于,所述环境配置选项包括libtorch的存储位置和编译器的选择。
10.根据权利要求5所述的一种Fortran与Pytorch互连互通的适配器中间件的使用方法,其特征在于,步骤3)所述的预编译阶段包括以下步骤:
...【技术特征摘要】
1.一种fortran与pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件为利用c++与fortran的编程语言互操作特性设计的基于fortran的pytorch接口。
2.根据权利要求1所述的一种fortran与pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件以c语言作为中间层,实现c++与fortran的互相调用。
3.根据权利要求1所述的一种fortran与pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件通过改变张量对象中记录的维度信息,实现不同语言环境下对同一个内存空间中的数组元素的正确索引。
4.根据权利要求1所述的一种fortran与pytorch互连互通的适配器中间件,其特征在于,所述适配器中间件通过预编译来处理不同的ai模型的输入输出格式,提供通用接口。
5.一种fortran与pytorch互连互通的适配器中间件的使用方法,其特征在于,采用如权利要求1-4中任一所述的适配器中间件实现,所述方法包括以下步骤:...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。