2个版本

0.1.1 2021年4月22日
0.1.0 2021年4月22日

554图形API 中排名

每月 27 次下载

BSD-3-Clause

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