跳到主要内容
返回时间线
arXiv来源发表:

老Fortran大气物理代码搬上GPU:四个大模型各写一版JAX,最快一版比串行Fortran快约357倍

核心概要

四个大模型把Kessler暖雨微物理的Fortran代码改写成GPU上的JAX,输出与Fortran参考几乎一致,但GPU性能相差很大,最快一版在缓存GPU执行下比串行Fortran快约357倍。

Source-provided article image: Evaluating LLMs for Translating Legacy Fortran Atmospheric Physics to GPU-Accelerated JAX
Figure 1 · arXiv

深度剖析

LAFT把Fortran大气物理参数化改写成可在GPU上运行的JAX,并让改写后的代码在数值上贴近原Fortran参考。 此前这类物理包为CPU编写,手工移植到GPU需要加速器编程、内存布局和性能调优方面的专门经验,成为模式组现代化代码的瓶颈。 在Kessler暖雨微物理方案上,四个大模型生成的JAX实现与Fortran参考的最大绝对差都落在22个Fortran编译配置给出的参考自身波动范围内,比值在0.42到0.87之间。

数值上等价的改写并不等于GPU上跑得一样快,差别来自生成代码暴露给编译器的计算结构。 此前通用代码翻译研究已报告编译错误、语义错误等问题,但很少区分数值正确与执行效率。 在单块NVIDIA A100上,Claude与GPT版本在10000列时分别用7.32毫秒和7.26毫秒,Gemini版本只用3.05毫秒,而串行Fortran用496.194毫秒;Qwen版本保留逐列顺序循环,在10000列时反而要6271.75毫秒。

LAFT把内存布局转换从科学计算里拆出来,由确定性前端生成桥接层,让大模型只负责计算内核。 Fortran用列主序数组,JAX默认行主序,若把布局转换交给大模型在每个内核里处理,容易出错且重复。 桥接层单独验证往返布局、转置、形状与内存连续性;在10000列时输入输出置换合计约10.5毫秒,而主机到设备与设备到主机传输合计约6.75秒。

启示与展望

报道范围限于Kessler暖雨微物理方案的单次调用,输入为固定种子生成、垂直层数固定为56,列数从50到1000000。数值验收以22个Fortran编译配置给出的参考自身波动包络为阈值,性能在单块NVIDIA A100上以缓存执行时间衡量,不含编译和首次主机与设备传输。适合关注大气模式GPU现代化与科学代码翻译的研究人员和工程师阅读。

验收包络只针对一组输入、一次方案调用和一台机器,编译配置集合刻画的是所测输入下的数值波动,并不覆盖特殊值触发的分支。Qwen版本在五次连续修复后仍保留逐列顺序循环,被保留用于刻画其执行设计。桥接开销由各阶段分别测量后相加估计,并非生产调用中的直接测量。与OpenACC的比较显示小列数时OpenACC更快,大列数时Gemini生成的JAX更快,优势取决于问题规模。