Releases: MuriloChianfa/libdynemit
v1.2.0
A high-performance SIMD library that leverages ifunc resolvers for automatic runtime dispatch. Write portable code that automatically uses the best SIMD instructions available on your CPU.
Key features:
- Automatic CPU feature detection at program startup
- Runtime dispatch using ifunc resolvers (GCC & Clang)
- Support for SSE2, SSE4.2, AVX, AVX2, and AVX-512F
- Thread-safe SIMD level detection
- Both shared and static libraries
- C23 and C++17+ compatible
📦 Installation
Debian/Ubuntu
Runtime package (for running applications):
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/libdynemit_1.2.0_amd64.deb
sudo dpkg -i libdynemit_1.2.0_amd64.debDevelopment package (for building applications):
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/libdynemit-dev_1.2.0_amd64.deb
sudo dpkg -i libdynemit_1.2.0_amd64.deb libdynemit-dev_1.2.0_amd64.debFedora/RHEL
Runtime package:
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/libdynemit-1.2.0-1.fc40.x86_64.rpm
sudo dnf install libdynemit-1.2.0-1.fc40.x86_64.rpmDevelopment package:
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/libdynemit-devel-1.2.0-1.fc40.x86_64.rpm
sudo dnf install libdynemit-1.2.0-1.fc40.x86_64.rpm libdynemit-devel-1.2.0-1.fc40.x86_64.rpm💻 Usage
Example program:
#include <dynemit.h> // Includes core + all features
int main(void) {
const char **features = dynemit_features();
printf("Available features:\n");
for (int i = 0; features[i] != NULL; i++) {
printf(" - %s\n", features[i]);
}
simd_level_t level = detect_simd_level();
printf("SIMD level: %s\n", simd_level_name(level));
float a[1024], b[1024], result[1024];
add_f32(a, b, result, 1024);
mul_f32(a, b, result, 1024);
sub_f32(a, b, result, 1024);
double data[1024];
double avg = mean_f64(data, 1024);
double var = variance_f64(data, 1024);
return 0;
}Compile with shared library:
gcc -O3 myprogram.c -ldynemit -lm -o myprogramCompile with static library:
gcc -O3 myprogram.c -static -ldynemit -lm -o myprogram🔒 Verification
All artifacts include SHA256 and SHA512 checksums for integrity verification, and are cryptographically signed with GPG for authenticity.
Verify GPG Signatures
# Import the maintainer's public key
gpg --keyserver keys.openpgp.org --recv-keys 3E1A1F401A1C47BC77D1705612D0D82387FC53B0
# Verify a package
gpg --verify libdynemit_1.2.0_amd64.deb.asc libdynemit_1.2.0_amd64.debVerify Checksums
curl -LO https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/SHA256SUMS
curl -LO https://github.com/MuriloChianfa/libdynemit/releases/download/v1.2.0/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing📚 Documentation
🔧 Requirements
Runtime: Linux x86_64
Development: GCC 13+ or Clang 16+, CMake 3.16+
Full Changelog: v1.1.0...v1.2.0
v1.1.0
A high-performance SIMD library that leverages ifunc resolvers for automatic runtime dispatch. Write portable code that automatically uses the best SIMD instructions available on your CPU.
Key features:
- Automatic CPU feature detection at program startup
- Runtime dispatch using ifunc resolvers (GCC & Clang)
- Support for SSE2, SSE4.2, AVX, AVX2, and AVX-512F
- Thread-safe SIMD level detection
- Both shared and static libraries
- C23 and C++17+ compatible
📦 Installation
Debian/Ubuntu
Runtime package (for running applications):
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/libdynemit_1.1.0_amd64.deb
sudo dpkg -i libdynemit_1.1.0_amd64.debDevelopment package (for building applications):
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/libdynemit-dev_1.1.0_amd64.deb
sudo dpkg -i libdynemit_1.1.0_amd64.deb libdynemit-dev_1.1.0_amd64.debFedora/RHEL
Runtime package:
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/libdynemit-1.1.0-1.fc40.x86_64.rpm
sudo dnf install libdynemit-1.1.0-1.fc40.x86_64.rpmDevelopment package:
wget https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/libdynemit-devel-1.1.0-1.fc40.x86_64.rpm
sudo dnf install libdynemit-1.1.0-1.fc40.x86_64.rpm libdynemit-devel-1.1.0-1.fc40.x86_64.rpm💻 Usage
Example program:
#include <dynemit.h>
int main(void) {
float a[1024], b[1024], result[1024];
// Automatically uses AVX-512, AVX2, AVX, SSE4.2, SSE2 or scalar
vector_mul_f32(a, b, result, 1024);
return 0;
}Compile with shared library:
gcc -O3 myprogram.c -ldynemit -lm -o myprogramCompile with static library:
gcc -O3 myprogram.c -static -ldynemit -lm -o myprogram🔒 Verification
All artifacts include SHA256 and SHA512 checksums for integrity verification, and are cryptographically signed with GPG for authenticity.
Verify GPG Signatures
# Import the maintainer's public key
gpg --keyserver keys.openpgp.org --recv-keys 3E1A1F401A1C47BC77D1705612D0D82387FC53B0
# Verify a package
gpg --verify libdynemit_1.1.0_amd64.deb.asc libdynemit_1.1.0_amd64.debVerify Checksums
curl -LO https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/SHA256SUMS
curl -LO https://github.com/MuriloChianfa/libdynemit/releases/download/v1.1.0/SHA256SUMS.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing📚 Documentation
🔧 Requirements
Runtime: Linux x86_64
Development: GCC 13+ or Clang 16+, CMake 3.16+
💡 Available Operations
vector_add_f32- Vector addition (float)vector_mul_f32- Vector multiplication (float)vector_sub_f32- Vector subtraction (float)detect_simd_level()- CPU feature detectiondetect_simd_level_ts()- Thread-safe detection
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Full Changelog: https://github.com/MuriloChianfa/libdynemit/commits/v1.0.0