{"id":19281764,"url":"https://github.com/scality/quadiron","last_synced_at":"2025-04-22T01:31:06.125Z","repository":{"id":138269263,"uuid":"91633566","full_name":"scality/quadiron","owner":"scality","description":"Fast Erasure Coding Library for Large Number of Data and Parities","archived":false,"fork":false,"pushed_at":"2020-04-16T16:58:29.000Z","size":3716,"stargazers_count":29,"open_issues_count":24,"forks_count":6,"subscribers_count":65,"default_branch":"master","last_synced_at":"2025-04-01T17:53:39.245Z","etag":null,"topics":["clang","erasure-codes","fragmentation","quadiron-library","simd","simd-vectorization","systematic-codes"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scality.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-18T00:59:21.000Z","updated_at":"2025-01-02T20:02:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"078837b9-dbaf-4e8d-86ec-121b6c069024","html_url":"https://github.com/scality/quadiron","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Fquadiron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Fquadiron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Fquadiron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scality%2Fquadiron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scality","download_url":"https://codeload.github.com/scality/quadiron/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250161971,"owners_count":21385014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clang","erasure-codes","fragmentation","quadiron-library","simd","simd-vectorization","systematic-codes"],"created_at":"2024-11-09T21:24:05.555Z","updated_at":"2025-04-22T01:31:06.115Z","avatar_url":"https://github.com/scality.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QuadIron\n\n[![CircleCI][badgepub]](https://circleci.com/gh/scality/quadiron)\n\nThe QuadIron library is a C++ library, written in C++14, that offers a\nstreaming API to use the different flavors of NTT-based erasure codes.\n\nThe library focuses primarily on high fragmentation i.e. n \u003e\u003e k.\n\nIt includes general modular arithmetic routines, algorithms for\nmanipulating rings of integers modulo n, finite fields (including\nbinary, prime and (non binary) extension fields), polynomial\noperations, implementations of different flavors of discrete Fourier\ntransforms and forward error correction (FEC) codes algorithms.\n\nThe library also includes an abstraction for writing systematic and\nnon-systematic codes, although for applications requiring high\nfragmentation systematic codes are not necessarily useful.\n\n# Build from source\n\n## Build\n\n```sh\nmkdir build\ncd build\ncmake -G 'Unix Makefiles' ..\nmake\n```\n\n**WARNING**: If you are compiling the code with Clang, don't use a 4.X version:\nthere is [a bug](https://bugs.llvm.org/show_bug.cgi?id=36723) that affects SIMD\ncode in QuadIron.\n\n### Targets\n\n- `doc`: build the documentation using Doxygen\n- `bench`: build the QuadIron benchmark (build mode \"Release\" is recommended)\n- `shared`: build the QuadIron shared library\n- `static`: build the QuadIron static library\n- `unit_tests`: build the unit tests.\n- `check`: run the test suite\n- `benchmark`: run the QuadIron benchmark (build mode \"Release\" is recommended)\n- `package`: generate a binary installer\n- `package_source`: generate a source installer (a tarball with the sources)\n- `install`: install the library in `CMAKE_INSTALL_PREFIX`.\n- `uninstall`: uninstall the library.\n\n### Code coverage\n\nBy default the code coverage is not enabled.\n\nTo generate the code coverage reports:\n1. set the option `ENABLE_COVERAGE` to `ON`.\n2. recompile with `make`.\n3. run the tests with `make check`.\n4. extract coverage data with `make gcov`.\n5. generate a report with `make lcov`.\n6. open the report in `${CMAKE_BINARY_DIR}/lcov/html/all_targets`.\n\nNote that, even though code coverage is supported by both Clang and GCC, result\nwith GCC seems more reliable (not surprising as we are using gcov).\n\n### SIMD vectorization\n\nQuadIron can be accelerated using SIMD vectorization. This is controlled by the\n`USE_SIMD` parameter, that can have one of the following values:\n- **OFF** (default value): no SIMD vectorization (except the one done by the\n  compiler)\n- **ON**: select the best SIMD instructions set supported by QuadIron and the\n  machine\n- **SSE**: use SSE4.1 SIMD instructions\n- **AVX**: use AVX2 SIMD instructions\n\n[badgepub]: https://circleci.com/gh/scality/quadiron.svg?style=svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscality%2Fquadiron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscality%2Fquadiron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscality%2Fquadiron/lists"}