Skip to content

viant/vec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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