About

Metadata

  • Last updated , by JonasScholl
  • License BSD-3-Clause
  • Maintained by: anselm.scholl@tu-harburg.de

  • Lottery factor: 0

Links

Installation

Package Flags

Use the -f option with cabal commands to enable flags

    no-vec (off by default)

    Disable all vector hardware instructions. Your code will run on all hardware but also be a lot slower.

    vec256 (off by default)

    Enable 256-bit vector hardware instructions. Your code will only run if your CPU supports 256-bit vector instructions.

    vec512 (off by default)

    Enable 512-bit vector hardware instructions. Your code will only run if your CPU supports 512-bit vector instructions.

Readme

This package provides a lifted version of the SIMD data types and instructions from ghc-prim.

The implementation is based on type families to provide a uniform interface to all different vector types. Instances for numeric operations, Prim, Storable and unboxed vector instances are provided.

Although not all processors support 256 or 512-bit vectors this package provides a uniform interface. Vectors which are bigger than supported are modeled by combining smaller vectors. If the same code is compiled on a computer supporting larger vectors the smaller vectors are replaced by larger vectors.

Note: This package needs to be compiled with LLVM as the NCG does not know how to deal with SIMD-instructions. If LLVM is not available, use -f no-vec to disable the use of SIMD instructions. While this will give you no speedup, it will work with plain Haskell (and should even work with GHCJS).