新闻 图说CPC赛事通知新网直通车 新网会客厅

CPC故事 | 西南石油大学“攻壳机动队”

浏览次数:1170 发布时间:2020-11-04-12:11:00

我们是来自西南石油大学的攻壳机动队,非常庆幸能够参加第四届“神威杯”国产CPU并行应用挑战赛,并且能够在本届竞赛中取得优异成绩。


以高性能计算几大赛事为主攻任务,西南石油大学计科院于2019年7月成立“超算与并行计算团队”, “超算与并行计算团队”是由西南石油大学彭博副教授、张全博士带领,由本科生组建的学生科技团队,团队拥有浓厚的学术氛围,能够激励着同学们勇攀高峰。我们也是“超算与并行计算团队”的成员,本届竞赛能够荣获好的成绩,离不开指导老师的悉心指导,同时团队学长也传授给了我们很多参赛的宝贵经验。

“风之积也不厚,则其负大翼也无力。”只有通过平时踏实的积累才能够在赛场上一鸣惊人,本次比赛获得令人满意的成绩,和我们平时投入的大量时间和精力密切相关。长达一年的备赛过程对每个人都是考验。因为手里现成的资料有限,很多方面的知识我们通过网络、图书等多种渠道去搜寻。许多难题甚至没有资料可用,只能依靠我们一起讨论进行攻克。也许在周围许多同学看来,“实验室-食堂-寝室”三点一线的竞赛生活过于枯燥,然而当你沉浸其中时,自会找到其中的乐趣所在,那就是计算机科学独有的理性美,与探索难题带来的成就感。

庄子说:“天地有大美而不言。”对于计算机科学也是如此,计算机科学发展分为三个阶段,钻研的人们对于美的感受也是在一层层的推进中不断达到一个新的高度。早期就是让计算机可以运行起来,其重点在于开发程序语言、编译技术、操作系统,以及研究支撑它们的数学理论。中期是让计算机变得有用,变得高效,重点在于研究算法和数据结构。第三个阶段是让计算机具有更广泛的应用,即用计算机去探索与改造世界,而高性能计算的目的也就是充分挖掘计算机的潜力,让它去解决许多自然科学与工程上的计算难题及任务。

在调试并行计算有关代码的过程中,许多细节性问题都关系重大,对于程序员也提出了巨大的挑战。计算机作为人类心智的延伸,它只会精确地执行预先编好的程序。而程序员做为程序的编写者,必须要在足够理性与严谨的形态下才能减少程序的出错。而这种理性思考与探索的过程本身就是一种艺术,这种艺术能让你沉浸其中,最终在程序以极快的速度正确运行时取得升华,而这也是我们所有人的兴趣所在。凭借着这种兴趣,以及对成功的渴望和永不服输的精神,我们在这场“迷航旅途”中,不断突破自我,乘风破浪,最终到达了成功的彼岸。

本届竞赛决赛赛题是一个大规模网格数据的遍历算法优化,组委会给出指定的网格计算算子,我们要求针对该算子设计一个并行遍历算法。而该网格数据以图数据结构的形式进行存储,针对图数据结构的并行划分策略有按点分和按边划分两种。其中按点划分具有许多缺点,包括对点的更新存在读写冲突(跨越多个从核的边对应顶点),需要对数据进行预处理(找每个点对应的边,开销很大),数据的稀疏性导致负载不均衡(很多点没有边)等。而按边划分具有负载均衡、符合原数据结构的优点,但该方法也同样带来了对点的更新存在读写冲突(邻边分布在不同的从核)的缺点。两种划分方式都存在读写冲突,需要额外的同步开销,但是划分边可以确保负载均衡,并且没有额外的数据预处理开销,因此我们最终采用了按边划分的并行策略。

赛题中还有一个难点就是划分前的边和节点的逻辑编号和划分后的边和节点的逻辑编号的映射建立,即完成算法的拓扑重排功能。然而拓扑重排需要完成边和节点的去重,而手工实现哈希表完成边和节点的去重难度过大。我们仔细研究了组委会给出的原始数据结构,发现拓扑信息规则为按行有限存储每条边的行列坐标,因此行号是从小达到的顺序排列,出现重复的行号必然也是连续的。据此特点,行号的重排只需要对局部点编号进行单次遍历即可,同时按照此特性节约了大量的时间。而点的离散访存瓶颈解决也是该算法的难点,我们为了增大DMA传输的粒度,采用将重排后的连续的点合并读取方法。最终我们的算法经受住了大量数据集的考验,同时具备了加速能力与算法鲁棒性。

西南石油大学“攻壳机动队”参赛队员涂然在10月29日高性能计算前沿技术培训中与本校师生分享参赛经验。

在本次比赛中我们收获了许多,但最让我们印象深刻的就是与其他学校参赛队的友谊。通过这次比赛我们认识了其他高校的参赛队员,在与他们交流的过程中我们也取到了不少经。希望以后通过并行计算领域的比赛,结识到更多其他高校的朋友,相互学习,一起进步。

欢迎大家分享自己的参赛感想、故事、收获或想对CPC说的话,可以微信留言、私信或发送邮件至cpc@paratera.com和组委会取得联系。


版权所有 国产CPU并行应用挑战赛