diff --git a/README.md b/README.md index 74d6a23..9400f8b 100644 --- a/README.md +++ b/README.md @@ -13,17 +13,19 @@ Bitar is a C++ library to simplify accessing hardware compression/decompression - Zero-copy of data input and output - Synchronous and asynchronous operations -- Execution in both the host and the embedded environment - Multi-core and multi-device support - No sudo permission requirement +Bitar can run either on the host machine or on the NVIDIA BlueField DPU target +in either DPU mode or separated host mode. + ## Prerequisites - Linux (with kernel >= 4.4) or FreeBSD - For Linux, glibc >= 2.7 (reported by `ldd --version`) - GCC >= 9 (C++17 compliant compiler) - [DPDK](https://github.com/DPDK/dpdk) >= v21.11 (can be installed via vcpkg) -- [Apache Arrow](https://github.com/apache/arrow) >= 7.0.0 (build automatically +- [Apache Arrow](https://github.com/apache/arrow) >= 8.0.1 (build automatically if not found) ## Supported Hardware @@ -127,3 +129,17 @@ $ ./build-$(uname -m)/apps/demo_app --in-memory --lcores 5@(0-7),6-7 \ There is no such problem when DPDK is compiled with GCC. Note that bitar can still be compiled with Clang and linked with DPDK that is compiled with GCC. + +- ```bash + [Out of memory: Reserving memzone of XXXXXX bytes failed. [Error 12: Cannot allocate memory]] + ``` + + (Aug 18, 2022) If you see this error, check whether DPDK is running in the + Virtual Addresses mode (VA). Normally, you should see + `EAL: Selected IOVA mode 'VA'` during the program initialization. But if you + see `EAL: Selected IOVA mode 'PA'`, it's probably that the IOMMU is disable + either in the BIOS or in the kernel. If IOMMU is enabled, + `/sys/kernel/iommu_groups` path will contain kernel IOMMU groups and thus is + not be empty. To enable IOMMU in the kernel, you can add + `intel_iommu=on iommu=pt` in GRUB command-line on x86_64 systems, or add + `iommu.passthrough=1` on aarch64 systems. diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index d83d096..4fc68bc 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -37,5 +37,7 @@ target_compile_definitions(demo_app PRIVATE ARROW_NO_DEPRECATED_API) if(NOT Arrow_IS_BUILT) find_package(CURL REQUIRED CONFIG) + # The Linux package of Arrow are missing dependencies (will be fixed in Arrow + # 10.0.0): https://issues.apache.org/jira/browse/ARROW-17422 target_link_system_libraries(Arrow::arrow INTERFACE CURL::libcurl) endif() diff --git a/cspell.yml b/cspell.yml index 6136875..2819ef3 100644 --- a/cspell.yml +++ b/cspell.yml @@ -64,6 +64,7 @@ words: # list of words to be always considered to be correct - hwrap - INCLUDEDIR - INTERPROCEDURAL + - IOMMU - IOVA - istrm - IWYU diff --git a/vcpkg.json b/vcpkg.json index c0a3fb0..dd8ee6e 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,7 +3,7 @@ "name": "bitar", "homepage": "https://github.com/ljishen/bitar", "description": "Bitar is a C++ library to simplify accessing hardware compression/decompression accelerators.", - "builtin-baseline": "bb1ad0b0151e89cb08fb40087b43411c141661e9", + "builtin-baseline": "9259a0719d94c402aae2ab7975bc096afdec15df", "dependencies": [ { "name": "abseil",