岗位描述
岗位职责
1. 原型代码的工程化改造:
代码重构与模块化:接手科研人员编写的Fortran/C++/Python原型代码,将其从“一次性验证”的脚本,重构为结构清晰、可读性强、易于维护的软件模块。
接口封装:为模型核心计算逻辑设计并开发标准化的API接口,使其能被上层业务系统(如调度平台、数字孪生系统)方便调用。
2. 性能优化与并行计算
性能瓶颈分析:使用性能分析工具(如Intel VTune、gprof)定位模型运行中的性能短板(如CPU计算、内存访问、I/O读写)。
并行化实现:基于MPI或OpenMP,将原有的串行计算代码改造为并行版本,以利用多核CPU或计算集群缩短计算时间。
GPU加速探索:识别计算密集型模块(如矩阵运算、网格遍历),尝试使用CUDA将其移植到GPU上运行,进一步压榨算力。
3. 稳定性与测试保障
测试体系建立:为重构后的模块编写单元测试和集成测试用例,确保工程化改造不改变模型原有的物理计算结果(即“优化不改变正确性”)。
异常处理加固:为代码增加健壮的异常捕获、错误日志记录和边界条件处理机制,避免因非法输入或意外状态导致程序崩溃。
可观测性构建:在关键计算节点添加日志输出,便于跟踪模型运行状态和定位线上问题。
岗位要求
1.精通C++和Python,能熟练阅读和修改Fortran代码;
熟悉Git版本控制,有代码重构、模块化开发的实际经验。
有模型封装、API接口开发、系统集成的实际项目经验优先
2.高性能计算:熟悉MPI或OpenMP并行编程,有并行计算实际开发经验。
能使用性能分析工具定位计算、内存、I/O等瓶颈。
3、水动力学领域知识
理解水动力模型基本原理(如势流理论和边界元方法),了解主流模型的功能和应用场景。
了解有限体积法(FVM)等基本数值方法。