thundersvm安装教程与踩坑经验分享

本文将详细讲解如何安装 thundersvm,并分享我在安装过程中遇到的一些坑和解决方法。thundersvm是一个高效的支持向量机(SVM)实现,特别适用于大规模机器学习任务。下面将分步讲解如何完成安装过程,并解释其中涉及到的小知识点。


1. 下载并解压 thundersvm

首先从 GitHub 页面 下载最新的压缩包,并将其解压到一个文件夹中,命名为 thundersvm​。你可以将这个文件夹放在任何地方,但建议放在路径简洁、不会经常移动的位置。

2. 安装 CMake

CMake 是一个跨平台的自动化构建系统,帮助你生成所需的项目文件。以下是针对不同操作系统的安装说明:

  • Windows 用户:选择合适版本的 CMake 安装包:

    • 64 位系统:cmake-3.27.0-windows-x86_64.msi​(推荐安装版)
    • 32 位系统(较少见):cmake-3.27.0-windows-i386.msi​

    如果你不希望进行安装,可以选择 cmake-3.27.0-windows-x86_64.zip​ 版本,解压后直接使用。

  • Linux 用户:选择对应系统架构的版本,如 cmake-3.27.0-linux-x86_64.sh​(适用于大多数 64 位 Linux 系统)。

  • macOS 用户:选择 cmake-3.27.0-macos-universal.dmg​,适用于 Intel 和 Apple Silicon 双架构。

小知识点:

  • CMake 版本:建议始终使用 CMake 的正式版(如 cmake-3.27.0​),而不要使用 rc​(Release Candidate)版本,因为后者是测试版,可能存在不稳定性。

3. 卸载旧的 NVIDIA 驱动和 CUDA

由于我之前的 CUDA 和 NVIDIA 驱动安装已经有两年历史,且存在一些兼容问题,在后续编译时报错,因此我卸载了旧版本的驱动和 CUDA。

步骤:
  1. 打开“控制面板”>“程序”。
  2. 查找并卸载所有与 NVIDIA 相关的组件,包括 NVIDIA 驱动和 CUDA。

4. 安装最新的 NVIDIA 驱动

如何查看当前驱动版本:可以按下 Win + R​ 输入 dxdiag​,查看你的 显卡型号,然后去官网(下载 NVIDIA 官方驱动 | NVIDIA)查找对应驱动。

​

下载最新版 Game Ready Driver 或 Studio Driver

​

​

​安装时选择【自定义安装】→ 勾选【执行清洁安装】(Clean install)

6. 安装 CUDA(详细安装可以参考【CUDA】cuda安装 (windows版)_windows安装cuda-CSDN博客)

nvidia-smi查看CUDA的版本

​nvidia-smi​ 是 NVIDIA 提供的一个命令行工具,全称是:

NVIDIA System Management Interface

它的作用是:查看和管理你的 NVIDIA GPU 的使用情况和健康状态

 

https://developer.nvidia.com/cuda-toolkit-archive通过 nvidia-smi​ 命令查看当前的 NVIDIA 驱动和 CUDA 版本。根据该版本选择正确的安装包进行安装。https://developer.nvidia.com/cuda-toolkit-archive

✅ Operating System

表示你的操作系统:

  • Linux:如果你使用的是 Ubuntu、CentOS、Debian 等 Linux 系统,就选这个。
  • Windows:你是 Windows 用户,就选这个。

✅ Architecture

表示你的 CPU 架构(不是显卡):

  • x86_64:就是 64 位的 x86 架构(绝大多数 Windows 电脑都用这个,尤其是 Intel 或 AMD CPU)。

📌 如果你不是用 ARM 架构(比如树莓派),就选 x86_64 没错。


✅ Version(Windows 版本)

这里说的是你的 Windows 操作系统的版本:

  • 10:Windows 10(比如 Windows 10 专业版、家庭版等)。
  • 11:Windows 11。
  • Server 2022:Windows Server 2022(通常是服务器系统,如果你是普通用户就不用选这个)

7. 配置环境变量

安装 CUDA 后,环境变量应该会自动配置。

8. 安装 Visual Studio 2019(参考这篇thundersvm的安装全过程(windows)_thundersvm安装-CSDN博客)

安装 Visual Studio 2019,并确保选择合适的组件。

需要选择的组件:

8. 使用 CMake 生成 Visual Studio 工程

在thundersvm文件夹中新建文件夹build,在资源管理器地址栏输入 cmd​​,回车,就会在该文件夹打开命令提示符。

输入以下命令,生成适用于 Visual Studio 2019 的工程文件:
cmake .. -DBUILD_SHARED_LIBS=TRUE -G"Visual Studio 16 2019" -A x64

解释:

  • cmake ..:指示 CMake 工具去上一级目录查找 CMakeLists.txt 文件并生成构建系统。
  • -DBUILD_SHARED_LIBS=TRUE:设置构建动态链接库(DLL)。
  • -G"Visual Studio 16 2019":指定使用 Visual Studio 2019 来生成构建文件。
  • -A x64:指定目标平台为 64位。

9. 在 Visual Studio 中生成解决方案

生成完 Visual Studio 项目文件后,在 Visual Studio 中打开 .sln 文件,生成解决方案

❗ 编译过程中的问题与错误记录

在最初使用 CUDA 10.2 编译 ThunderSVM 项目时,遇到了以下错误和警告:

1. C4819 编码警告
Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\cuda_runtime_api.h(9349): warning C4819
该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
2. LNK1104 链接错误
LINK : fatal error LNK1104: 无法打开文件“....\lib\Debug\thundersvm.lib”

✅ 最终解决方案

为彻底解决上述问题,我采取了以下措施:

  1. 卸载原有 CUDA 10.2 和旧版驱动。
  2. 重新安装最新版 NVIDIA 驱动和与之兼容的 CUDA 工具包。
  3. 使用 CMake 重新生成 Visual Studio 解决方案并编译。

💡 更新驱动和 CUDA 后,所有项目成功构建,未再出现编码警告和链接错误。

10. ThunderSVM Python 接口安装与 DLL 加载问题记录

✅ 前提:C++ 项目已成功编译

  • 之前已通过 CMake + Visual Studio 成功生成 thundersvm.lib 和相关 DLL 文件,编译无误。
  • 下一步目标:在 Python 中使用 thundersvm 包。

使用 conda 创建兼容的 Python 3.6 环境

  1. 创建虚拟环境,进入 thundersvm/python 文件夹下:
conda create -n py36 python=3.6
conda activate py36
    python setup.py install
    


      import thundersvm时出现 DLL 加载失败(WinError 126)

      OSError: [WinError 126] 找不到指定的模块。
      

      🔧 最终解决方案:暴力路径覆盖

      直接修改 thundersvm.py,手动指定 .dll 文件绝对路径,绕过平台判断逻辑。

      原始代码(自动判断平台):
      if platform == "win32":
          lib_path = path.join(dirname, shared_library_name)
      
      修改后的代码(注释自动判断,手动写死路径):
      # 注释自动平台判断部分
      # if path.exists(path.abspath(path.join(dirname, shared_library_name))):
      #     lib_path = path.abspath(path.join(dirname, shared_library_name))
      # else:
      #     if platform == "linux" or platform == "linux2":
      #         lib_path = path.join(dirname, shared_library_name)
      #     elif platform == "win32":
      #         lib_path = "F:\\anaconda3\\envs\\py36\\lib\\site-packages\\thundersvm-0.3.4-py3.6.egg\\thundersvm\\thundersvm.dll"
      #     elif platform == "darwin":
      #         lib_path = path.join(dirname, shared_library_name)
      
      # 直接写死 Windows DLL 路径
      lib_path = "F:\\anaconda3\\envs\\py36\\lib\\site-packages\\thundersvm-0.3.4-py3.6.egg\\thundersvm\\thundersvm.dll"
      print(lib_path)
      
      # 加载 DLL
      thundersvm = CDLL(lib_path, winmode=0)
      

      ✅ 加载成功,功能可用!

      import thundersvm
      print(dir(thundersvm))  # 列出 thundersvm 模块的所有属性

      完成上述修改后,import thundersvm 不再报错,Python 接口可正常调用训练与预测方法。

      步骤内容
      1️⃣使用 CMake + VS 编译成功 ThunderSVM
      2️⃣创建 Python 3.6 虚拟环境并安装 thundersvm
      3️⃣修改 thundersvm.py,手动指定 DLL 路径
      ✅问题解决,模块成功导入

      12. 总结与小知识点

      在安装 thundersvm 的过程中,遇到的主要问题是与驱动、CUDA 版本的兼容性,以及 Python 版本不兼容。通过更新驱动和调整 Python 环境,我成功地安装并使用了 thundersvm。

      重要知识点:
      • CMake:跨平台构建工具,能够自动化生成构建系统。
      • CUDA 和 cuDNN:用于加速 GPU 运算,特别是在深度学习和机器学习中。
      • Visual Studio 和 C++ 编译器:需要安装正确的组件以支持 CUDA 的编译和构建。

      希望通过这篇文章,大家能够顺利安装并配置 ThundersVM,避免我踩过的坑!

      参考:thundersvm的安装全过程(windows)_thundersvm安装-CSDN博客

      【CUDA】cuda安装 (windows版)_windows安装cuda-CSDN博客

      Logo

      北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

      更多推荐