viant / vec

Vectorization toolkit for golang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vec - Vectorization toolkit for go

GoReportCard GoDoc

This library is compatible with Go 1.17+

Please refer to CHANGELOG.md if you encounter breaking changes.

Motivation

The goal of this project is to take advantages of the SMID (Single Instruction Multiple Data) CPU extension to perform 128/256/512 bits wide operation per CPU cycle.
This library uses the following extension: AVX2, AVX512, Neon, SVE. The operation are grouped in the following packages:

  • bitewise: bitwise operations
  • lut: lookup operations
  • blas: basic linear algebra operations
  • bits: bitset/masking/packing/unpacking operations

Usage

Bitwise operation:

    out := make([]uint64, 8)
    v1 := []uint64{1, 2, 3, 4, 5, 6, 7, 8}
    v2 := []uint64{1, 7, 3, 4, 3, 6, 7, 2}
    bitwise.Uint64s(out).And(v1, v2)

Contributing to vec

Vec is an open source project and contributors are welcome!

See TODO list

License

The source code is made available under the terms of the Apache License, Version 2, as stated in the file LICENSE.

Individual files may be made available under their own specific license, all compatible with Apache License, Version 2. Please see individual files for details.

Credits and Acknowledgements

Library Authors:

  • Valery Carey
  • Adrian Witas

About

Vectorization toolkit for golang

License:Apache License 2.0


Languages

Language:Assembly 76.5%Language:C++ 17.1%Language:Go 6.5%