今年中秋和国庆时间较近,群里就举办了一个CUDA算法加速比赛-欢庆中秋喜迎国庆,2015双庆杯CUDA算法竞赛,作为群里唯二的管理员(另一个是风大有木有!),自然就成为组织者之一。经过一番折腾,比赛终于在昨天落下帷幕。故写篇有感博客,写一下自己的经验和感想
比赛说明
欢庆中秋喜迎国庆,2015双庆杯CUDA算法竞赛
参与方式,以小组为单位,最少2人, 最多3人, 组员必须是本群群友。
不管你是大咖还是小鸟, 今日的差距不代表明日的成败, 唯一不变的是进步与沟通。课题等你来挑战(等待正式公布),大奖等你来赢取,还等什么,快快拿起键盘走起。
暂设一等奖GTX970 4GB 一块, 没有二等奖,不用往下看了也没有三等奖, 对了只有一等奖。
所有参与的小组,未获一等奖的,可以领取鼓励奖。所有参与这次互动的群友,有机会获得纪念奖,NV保温杯一个。
以上活动将由英伟达NV赞助,活动解释权归属CUDA Professional 群组委会
经验
出题目是组织比赛中最困难的环节。
首先是找题目,要求是找个简单易行的并行课题,要求简单易行,运算时间控制在1分钟以内,主要做精细化tuning,主要做精细化tuning
。心理瞬间就没底了,虽然做cuda不短了,但是立马哪能想出这样的题啊
开启脑洞模式,开始在各大cuda论坛、数据结构书、cuda书、历年cuda校园程序设计大赛的题目各种找……废了好大的劲找了一个字符串匹配的题,哎,比较适合,就它了。
原以为找完题省下的基本就很简单了,结果还是too young啊。
cuda比赛不同于其他比赛的最大特点是,评比标准是看速度。所以不仅在写题目描述的时候要详细一些,还要给出main.函数模板、main.函数模板、main.函数模板,把文件读取、字符串格式、计时等能定死的全都加上去,参赛者只需要在计时模块内的函数的函数内实现就可以了。要让参赛者提交整个项目,可直接编译运行的那种(比如linux下的makefile,win下的vs项目)。千万不要只给出题目描述,剩下随意发挥。 虽然这种方式能够激发参赛者的创意,但是这样最后没法评啊……而且中国人的应试思维已经根深蒂固了,参赛者会问各种关于题目的细节性问题,逼你把各种东西都定死……
最后还要写生成测试数据的代码和自动测试shell脚本。
后面就比较简单了,交上代码,自动测试脚本一跑,收集数据,评。完事。
还有一个比较重要的问题-平台,有人写的win版本的代码不改在linux都编译都过不了,还有32位和64位的问题,兼容性问题。所以最好要准备win和linux两套系统。实验室的服务器是linux的,没有win,着实也有点坑。
有感
最大的感想就是知道为啥今年NVIDIA不举办cuda校园程序设计大赛了,cuda比赛的特性使其很难同时保持创新性和公平性。按照nv官方给出的比赛描述,我能想象出他们评的时候到底有多蛋疼……
还有就是应试思维,第一次对应试思维深恶痛绝,不过想想自己现在很多时候也是应试思维,唉。
最后留下群主的话:期待下一次的活动,有木有
CUDA Professional(45157483)是目前国内最大的CUDA交流群。欢迎大家加群讨论CUDA问题。