Rust-SIMD 你好世界

问题描述 投票:0回答:2

我找不到 Rust-SIMD 的工作示例。我能找到的最接近的是这个。调整后变成:

#![feature(core)]
#![feature(portable_simd)]

use std::simd::f32x4;

fn main() {
    let x = f32x4(1.0, 1.0, 1.0, 1.0);
}

但货物仍投诉

error[E0423]: expected function, found type alias `f32x4`
 --> src/main.rs:7:13
  |
7 |     let x = f32x4(1.0, 1.0, 1.0, 1.0);
  |             ^^^^^
  |
  = note: can't use a type alias as a constructor

在建造过程中。

如何让这个简单的示例发挥作用?

Cargo.toml

[package]
name = "rust-simd"
version = "0.1.0"
edition = "2021"

[dependencies]

我已经打开了

nightly
rustup default nightly

rust simd rust-cargo
2个回答
1
投票

std::simd
构造SIMD向量的方式是
type::from(array)
,例如
f32x4::from([1.0, 1.0, 1.0, 1.0])
文档中提到了这一点。


0
投票

#![feature(portable_simd)]
应该位于顶部 包的主文件,例如主要.rs.

正如您已经提到的:

rustup default nightly

然后在您使用 simd 的文件中,您需要 这个:

use std::simd::prelude::*;

然后 Simd::from_array 方法需要一个数组 [f32; N_VEC] 其中 N_VEC 是范围 [1, 64] 内的 2 次方常数

例如:

const N_VEC: usize = 16;
let a:[f32; N_VEC] = [1.0f32; N_VEC];
let a_simd: Simd<f32, N_VEC> = Simd::from_array(a);
© www.soinside.com 2019 - 2024. All rights reserved.