2个版本
0.1.1 | 2021年4月22日 |
---|---|
0.1.0 | 2021年4月22日 |
554 在 图形API 中排名
每月 27 次下载
39KB
1K SLoC
vkfft-rs
vkfft-rs
允许在Rust中使用Vulkan在GPU上高效执行1D、2D或3D傅里叶变换(FFT),内置卷积支持。
vkfft-rs
是VkFFT的绑定,假设与vulkano一起使用。尽管VkFFT(尽管名称如此)支持多个后端,但此包装器需要与Vulkan一起使用。
尽管vkfft-rs
试图维护一个安全的API,但很可能这个代码库中仍有一些安全函数可能引起不安全的行为。VkFFT的API和相关数据结构非常不安全且具有状态,这给确保Rust的安全保证带来了困难。在它的安全性属性得到适当验证之前,建议谨慎行事。欢迎提交PR!
构建
克隆VkFFT
# Clone VkFFT
git clone https://github.com/DTolm/VkFFT.git
# Navigate into the folder
cd VkFFT
# Create a build directory (this currently must be named "build"!)
mkdir build && cd build
# Configure build
cmake ..
# Build
make
# Build vkfft-rs
cd vkfft-rs
# VKFFT_ROOT must be set to the root directory of VkFFT!
export VKFFT_ROOT=/path/to/VkFFT
# Build
cargo build --examples
# Run convolution example
cargo run --example convolution
重要
如果您的系统已经在库搜索路径中包含libSPIRV.a
并且运行时在SPIRV中遇到奇特的段错误,那么可能是Rust链接了系统libSPIRV.a
而不是VkFFT的build
目录中的版本。这些不同的库可能具有不兼容的ABI。
遗憾的是,这是cargo/rustc允许包指定静态库的绝对路径的能力的限制。遗憾的是,建议从系统库路径中删除其他libSPIRV.a
。
例如,在Ubuntu上
sudo mv /usr/lib/x86_64-linux-gnu/libSPIRV.a /usr/lib/x86_64-linux-gnu/libSPIRV.a.backup
依赖关系
~7–9.5MB
~187K SLoC