Run on i7-14700K: ``` > .\tests\basic.exe 执行设备: Intel(R) UHD Graphics 770 设备类型: GPU Intel GPU 特性: XeCore 数量: 4 每个 XeCore 的向量引擎数: 8 向量引擎总数: 32 每个 XeCore 的硬件线程数: 56 每个向量引擎的硬件线程数: 7 硬件线程总数: 224 GPU 内存大小: 31712935936 B (29.53 GB) 每个工作组的共享本地内存: 65536 B 最大工作组大小: 512 支持的子组大小: 8 16 32 推荐选择子组大小: 8 100% 占用率工作组大小: 256 CPU (2944.7 ms): 54 85 110 101 0 102 101 101 85 86 85 86 110 110 110 206 94 110 104 198 110 102 102 206 94 110 110 94 104 94 206 102 101 102 94 54 101 110 254 86 86 104 102 198 104 110 0 104 110 86 0 110 110 198 110 110 94 85 110 0 254 101 101 101... GPU 基本并行 (471.7 ms): 54 85 110 101 0 102 101 101 85 86 85 86 110 110 110 206 94 110 104 198 110 102 102 206 94 110 110 94 104 94 206 102 101 102 94 54 101 110 254 86 86 104 102 198 104 110 0 104 110 86 0 110 110 198 110 110 94 85 110 0 254 101 101 101... GPU 高级并行 (448.2 ms): 54 85 110 101 0 102 101 101 85 86 85 86 110 110 110 206 94 110 104 198 110 102 102 206 94 110 110 94 104 94 206 102 101 102 94 54 101 110 254 86 86 104 102 198 104 110 0 104 110 86 0 110 110 198 110 110 94 85 110 0 254 101 101 101... ```
Base16384-SYCL
A high-performance Base16384 encoding library implemented using Intel SYCL for accelerated computation on heterogeneous hardware platforms.
Overview
Note
This library requires Intel oneAPI DPC++/SYCL runtime. Please ensure proper environment setup before building and running the applications.
Base16384-SYCL is an optimized implementation of the Base16384 encoding algorithm that leverages Intel SYCL (oneAPI Data Parallel C++) to achieve superior performance on both CPU and GPU architectures. The library provides efficient encoding and decoding capabilities while maintaining cross-platform compatibility.
Features
- Hardware Acceleration: Utilizes Intel SYCL for parallel processing on CPUs, GPUs, and other accelerators
- Cross-Platform Support: Compatible with Windows and Unix-like systems
- Performance Optimized: Includes vectorization and memory optimization for maximum throughput
- Robust Error Handling: Comprehensive exception handling with detailed error reporting
- Modern C++: Written in C++20 with modern programming practices
Prerequisites
Required Dependencies
- Intel oneAPI Toolkit: DPC++/SYCL compiler and runtime
- CMake: Version 3.4 or higher
Windows-Specific Requirements
- Visual Studio Build Tools or Visual Studio IDE
- Intel DPC++ compiler (icx-cl)
- NMake (included with Visual Studio)
Unix/Linux Requirements
- Intel DPC++ compiler (icpx)
- Standard build tools (make, etc.)
Installation
1. Environment Setup
Tip
For VS Code Users: If you're using Visual Studio Code, the environment variable setup commands will be executed automatically when you open a terminal. If this fails, it may be due to a non-standard installation path. Please modify the paths in
.vscode/settings.jsonaccordingly.
Windows:
# Navigate to your Intel oneAPI installation directory
# Typically: C:\Program Files (x86)\Intel\oneAPI\
setvars.bat
Linux/Unix:
# Navigate to your Intel oneAPI installation directory
# Typically: /opt/intel/oneapi/
source setvars.sh
2. Build Process
Clone and navigate to the project:
git clone https://github.com/fumiama/base16384-sycl.git
cd base16384-sycl
mkdir build
cd build
Configure the build system:
cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
Compile the project:
cmake --build .
3. Testing
Run the test suite:
ctest
Build Configuration
The project supports multiple build configurations:
- Release: Optimized for maximum performance (
-O3,/O2) - Debug: Includes debugging symbols and reduced optimization
- RelWithDebInfo: Release optimization with debug information
- MinSizeRel: Optimized for minimal binary size
Compatibility
- Operating Systems: Windows 10/11, Linux, macOS
- Architectures: x86-64, ARM64 (where Intel oneAPI is supported)
- Hardware: Intel CPUs, Intel GPUs, NVIDIA GPUs (via Level Zero), AMD GPUs (experimental)
Contributing
Contributions are welcome! Please ensure that:
- Code follows the existing style and conventions
- All tests pass (
ctest) - New features include appropriate test coverage
- Documentation is updated for significant changes
License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for detailed information.
Acknowledgments
- Intel oneAPI team for the SYCL implementation
- Base16384 algorithm developers
- Contributors to the open-source community