SplinePSF——应用于光学成像中的 PSF 建模

一、SplinePSF 工具概述

SplinePSF 是一个基于 C++/C 和 CUDA 实现的样条函数工具库,最初为 DeepSMLM 软件包设计,但计划扩展为独立支持的 Python/MATLAB 接口。其核心功能是通过高效计算实现样条插值,适用于超分辨率显微镜(SMLM)等需要高精度点扩散函数(PSF)建模的场景。

技术实现
  • 样条函数优化:通过 CUDA 实现并行计算,显著提升大规模数据处理的效率。
  • 跨平台兼容性*:代码设计考虑跨平台部署,支持主流操作系统和硬件环境。

二、SplinePSF 安装与编译指南

SplinePSF源码下载

系统平台及软件:Windows 11、Anaconda、CUDA

1、配置 CUDA 环境

参考方法:Windows 安装 CUDA 和 cuDNN

确保已安装与显卡匹配的 CUDA 驱动。通过 nvidia-smi 检查 CUDA 版本,需与 environment.yaml 中指定的 cudatoolkit 版本兼容。若版本不匹配,需调整 Conda 或系统环境变量。

2、安装依赖库

通过 Conda Prompt安装 environment.yaml 中列出的依赖项,也可直接利用conda env create -f environment.yaml创建。建议分步安装如下:

bash 复制代码
# 创建环境
conda create -n spline_dev python=3.8 -y
conda activate spline_dev
# 安装构建工具 
conda install -c conda-forge cmake=3.15 -y 
conda install -c conda-forge ninja -y 
conda install -c conda-forge setuptools -y 
# 安装核心依赖 
conda install -c conda-forge numpy -y 
conda install -c conda-forge pybind11>=2.6.1 -y 
# 安装CUDA开发工具(如果需要) 
conda install -c conda-forge cudatoolkit-dev -y

如果安装出现ERROR: G:\software\Anaconda\envs\spline_dev\pkgs\cudatoolkit-dev\cuda_11.7.0_516.01_windows.exe Cannot open the file as archive

由于系统平台是Windows,不是Linux。将最后CUDA开发工具按照命令换成:

bash 复制代码
conda install -c conda-forge cudatoolkit=11.7 -y
3、编译生成相应的whl

直接进行编译可能会遇到以下问题:

  • C/C++ 编译问题
    Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" failed. Compiler: CMAKE_CXX_COMPILER-NOTFOUND Build flags: ;DVERSION_INFO=\"0.10.1.dev0\" Id flags: The output was: 系统找不到指定的文件
    解决方法:
    安装 Visual Studio 并勾选 "使用 C++ 的桌面开发""Windows 10/11 SDK" 。并且通过 Conda 安装编译工具链,语句如下。

    bash 复制代码
    conda install -c conda-forge compilers cmake -y
  • CUDA 编译参数设置问题
    由于,采用系统的CUDA计算能力与编译设置的参数不匹配。会出现nvcc fatal : Value 'sm_37' is not defined for option 'gpu-architecture' [3/7] Building CXX object CMakeFiles\spline.dir\src\pybind_spline.cpp.obj ninja: build stopped: subcommand failed.
    解决方法:
    查询显卡计算能力:

    cmake 复制代码
    nvidia-smi --query-gpu=compute_cap --format=csv

    修改 CMakeLists.txt 的 CMAKE_CUDA_FLAGS的设置:

    cmake 复制代码
    set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --gpu-architecture=sm_75 --gpu-architecture=sm_80 --gpu-architecture=sm_86")
编译生成 Wheel 文件

在Conda执行以下命令生成适配当前环境的 Wheel 文件:

bash 复制代码
cd 上述文件路径
python setup.py bdist_wheel
注意事项
  • Python 版本、操作系统及架构需与目标环境一致。
  • 若编译失败,检查 CMakeError.log 定位具体错误。
补充内容

python 3.8和3.9编译好的whl文件