百科问答小站 logo
百科问答小站 font logo



将并行计算纳入算法竞赛,是否合适? 第1页

  

user avatar   xcc-12 网友的相关建议: 
      

搞过icpc和发过并行算法论文的人回答:

大部分所说的并行算法是强调实现的,称其为algorithm不如说是implementation。

比如并行字符串匹配这样非常非常难并行的问题,一般的程序是不会接触到的。不会像icpc那里的基本数据结构和算法应用那么广泛。

而且并行很大程度上是硬件相关的,c 编译器有时难以最大程度优化程序,手写asm也是常有的事,这样耗费大量时间的事是不适合做比赛的。


user avatar   yan-gu-31 网友的相关建议: 
      

(题外话:很多其他回答对于并行算法的认识很肤浅啊。说什么并行算法简单粗暴的,依赖硬件的,真是呵呵了。说并行计算相关的算法和普通的算法竞赛差距太大,也是因为并行算法的学习门槛比较高。竞赛中的问题(除了网络流)用到的算法都能并行,不过以一般OI选手的学习能力,大概花半年到一年的时间还达不到学习到这类算法的阶段。而把这些时间花在学现在的竞赛题,那早就可以在OJ上刷的风生水起了。这也从层面说明了并行算法难度过大,不适合作为竞赛内容。因此致力于简化并行算法也是我们目前主要的课题之一。)

我也是不太认同将并行加入程序竞赛的,因为设计好的并行算法需要对于architecture的了解,需要很多细节的考量,这个和ICPC之类抽象的层面解决问题的要求是背道而驰的。

其实对于并行算法的竞赛问题,我们业界内也是有过很多讨论的。像现在ISC这种主要靠“搞”的比赛明显是不可取的(因此你看除了中国之外,世界上并没有主流学校参与,也没有意愿参与。ACM/ICPC世界上还是所有名牌大学都参与的)。但是由于并行算法太难,简单的问题都有现成的写法,稍微有点难度的问题所需要的知识一般本科阶段的理解力基本掌握不了,因此也是很头疼的事情。

ps. 经评论指出,其实很多其他答案和评论说的是(并行编程/语言/实现),不是并行算法。当然这些是学习并行算法的基础,但是不是一码事。类比学习C++/Java语言和学习算法。既然说到竞赛,那肯定是指算法,毕竟也没有C++/Java语言比赛(除了混乱C大赛),只有算法竞赛。不过非常遗憾的是除了复旦的唐老师之外,我还不知道国内有谁还算是比较懂并行算法的了,于是如此完善的一个算法体系,并没有任何中文的教材和中文的课程,所以大家根本不知道他的存在也就不足为奇了。(所以说中国的CS教育和美国的差距还有好几光年啊!)




  

相关话题

  数据分析方法论、流程和框架? 
  学习算法有什么入门级的书 ? 或者学习资料。(英语不太好) 
  二分查找有几种写法?它们的区别是什么? 
  对于编程思想和能力有重大提升的书有哪些? 
  苏联计划经济体制能否在大数据与智能决策时代展现出某些优势? 
  量子计算机的出现会给实际生活带来怎样的改变? 
  国家推行某一项改革后,怎么分析这项改革的经济效果?毕竟经济社会又不能设对照组,经济学有没有相关方法? 
  如何看待快手 CEO 宿华发文称,将用正确的价值观指导算法? 
  《长安十二时辰》里的「大案牍术」是什么?是否有可行性? 
  如何看待 Google 说已经停用 Map Reduce 好多年? 

前一个讨论
童年想要而不得的玩具你后来去买了吗?长大后得到小时候想要的东西是种怎样的体验?
下一个讨论
如何评价电影《爵迹》?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利