Skip to content

Commit 4ed5da9

Browse files
authored
Announcing the Portable SIMD group
1 parent face2f4 commit 4ed5da9

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
layout: post
3+
title: "Announcing the Portable SIMD Project Group"
4+
author: Jubilee, Lokathor, Ashley Mannix, and Caleb Zulawski
5+
description: "Announcing the Portable SIMD Project Group"
6+
team: the library team <https://www.rust-lang.org/governance/teams/library>
7+
---
8+
9+
We're announcing the start of the _Portable SIMD Project Group_ within the Libs team. This group is dedicated to making a portable SIMD API available to stable Rust users.
10+
11+
The Portable SIMD Project Group is being lead by [@calebzulawski](https://github.com/calebzulawski), [@Lokathor](https://github.com/Lokathor), and [@workingjubilee](https://github.com/workingjubilee).
12+
13+
### What are project groups?
14+
15+
Rust uses [project groups](https://rust-lang.github.io/rfcs/2856-project-groups.html) to help coordinate work. They're a place for people to get involved in helping shape the parts of Rust that matter to them.
16+
17+
### What is portable SIMD?
18+
19+
SIMD (Single Instruction, Multiple Data) instructions can apply the same operation to multiple values _simultaneously_.
20+
We say these instructions are _vectorized_ because they operate on a "vector" of values instead of a single value (it's similar to an array, but not to be confused with Rust's `Vec` type).
21+
Different chip vendors offer different hardware intrinsics for achieving vectorization.
22+
Rust's standard library has exposed some of these intrinsics to users directly through the [`std::arch` module](https://doc.rust-lang.org/core/arch/index.html) since [`1.27.0`](https://blog.rust-lang.org/2018/06/21/Rust-1.27.html) shipped back in mid 2018.
23+
24+
You _can_ build vectorized algorithms on `std::arch` directly, but that could mean sacrificing portability, or having to maintain a different implementation for each CPU you want to support.
25+
They can also just be noisy to work with directly.
26+
27+
The goal of the Portable SIMD project group is to provide a high-level API in a new `std::simd` module that abstracts these platform-specific intrinsics away.
28+
You just pick a vector type with the right size, like `f32x4`, and perform operations on them, like addition, and the appropriate intrinsics will be used behind the scenes.
29+
30+
There are still reasons to want to choose intrinsics in `std::arch` directly though.
31+
`std::simd` cannot mirror the details of every possible vendor API.
32+
`std::simd` is Rust's explicit, _portable_ vectorization story.
33+
34+
### How can I get involved?
35+
36+
If you'd like to get on board and help make portable SIMD a reality you can visit our [GitHub repository](https://github.com/rust-lang/project-portable-simd) or reach out on [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/257879-project-portable-simd) and say hi! :wave:

0 commit comments

Comments
 (0)