Julia 1.5改进多线程功能正式发布稳定版API
资料科学家爱用程序语言Julia现在发布了1.5版本,经过多年发展,多线程功能终于在这个版本,从实验性功能进入稳定阶段,另外,官方还加入了新的函数库,也改进了构建系统。
官方在这个版本,进行了一项重要的优化,便是优化结构配置(Struct Layout)以及分配(Allocation),这个改进将能够极大程度降低部分工作负载的堆分配。Julia中有可变和不可变两种对象,以Struct声明的记录类型是不可变对象,当开发者想要使其转为可变,则必须使用可变结构声明,Julia会自动为每种类型选择内存配置和调用惯例。
官方解释,在这个版本之前要对不可变对象的配置进行优化,存在许多限制,因为不可变对象指向可变对象的堆分配时,那其本身就必需要进行堆分配,而在Julia 1.5之后,任意不可变对象都可以进行堆栈分配,按值传递和回传,并内联存储在数组或是其他对象中,简单来说,不可变对象参照可变值,现在变得更有效率,就像是不可变结构参照其他不可变对象一样。
之所以这项改进很重要,是因为许多重要抽象,都只能通过将可变对象打包在结构中实例,官方表示,这项优化带来的加速程度并没有很大,是因为Julia的分配器本身就非常高性能,只是让View对象不再需要堆分配。
从Julia 0.5开始,官方开始加入实验性多线程平行运算功能,到了现在1.5版,终于成为稳定功能。Julia的平行运算能力,一直是官方的重点工作之一,每个版本官方都会增加线程安全性,并且持续添加新的功能,特别是在Julia 1.3,更是线程功能的一个里程碑,加入了可组合多线程的@spawn结构。
由于目前已经有许多Julia开发人员正在使用线程功能,而且功能本身也趋于稳定,因此官方认为,已经不适合将线程功能标上实验性标签,因此将大多数线程API都标记为稳定,并使@sync和SuiteSparse绑定成为线程安全,还加入新的语法@threads。
官方为Julia编译器添加每模块优化等级功能,也就是说开发人员可以指定每个模块优化的等级,官方提到,编译时间和执行时间是一个权衡,为了让初始使用体验更好,他们默认优化等级为-O2,而这和gcc或clang中的-O2选项差不多,但因为并非所有程序代码都对性能影响很大,而且也有越来越多Julia开发者,加载较大的组件执行绘图,或是其他非内部循环支持的工作,为了减少这类组件编译延迟时间,现在开发者可以指定每个模块优化等级,像是可将Plots.jl指定为@optlevel 1,这代表该组件将使用-O1优化等级,可以减少首次搭建时间约三分之一。
举报/反馈
上一篇:关注地铁四期系列|拆分3号线支线南下的14号线,未来银湖和高桥谁才是双地铁?
下一篇:大话降龙:降龙之所以成为降龙大虾,是因为学了各种的训练
最近更新人物资讯
- 青年节专题时文精选,1个专题+5篇模板+12篇范文+1个作文合集(角度+金句+精
- 最新质量管理体系基本要求(五篇)
- 赤坂丽颜值巅峰之作,禁忌之爱代表作品-高校教师成熟
- [王仲黎]人茶共生:布朗族茶文化话语中的生态伦理
- 北京文艺日历 06.12~06.18
- 有什么好看的少女漫画推荐?
- 为了孩子陪睡校长,请别拿这电影洗白
- 当贝市场tv版apk下载
- 茉
- BBC评出有史以来美国最伟大的100部电影
- 泰山岱庙古建筑之文化特色初探
- 阴阳五行学说范文
- 2022伦敦大学学院Bartlett建筑学院Part2毕业展
- 观看平凡英雄观后感1000字
- 纽约大都会博物馆(二)古希腊艺术与神话
- 收藏 | 带你穿越500年,看一看这50位著名艺术家
- ab血型女人的性格
- 春节活动策划方案
- 为什么孕妇生产有危险时,部分丈夫和婆婆会选择保小孩?
- 《员工自发管理的儒家修为智慧》
- 菲律宾尺度片的全明星阵容,菲律宾女人质量这么高的吗?
- 文学课 | 韩少功:文学与记忆
- 《人性的污秽》中的伦理道德世界
- 宋惠莲背夫和西门庆幽会后自缢,看透情色表象下的死亡真相
- 秋波多少画(五代词全集)