Project status: initialization
Unleash the TRUE power of your CPU.
In order to keep a good compatibility across different divices, Debian's ISA
baseline is very low. For example, the ISA baseline for
x86_64) architecture is
<= SSE2 which means we won't benefit
from modern CPUs' SIMD instruction sets.
To recompile Debian package with SIMD code enabled, the simplest way is to
-march=native flag to the compiler flags and recompile the package.
However a big amount of repeated work has to be done in order to rebuild
the whole Debian system. Instead, SIMDebian chose to fork
directly add the corresponding flag to system default flag list, such
that we can rebuild any package from Debian without change.
However, not every package would gain a performance boost after recompiling with native machine code. Therefore SIMDebian only rebuild a set of selected packages which would benefit from vectorized code to rebuild.
ISA Baseline of SIMDebian
nehalemfor the first generation supporting SSE4.1
sandybridgefor the first generation supporting AVX is missing)
haswellfor the first generation supporting AVX2
skylakefor my own cpu (hmm...)
Currently supported machine types:
Example APT configuration:
deb http://sim.debiancn.org/skylake sid main contrib non-free
Project Guideline (Draft)
Rebuilding all packages with
-march=native is pointless and wasting
electricity. SIMDebian aims to a specific set of software that are
highly valuable to be compiled into vectorized code.
The workflow is based on
git-buildpackage. The three branchs from upstream (
should not be modified. We make modifications on the
simd branch, and append
+simd to the debian revision number.
simd mark can be replaced by specific ISA names e.g.
neon, etc. when that makes sense.
Candidate version schemes:
To proof this project is useful we need some benchmark data.
We forked dpkg to add SIMD buildflag support. With the patched dpkg, one just need to rebuild any Debian package without change to enable new instruction sets. Changes to code such as follows are not required.
-export DEB_CXXFLAGS_MAINT_APPEND = +export DEB_CXXFLAGS_MAINT_APPEND = -march=native
SIMDebian Developer Reference
Simply open an issue and say you want to join!