SIMD is a form of parallel processing that utilizes vector registers in a processor to invoke an instruction across its vector lanes. To exploit this data parallelism, compiler are equipped with automatic vectorization, which does not always guarantee this optimization. Because of this, manual vectorization is occasionally necessary using vendor provided SIMD intrinsics. Fortunately, the designs of vector data types and intrinsics are relatively similar that they can be abstracted. This talk will be about Kokkos SIMD, an abstract layer over vector types for SIMD intrinsics, covering its current capabilities and interface.
SIMD is a form of parallel processing that utilizes vector registers in a processor to invoke an instruction across its vector lanes. To exploit this data parallelism, compiler are equipped with automatic vectorization, which does not always guarantee this optimization. Because of this, manual vectorization is occasionally necessary using vendor provided SIMD intrinsics. Fortunately, the designs of vector data types and intrinsics are relatively similar that they can be abstracted. This talk will be about Kokkos SIMD, an abstract layer over vector types for SIMD intrinsics, covering its current capabilities and interface.