Skip to content

SIMD playground - #306

Draft
mosra wants to merge 2 commits into
masterfrom
simd
Draft

SIMD playground#306
mosra wants to merge 2 commits into
masterfrom
simd

Conversation

@mosra

@mosra mosra commented Jan 19, 2019

Copy link
Copy Markdown
Owner

Right now this is rather an experiment investigating possibilities of integrating SIMD-enabled algorithms into the math library. Currently there's the simplest algorithms ever, packing and unpacking index arrays to larger/smaller representations (and I was not able to beat the compiler, my AVX2 version was as what GCC managed to optimize out of the scalar implementation). It also shows how GCC function multi-versioning could be used to have multiple implementations in the same binary instead of compiling always only for one target.

CPU feature detection and dispatch were moved to mosra/corrade#115, the following list contains just the remaining tasks related to actual SIMD code:

Useful SIMD-able things to add

List will grow.

mosra added 2 commits January 19, 2019 13:55
TODO: maybe merge this into Tags? drop the namespace?
TODO: test for default constructibility
TODO: well, the compiler generates the same code as I do with AVX2, so
      there's really no benefit. But could act as a sandbox.
TODO: properly handle cases of element count not being a multiple of 16
TODO: implement other variants
TODO: implement a pack version

[ci skip]
@mosra mosra self-assigned this Jan 19, 2019
@codecov-io

Copy link
Copy Markdown

Codecov Report

Merging #306 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #306   +/-   ##
=======================================
  Coverage   53.11%   53.11%           
=======================================
  Files         324      324           
  Lines       16661    16661           
=======================================
  Hits         8850     8850           
  Misses       7811     7811
Impacted Files Coverage Δ
src/Magnum/Math/Packing.h 100% <ø> (ø) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 87e8429...07c36b4. Read the comment docs.

@mosra

mosra commented Mar 17, 2021

Copy link
Copy Markdown
Owner Author

Compile-time and runtime CPU feature detection APIs were moved to Corrade, as it makes more sense for them to live there. There's still a few unresolved design / implementation issues so it's in a draft PR for now: mosra/corrade#115

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants