首页/文章/ 详情

天津大学邵源同学:从编程小白到并行计算探索者的蜕变

13小时前浏览26
导读:如今,对任何行业的从业者,编程都是一个能极大增强生产力的工具。在天津大学本科就读期间,我有幸参与了上海交通大学张斌老师的C++/Python/Fortran编程课。在主要学习C++的过程中,受益于合理的课程设计,我得到了一套实用的编写代码的观念,并且对基于编程的科研树立了信心。在后续的实战训练中,在老师和学长们的帮助下,我完成了一项求解器移植任务。两项并行计算相关程序的开发,并将继续在张老师团队进行并行计算的学习和项目开发。

一、从无到有学习编程基础

我在论坛上偶然了解到张斌老师的编程课堂。学习的主要内容是用C++复现课程论文里的相关算例。通过半个月的编程练习,我从无到有的掌握了如何开发C++程序,如何消化吸收一个已有程序,当程序出现问题时候如何排查和解决。通过低阶格式到高阶格式,一维到二维程序的编写,打好了编写程序的基础。

在学习过程中发挥核心作用的就是每天晚上的答疑会议,在会议上学习到的编程观念和学习方法让我受益匪浅并沿用至今,以后的学习思路也在相关的方法辅助下变得清晰。经过一段短时间的训练,我的编程能力有了较大提高,同时也变的敢于写程序和看程序。在完成基础学习之后,经过交流,我决定学习并行计算方向。

天津大学数学学院

二、编程实战训练深化认识

在首先对组内教学程序进行学习后,我完成的第一个项目是把Fortran的一个求解器移植成C++程序。在程序的书写过程中,我学会了如何简单快速没有笔误的移植程序,精准定位代码的错误,如何高效的和同学们交流并解决问题,以及遇到程序性能瓶颈应该如何优化。这为我后续学习提供了更实际的经验。

我完成的第二个任务是把一个化学反应的八叉树负载平衡自适应网格Python生成程序并行化,并移植在超算上。对空间内分布不均匀的化学反应,结构化网格若想实现负载平衡,八叉树是一个好的管理方式,这项工作本身有较大并行价值。在完成这项任务时候,我获得的经验是对复杂的代码,一定要在结果不变的前提下简化成自己适应的形式,在提炼出计算量的实质之后,再进行对已有并行手段的调研,综合实现难度和效果选择一个最佳选择方案。最后成功实现符合Python CPU并行预期的加速效果。

我完成的第三个任务是基于zoltan和Metis实现自研软件网格部分的分割染色工作。大规模并行问题中,为了解决访存开销等性能瓶颈需要引入共享内存机制,但是共享内存会造成数据竞争,导致计算结果出问题,并且难以排查和修复。科学计算往往以网格为物理背景,对网格进行分类,使得有竞争关系(相邻)的网格不同时更新,是大规模并行的必由之路,Zoltan提供了有效的网格划分和染色工具,但需要方便的接口实现对实际大规模网格的应用。

三、在张老师团队继续科研

在张老师团队的短短几个月,我从对并行计算一无所知到初窥门径,到能实际的产生具体效益。离不开张老师的指导和团队学长们的细致辅导,良师益友的全面帮助让我的编程能力有了极大提升,未来我将继续在张老师团队学习科研,为将来在并行计算领域读博奠定基础。

四、高级编程人才训练营

2025年1月2日,由上海交通大学航空航天学院张斌教授组织《高级编程人才定制培养训练营——上海交通大学C++/Fortran/Python编程综合技能课程又要开启了,让学习者 “先人一步”出国留学/保研升学/高薪就业。自2025年起,学习者可以在仿真秀官网和APP报名,长期招生。
(一)上海交通大学张斌教授及团队亲授

张斌,上海交通大学航空航天学院研究员,从事飞行器设计。拥有15年(2008-至今)传授本科生如何掌握科研编程技能,组织了一个约20人的编程教学研发团队(博士、硕士、本科),主开发了一套适合零基础学生掌握编程能力的教学方法;拥有大量科研项目中积累的实际编程教学案例

张 斌 研究员 博导

博士,上海交通大学航空航天学院研究员、上海交通大学晨星学者,入选四川省天府“峨眉计划”。燃烧空气动力学专委会委员。
研究方向:计算流体力学算法和少样本智能建模方法。在Journal of Computational Physics、Journal of Fluid Mechanics、Combustion and flame和Physics of Fluids等行业权威期刊上发表了80余篇SCI/EI论文,申请专利和软件著作权30余项。
主持四川省融办重大项目、四川省科技厅重点研发项目、GF973子课题项目、国家自然科学基金面向上项目、国家自然科学基金重大研究计划培育项目、青年基金等20余项课题,作为技术骨干参与了“两机”专项重大项目、国家自然科学基金重大集成项目等。
(二)“三个阶段”系统培训高级编程人才

第一阶段教学大纲(基础班)  

  1、学习目标

(1)学习基础编程书写规范
(2)学习正向逆向编程技巧
(3)学习四步编程底层逻辑

  2、学习方式

(1)线上跟着视频课自学独立完成规定教学内容
(2)每晚8-9点小组(学员+1个助教)线上讨论编程 bug和解决思路
(3)每天导师会随机进入各个小组参与学员和助教的讨论
(4)推荐寒暑假时间集中1-2月来学习

  3、学习内容

(1)提供源代码、教学视频和教学资料

(2)Code1:C++ 编写1维标量方程(逆向编程)

(3) Code2:C++ 编写2维标量方程(逆向编程)

(4)Code3:C++编写1维标量方程+UNO 格式+源项(正向编程)

(5Code4:C++编写2维标量方程+UNO 格式+源项(正向编程)

(6)Code5:C++ 编写2维标量方程+WENO 格式+龙格库塔格式(正向编程)

(7) Code6-10 Fortran把 Code1-5 重写一遍

(8)Code11-15 Python 把 Code1-5 重写一遍

  注:进入第一阶段的学员,在2个月以内完成学习内容,讲师提供一对一服务答疑和指导服务 。未能完成学习内容的学员,满2个月以后不再提供答疑和服务指导,但是提供未完成内容程序和代码供自己练习 。

  4、考核方式

(1)线上导师 1vs1 检查 code1-code15,询问编程格式、编程技巧和算法原理.
(2)提交第一阶段编程 bug 集:什么 bug?什么原因?如何解决? 

 5、预期效果

(1)零基础学员具备完成学科类大作业能力

(2)本科毕业设计能力

(3)数模竞赛编程能力

第二阶段教学大纲(强化班)  

1、学习目标

(1)通过实际问题强化学员的综合编程技能

(2)培养学员团队合作精神和高效沟通能力

(3)挖掘具有编程天赋或者创新精神的人才

2、学习方式

(1)依次进入各个强化编程培训小组:格式组、燃烧组、并行组、优化组、图像组、建模组、导弹组、界面组、烧蚀组、稀薄组。
(2)每个组会在助教的协助下,完成一个实际问题的程序反演+1个新任务。
(3)每周天晚 8 点定期小组(学员+1 个助教)线上讨论编程 bug 和解决思路。
(4)每周天导师会随机进入各个小组参与学员和助教的讨论。
(5)学员如果遇到助教也解决不了的问题可直接微 信联系导师。

3、学习内容

格式组:反演 2 维 Euler 方程,编写增加源项程序。

燃烧组:反演氢燃料零维点火程序,编写乙烯燃烧程序。

并行组:反演 2 维标量并行程序,编写 3 维标量并行程序。

优化组:反演 Fortran 遗传算法程序,编写Python遗传算法程序。

图像组:反演圆孔图像特征识别程序,编写圆孔分类识别程序。

建模组:反演蒙特卡洛采样建模程序,编写自适应采样建模程序。

导弹组:反演 3 自由度导弹飞行轨迹程序,复现论文结果。

界面组:反演商飞任务 1 界面,编写商飞任务 2 界面。

烧蚀组:反演 1 维烧蚀传热程序,复现论文结果。

稀薄组:反应 0 维 DSMC 程序,复现论文结果。

注:(1)实际练习的程序会持续更新,且会大于10个。

(2)进入第二阶段的学员,在一年以内完成学习内容,讲师提供一对一服务答疑和指导服务 。未能完成学习内容的学员,满一年以后不再提供答疑和服务指导,但是提供未完成内容程序和代码供自己练习 。

4、考核方式

(1)每完成一个任务导师线上 1vs1 检查,询问编程 bug 集和算法原理。
(2)完成 10 个任务以上的学员,经过导师测评后可以进入第三个阶段。
(3)如果导师认为学员具有极强的编程天赋,可直接进入第三阶段学习。

5、预期效果

通过第二个阶段的学生具备大部分研究生毕业所需的编程能力。

第三阶段教学大纲(实习)  

1、学习目标

用前沿的工程问题或科学问题培养学生创新精神

2、学习方式

(1)进入到导师研究生小组,和博士生硕士生一起参与科研项目

(2)每周组会需按照研究生标准介绍科研进展

3、预期效果

(1)每个学员会分配到一个具体的需要用编程解决的科研任务,解决后根据任务难度获得 1000、2000、5000 元不等助研费。
(2)每个学员会分配一个具体的研究生进行 1vs1 的科研辅导。
(3)学员有机会线下(上海交通大学四川研究院)科研活动,并获得实习证明。 报销来回路费和住宿费。
(4)学员有机会在导师指导下完成本科毕业设计。
(5)学员有机会获得导师推荐信。

(6)学员可获得深造和就业相关信息,非常出色的学员可获得推荐出国或读研的机会。

(三)适合谁学
1、大一本科生最佳(不限学校和专业,理工科最佳)
2、想读研读博的学生
3、想出国的学生
4、想进大厂工作的学生
注1:不太适合在校高年级研究生,因为需要投入足够多且连续的时间。

注2:不太适合已经工作的工程师,因为需要投入足够多且连续的时间。

(四)报名咨询和试看

请识别下方二维码,购买课程或进入群里咨询老师,购课后进入编程训练营开启学习之旅。

可回放,开发票,奖学金加餐
讲师提供vip交流群/答疑/相关学习资料

(五)真实案例(持续更新中)

仿真秀读者福利

仿真秀,致力于为每一位学习者提供优质的仿真资源与技术服务支持,让您的仿真学习之旅更加顺畅,欢迎在公 众号对话框与我互动交流!以下资料供用户永久免费下载哦(见下图)。

下载地址在仿真秀APP公 众号菜单-资料库-资料下载-进入百度云盘群下载,不会失效,且永久免费更新。
扫码进编程技术群领仿真资料包
咨询交大张斌老师团队

(完)


来源:仿真秀App
燃烧化学航空航天UGpython
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-17
最近编辑:13小时前
仿真圈
技术圈粉 知识付费 学习强国
获赞 10336粉丝 21831文章 3626课程 222
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈