内容简介:SIMD支持是在语言层面支持SIMD意味着开发人员可以在更高级别上表达矢量化计算,并在编译器不够智能时超越编译器来应用自动矢量化。下面的例子展示了如何表示两个向量(或切片)的总,这两个向量分别包含了16个元素,每个元素为一个字节长度(u8)。每个切片可放入一个128位寄存器,因此我们可以将这两个片放入两个寄存器,并使用新的上面的代码片段还展示了如何为特定平台定制你的SIMD指令,因为不是所有运行你的代码的平台都可以支持SIMD操作。第一个cfg标记仅为指定平台(x86或x86_64支持AVX2)输出以下代
SIMD支持是 Rust 1.27 中最值得一提的新特性,这一版本的Rust同时还带来了更为明确的trait语法。
在语言层面支持SIMD意味着开发人员可以在更高级别上表达矢量化计算,并在编译器不够智能时超越编译器来应用自动矢量化。下面的例子展示了如何表示两个向量(或切片)的总,这两个向量分别包含了16个元素,每个元素为一个字节长度(u8)。每个切片可放入一个128位寄存器,因此我们可以将这两个片放入两个寄存器,并使用新的 std :: arch模块 将它们添加到单个CPU指令中:
#[cfg(all(any(target_arch = "x86", target_arch = "x86_64"),
target_feature = "avx2"))]
fn foo() {
#[cfg(target_arch = "x86")]
use std::arch::x86::_mm256_add_epi64;
#[cfg(target_arch = "x86_64")]
use std::arch::x86_64::_mm256_add_epi64;
unsafe {
_mm256_add_epi64(...);
}
}
上面的代码片段还展示了如何为特定平台定制你的SIMD指令,因为不是所有运行你的代码的平台都可以支持SIMD操作。第一个cfg标记仅为指定平台(x86或x86_64支持AVX2)输出以下代码,而里面那个cfg标记将为特定平台选择正确的_mm256_add_epi64指令。
通过std :: arch提供支持SIMD只是Rust在SIMD支持方面迈出的第一步。事实上,Rust已经计划了另一个模块std :: simd,它将提供更高级别的操作。在std :: simd中可以通过 faster crate,如用户可以使用simd_iter代替iter,或使用simd_map代替map等,来完成SIMD版本的基本矢量操作。
该语言的另一个新功能旨在让trait语法更加明确,当给定trait对象对应一个或两个指针时,让表示更加清晰。trait对象的表示语法如下:
Box<Foo>
这个语法隐藏了一个事实,即当Foo是一个结构时,它将被简单地嵌入到Box中。相反,如果它是一个trait,将被分配到堆上,并且一个指向它的vtable的指针将被分配到栈上。这是由于Rust中的vtable并不是与数据保存在一起的,而是分开存储,这个与C++不一样。为了让这些更加明确,现在Rust支持一个新的trait语法(dyn trait):
Box<dyn Foo>
&dyn Foo
&mut dyn Foo
旧的语法将保持不变,并且没有计划要弃用它。
最后,#[must_use]属性现在可以用在函数上,让编译器标记这些忽略了函数返回值的情况:
#[must_use]
fn double(x: i32) -> i32 {
2 * x
}
fn main() {
double(4); // warning: unused return value of `double` which must be used
let _ = double(4); // (no warning)
}
要详细了解Rust 1.27,请不要错过官方发布说明。
查看英文原文: Rust 1.27 Adds Support for SIMD
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 支持向量机(一):支持向量机的分类思想
- Vardump 更新,支持打印各种 Java 数据结构,支持嵌套
- Vardump 更新,支持打印各种 Java 数据结构,支持嵌套
- NutzBoot v2.1.5 添加单元测试支持及 ssdb 支持
- iView 3.1.0 版本:支持 TypeScript,支持 Vue CLI 3
- Mesalink v1.0.0 发布,正式支持 TLS 1.3 和 IPv6,支持CMake编译,支持Windows,实现生产环境可用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java编程思想 (第4版)
[美] Bruce Eckel / 陈昊鹏 / 机械工业出版社 / 2007-6 / 108.00元
本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。 从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到......一起来看看 《Java编程思想 (第4版)》 这本书的介绍吧!