设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Julia语言:让高性能科学计算人人可用

2014-3-27 13:53| 发布者: joejoe0332| 查看: 4535| 评论: 0|原作者: 卢鸫翔,王江平|来自: 《程序员》

摘要: Julia是个灵活动态的语言,最初针对数值计算而发明,项目起初是MIT 的研究课题,现已发展成富有活力的软件系统,也是目前最受关注的编程语言之一。日前,Julia的四位发明者Jeff Bezanson、Stefan Karpinski、Viral B ...


  《程序员》:谈到Julia时,很多文章开篇就会提起它的性能。科学计算语言的性能是一种不可替代的优势吗?

  Stefan:对很多人来说,Julia的性能是一个大卖点。但不是说性能打倒一切,否则我们都去手工编写SIMD和GPU代码了。

  Jeff:性能分两类:尝试一种方案时首次获得的性能和大量努力后获得的性能。我相信前者更为重要,且只要专注于前者,就算不能取得最佳的绝对性能,方案也能有效。

  Viral: 我来分享我做过的另一个开源项目——Circuitscape中的一个故事吧。我和同事Brad McRae开始时可以在10分钟内解决一个100结点的问题。如今,Circuitscape用户每天都能在几分钟内解决拥有数百万结点的问题。我们组合 使用了更好的语言、更好的库以及更好的算法,达成了这一结果。现在的Circuitscape是用Python写的,我们正在试验通过用Julia重写来 实达到更高规模的可能性。性能不是唯一考量,但对于一种科学计算语言,它肯定是最重要的方面之一。


  《程序员》:除了高性能,Julia还有哪些与众不同的特性?

  Jeff:Julia 基于多分派(multiple dispatch)。这是一种强大的面向对象编程机制,以前其他语言也用过,但出于某些原因从未真正流行起来。我们设计的多分派旨在定义具有多种形式和行 为的数学函数,事实证明它也能用于其他情形。它在“你能表达什么”和“编译器能用它做什么”之间达到了很好的平衡。


  Viral:对我来说,Julia最好的方面不是某种语言特性,而是我们终于有了一个平台,在这里来自计算机科学、物理科学、社会科学以及数学领域的专家正在走到一起,创造从未有过的神奇。而这些原来不相往来的社区之间的合作在科学计算方面释放了新的可能性。


  《程序员》:目前Julia最适合哪些场景的应用?

  Jeff:Julia 是真正的通用语言。总体上,我认为要改善一种语言就要使之更通用,而不是更适于某一种任务。但目前Julia最佳的应用案例是探索性计算 (exploratory computing):试验不同的算法或尝试理解数据。模拟也是一个大用例:简洁地描述一套系统,同时获得尽量高的性能。目前,人们也在使用Julia开 发GUI应用和小型的Web应用,但我们并没真正针对这种应用而设计。

  Viral:Julia足以胜任的领域之一是教育。下 一代学生可以直接跨过现有的技术。IJulia图形化的Notebook集成(运行Julia的IPython Notebook)使之对于教学极具魅力。研究者、算法开发者和库作者也在采用Julia,因为Julia使工作更高效。


  当旧思想的精华融入新思想


  《程序员》:在开发过程中,哪一部分投入的精力最多?现在最大的挑战是什么?

  Jeff: 越来越多的时间都花在考虑设计决定,以及为需要完成的工作排优先级上面了。 我们现在面临的一大挑战是随着可用包越来越多、越来越大,用户也需要将越来越多的代码加载到他们的环境中。Julia是设计成即时编译的,在运行时编译这 么多代码已经开始影响速度了。我们正在寻求解决方案,情况应该很快会有改观。

  Viral:设计良好的API需要相当长的时 间。尽管Julia已很快,但我们还需要使它更快,而且更好地并行工作。关于哪些功能留在Base库中,哪些进入包中的决定也很艰难,因为像Julia这 样的语言往往拥有很大的科学计算库作为基础库发布。尽管Julia已是一种可以随时安装的相对方便的科学计算工具,我们还需要在Julia及其生态包的安 装方面做更多简化。


  《程序员》:在Julia的设计过程中,你们遵循哪些原则?

  Jeff: 我们经常引用的一条原则是“做性能开销不大的最有价值的事”。我们愿意牺牲一些性能来换取更可靠、更易编写的程序,但也有限度。性能降低2倍?可以。10 倍?不行。过去,这方面做了很多错误的妥协——例如,C和C++为了在这儿那儿省下一条指令,不惜为用户带来大量问题。

  Viral: 我们始终考虑编程的便捷。让语言成为动态的很重要,但也要有些限制,从而类型推导可以起作用。这样就可能产生快速的代码,而不致麻烦用户声明所用的每个变量的类型。用户开心了,编译器的作者也开心了。


  《程序员》:Julia的核心开发者和用户分别有多少?社区如何运作?

  Jeff:我们的开发都通过GitHub进行,现在上面的代码贡献者有200名左右,稳定的、高度活跃的贡献者约有30名。我们在GitHub的issues和pull requests,以及邮件列表上都有大量讨论。我们喜欢听到大量观点,并在决策之前达成一致。

  Viral:我听说过一种度量方法,社区的规模是邮件列表规模的10倍,基于此,估计Julia至少有10000名用户。我们努力打造一个尊重不同意见、同时为新用户提供方便的社区。这样才能吸引其他人,并使我们的工作有趣。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部