Git Product home page Git Product logo

uint12arrays.jl's Introduction

UInt12Arrays.jl

Synposis

UInt12Arrays.jl is a Julia package to support the use of arrays of 12-bit unsigned integers and their elements. This package's main purpose is to provide a UInt12Array type that allows for the indexing into arrays of packed UInt12s.

Background

Dealing with 12-bit integers is challenging because the the underlying LLVM integer support is based on integers that are a multiple of a byte (8-bits). For integer types that are a multiple of a byte, see BitIntegers.jl.

To use unsigned 12-bit integers (UInt12) in computations, it is easiest to load them as unsigned 16-bit integers (UInt16). However, to conserve memory it may be advantageous to keep the 12-bit integers packed into a dense array.

What this package does

  1. Provide a UInt12Array that allows for indexing of arrays of packed UInt12s.
  2. Allow access of 12-bit integers as type UInt16 (default element type of UInt12Array)
  3. Provides a prototype UInt12 type that boxes a UInt16 and implement 12-bit arithmetic
  4. Provides lookup table (LUT) and single instruction multiple data (SIMD) methods for unpacking 12-bit data

Why is the default element type a UInt16 rather than UInt12?

As mentioned in the background, there is better hardware and compiler support for UInt16. Additionally the supporting code for UInt12 is under development with the main implementation being a boxed UInt16.

uint12arrays.jl's People

Contributors

mkitti avatar github-actions[bot] avatar

Stargazers

ebigram avatar Ben Arthur avatar Elias Carvalho avatar ChangXin Sun avatar Cuda Chen avatar Johnny Chen avatar Alex Ames avatar Jeffrey Sarnoff avatar

Watchers

James Cloos avatar Stephan Preibisch avatar Ben Arthur avatar Rob Svirskas avatar  avatar  avatar

uint12arrays.jl's Issues

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.