SIMD integration #214
bernhardmgruber
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
LLAMA's goal is to provide an open set of memory layouts without user program change. Some of these memory layouts may result in automatic vectorization in modern compilers. But fundamentally, vectorization of a user program is independent of the memory layout used, as only load and store operations are affected.
We would like to more clearly define the interface between LLAMA objects such as
View
,VirtualRecord
and mappings, and SIMD vectors. This could result in explicit APIs to move data between SIMD vectors and LLAMA objects, independently of the chosen memory layout, generating appropriate (aligned) load, store, gather or scatter instructions.One way this could work is by providing an additional LLAMA construct to
One<RecordDomain>
, e.g. calledSome<RecordDomain>
, which contains some instances of theRecordDomain
.Some
would contain SIMD vectors of the record domain. A LLAMA view would need an additional mechanism to fetch aSome
instead of aOne
. Depending on the mapping, this fetch could be an aligned vector load, an unaligned vector load or a gather. Stores would work similarly.Beta Was this translation helpful? Give feedback.
All reactions