橙山网 > 泛娱乐 > 今日看点 > 正文

Rust 1.27释出,开发者能直接撰写低阶SIMD语法了!,,套件管...官方今日

橙山网(www.csnd.net)2018-06-22

[摘要] 原标题:Rust 1.27释出,开发者能直接撰写低阶SIMD语法了! 官方今日释出Rust△1.27更新,其中包括了社交期盼已久的功能,首先是单指令流多资料流(Single△Instruction△Multiple△Data,SIMD)

原标题:Rust 1.27释出,开发者能直接撰写低阶SIMD语法了!

官方今日释出Rust△1.27更新,其中包括了社交期盼已久的功能,首先是单指令流多资料流(Single△Instruction△Multiple△Data,SIMD)现在基本可用,另一个则是#[must_use]属性获得升级,已经进入函式的行列。套件管...

官方今日释出Rust△1.27更新,其中包括了社交期盼已久的功能,首先是单指令流多资料流(Single△Instruction△Multiple△Data,SIMD)现在基本可用,另一个则是#[must_use]属性获得升级,已经进入函式的行列。套件管理器Cargo也有小更新,现在会尝试探索使用者专案的测试、范例以及二元档。

有了SIMD加持,Rust将能加速运算。官方举例,假设存在两个Slice△a和b并进行数字相加,再将结果放置在第3个Slice△c中。最基本的方法就是走访每组元素,将他们相加后储存为结果。但其实编译器可以做的更好,像是LLVM就经常会进行自动向量化(Automatic△vectorization),分析程式码中的回圈,并且尝试在电脑上使用向量暂存器和指令,执行这些回圈。这个动作可以加速程式码执行效率,而这也是SIMD带来的优点。

假设Slice△a和b都是16个元素长,而每个元素都是u8,也就是说每个Slice都是128位元组的资料,使用SIMD,开发者可以把待相加的两个Slice放进128位元组暂存器中,并使用单一指令把他们相加在一起,再把结果复制到第三个Slice△c中。

虽然Rust本来就具备自动向量化,但官方表示,编译器无法在所有情况都完美发挥这个功能,而且也不是所有CPU都支援,因此LLVM也可能不会使用自动向量化,以确保开发者的程式能在广泛的硬件中执行。而在Rust△1.27中,官方直接开放这类指令,增加std△:: arch模组让开发者能够直接控制,而不需要依赖智慧编译器的判断。

而这个函式具有两个版本,其中一个是特殊类型的SIMD功能AVX2,可以供开发者进行256位元的操作,is_x86_feature_detected巨集能让开发者侦测电脑的CPU是否支援AVX2,是则呼叫foo_avx2函数,否则退回non-AVX的实作,这样让支援AVX2的系统能够快速的执行程式,但即便系统不支援也没关系,照样也能正常执行程式。官方提到std△:: arch语法很低阶,他们希望未来可以提供更高阶的std△:: simd模组,但开发者可以先适应这个功能。

在Rust△1.27中,#[must_use]属性被升级为函式,过去他只适用于诸如Result△T,E△的类型。另外,Cargo也有两个小更新,Cargo现在接受-target-dir标签,用来改变给定调用的目标目录。还有Cargo现在会尝试自动探索专案中的测试、范例和二进位档案,虽然有时候需要明确的配置,但多数时可以自动运行的很好。

官方提到,在1.27.0发布前夕,他们发现在1.26.0中加入的预设匹配绑定功能,可能造成系统不稳定的错误,但由于发现的时间太晚,并且从1.26就存在了,因此官方还是维持版本发布节奏,照原定计划释出1.27.0版本,但很快的,就会释出1.27.1来修正这个臭虫,需要的话还会有1.27.3,开发者可以随时注意接下来版本发布的讯息。

橙山网(Csnd.net)简评:套件管...官方今日释出Rust△1.27更新,其中包括了社交期盼已久的功能,首先是单指令流多资料流(Single△Instruction△Multiple△Data,SIMD)现在基本可用,另一个则

热 门
明 星
马修.戴维斯 陈炜 李宛仪 崔嵬 阿尔·刘易斯 吉川晃司 黄家辉 徐正运 多里恩·米斯克 康拉德·贝恩 格雷戈里·内瓦 本·金斯利 王昊 王亮 詹姆斯·斯图尔特 苏珊·布莱克里 瞿万臣 及川光博 达米安·查帕 我是歌手 孟楠 前任3票房破10 日本东京都江东区 夫妻:瑞安·雷诺兹与布莱克.莱弗利 张志忠 1998-04-09 逃出生天 谭家明 克里斯·卡姆 单眼皮 黄琦雯 李基蓉 拍档:焦俊艳与孙淳 强劲 陈嘉桦 蹦床