Skip to content

Releases: MuriloChianfa/libdynemit

v1.2.0

20 Feb 09:17
v1.2.0
d858d4f

Choose a tag to compare

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.deb

Development 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.deb

Fedora/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.rpm

Development 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 myprogram

Compile 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.deb

Verify 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

16 Feb 01:52
be7c96f

Choose a tag to compare

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.deb

Development 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.deb

Fedora/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.rpm

Development 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 myprogram

Compile 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.deb

Verify 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 detection
  • detect_simd_level_ts() - Thread-safe detection

Full Changelog: v1.0.0...v1.1.0

v1.0.0

10 Jan 11:17
e3eeab6

Choose a tag to compare