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

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions