cuElim
使用CUDA统一内存实现GF2域,GF256域和素域上的矩阵乘法和高斯消元,无需考虑显存大小。
使用说明
加入到现有项目
-
将
include
文件夹中的所有头文件添加到现有项目中。 -
在需要使用gpu函数的地方引用
cuelim.cuh
或cuelim_m4ri.cuh
(GF2域上高斯消元接口)或cuelim_m4rie.cuh
(GF256域上高斯消元接口)。
使用当前项目
-
安装依赖
C++ CUDA CMake ...
GoogleTest
GoogleBenchmark
-
构建项目
mkdir build && cd build cmake .. make -j # 同时编译多个目标 ctest # 或make test 执行所有测试
-
运行可执行文件
./cuelim # 执行主程序 ./test/target # 执行特定测试 ./benchmark/target # 执行特定性能测试
功能简介
-
ElimResult
:存储高斯消元的结果,包含秩、主元行(进行行交换前的位置)、主元列。 -
gf2::MatGF2
:储存GF2矩阵,每个uint64_t储存64个元素,单个uint64_t中元素从低位到高位排列。 -
gf2::ElimResult gf2::MatGF2::gpu_elim()
:高斯消元。 -
gf256::MatGF256
:存储GF256矩阵,每个uint64_t储存8个元素,单个uint64_t中元素从低位到高位排列。 -
gf256::ElimResult gf256::MatGF256::gpu_elim(const gf256::GF256 &gf)
:进行高斯消元 -
gfp::MatGFP
:储存GF65521矩阵,每个uint32_t储存1个元素 -
gfp::ElimResult gfp::MatGFP::gpu_elim()
:进行高斯消元 -
size_t gpu_mzd_elim(mzd_t *A)
:m4ri接口 -
size_t gpu_mzed_elim(mzed_t *A)
:m4rie接口
Description
Languages
Cuda
94.7%
CMake
3%
C++
2.3%