Skip to content

Document when each of the vectorization approaches should be used #64409

@stephentoub

Description

@stephentoub

We now have:

  • Vector<T>
  • Vector64<T>
  • Vector128<T>
  • Vector256<T>
  • Each of the low-level intrinsics namespaces, e.g. Avx2

As part of shipping .NET 7 which includes several of these systems a new, it will be important to provide clear guidance on which should be used when. Should a developer start with Vector<T> and only fall back to other things if there are operations required it can't support? If not, why not? If a developer is using Vector128<T>, when should they also add a "duplicated" path for Vector256<T>? When should they also add a "duplicated" path for Vector64<T>? What are the most likely cases where VectorN<T> are insufficient and a developer will want to target the individual instruction set namespaces directly? Are there situations where they might be used together, e.g. a Vector128<T> path and then separate paths for the individual instruction sets? Etc.

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions