山东大学刘星宇 2025-10-25 22:19 采纳率: 100%
浏览 3
已结题

cusparseDcsrmv找不到,CUDA版本是11.8



```c
(.venv) PS D:\GMTracker\scs-python> python setup.py install --scs --gpu
Namespace(blas64=False, extraverbose=False, float32=False, gpu=True, gpu_atrans=True, int32=False, scs=True)
running install
running bdist_egg
running egg_info
writing scs.egg-info\PKG-INFO
writing dependency_links to scs.egg-info\dependency_links.txt
writing requirements to scs.egg-info\requires.txt
writing top-level names to scs.egg-info\top_level.txt
blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_info']
    libraries = ['openblas_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_info']
    libraries = ['openblas_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_lapack_info']
    libraries = ['openblas_lapack_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    library_dirs = ['D:\\a\\1\\s\\numpy\\build\\openblas_lapack_info']
    libraries = ['openblas_lapack_info']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
Could not locate executable g77
Could not locate executable f77
Could not locate executable ifort
Could not locate executable ifl
Could not locate executable f90
Could not locate executable DF
Could not locate executable efl
Using built-in specs.
COLLECT_GCC=D:\mingw64\bin\gfortran.exe
COLLECT_LTO_WRAPPER=D:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 
D:\GMTracker\.venv\lib\site-packages\numpy\distutils\system_info.py:1914: UserWarning: 
    Optimized (vendor) Blas libraries are not found.
    Falls back to netlib Blas library which has worse performance.
    A better performance should be easily gained by switching
    Blas library.
  if self._calc_info(blas):
D:\GMTracker\.venv\lib\site-packages\numpy\distutils\system_info.py:1914: UserWarning: 
    Blas (http://www.netlib.org/blas/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [blas]) or by setting
    the BLAS environment variable.
  if self._calc_info(blas):
D:\GMTracker\.venv\lib\site-packages\numpy\distutils\system_info.py:1914: UserWarning: 
    Blas (http://www.netlib.org/blas/) sources not found.
    Directories to search for the sources can be specified in the
    numpy/distutils/site.cfg file (section [blas_src]) or by setting
    the BLAS_SRC environment variable.
  if self._calc_info(blas):
{}
Using built-in specs.
COLLECT_GCC=D:\mingw64\bin\gfortran.exe
COLLECT_LTO_WRAPPER=D:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 
Using built-in specs.
COLLECT_GCC=D:\mingw64\bin\gfortran.exe
COLLECT_LTO_WRAPPER=D:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw810/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev0, Built by MinGW-W64 project' --with-bugurl=https://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/include -I/c/mingw810/prerequisites/x86_64-zlib-static/include -I/c/mingw810/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw810/x86_64-810-win32-seh-rt_v6-rev0/mingw64/opt/lib -L/c/mingw810/prerequisites/x86_64-zlib-static/lib -L/c/mingw810/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 8.1.0 (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 
D:\GMTracker\.venv\lib\site-packages\numpy\distutils\system_info.py:1748: UserWarning: 
    Lapack (http://www.netlib.org/lapack/) libraries not found.
    Directories to search for the libraries can be specified in the
    numpy/distutils/site.cfg file (section [lapack]) or by setting
    the LAPACK environment variable.
  return getattr(self, '_calc_info_{}'.format(name))()
D:\GMTracker\.venv\lib\site-packages\numpy\distutils\system_info.py:1748: UserWarning: 
    Lapack (http://www.netlib.org/lapack/) sources not found.
    Directories to search for the sources can be specified in the
    numpy/distutils/site.cfg file (section [lapack_src]) or by setting
    the LAPACK_SRC environment variable.
  return getattr(self, '_calc_info_{}'.format(name))()
{}
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
cl: 命令行 warning D9002 :忽略未知选项“-O3”
  ���ڴ����� build\temp.win-amd64-3.6\Release\src\_scs_gpu.cp36-win_amd64.lib �Ͷ��� build\temp.win-amd64-3.6\Release\src\_scs_gpu.cp36-win_amd64.exp
gpu.obj : error LNK2001: �޷��������ⲿ���� cusparseDcsrmv
private.obj : error LNK2001: �޷��������ⲿ���� cusparseDcsr2csc
build\lib.win-amd64-3.6\_scs_gpu.cp36-win_amd64.pyd : fatal error LNK1120: 2 
error: Command "D:\visualstudio\VC\Tools\MSVC\14.41.34120\bin\HostX86\x64\link.exe /nologo /INCREMENTAL:NO /LTCG /nodefaultlib:libucrt.lib ucrt.lib /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:D:\CUDA_Tool\NVIDIA GPU Computing Toolkit\CUDA\v11.8/lib/x64 /LIBPATH:D:\GMTracker\.venv\libs /LIBPATH:D:\python\libs /LIBPATH:D:\python /LIBPATH:D:\GMTracker\.venv\PCbuild\amd64 /LIBPATH:D:\visualstudio\VC\Tools\MSVC\14.41.34120\ATLMFC\lib\x64 /LIBPATH:D:\visualstudio\VC\Tools\MSVC\14.41.34120\lib\x64 /LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64 /LIBPATH:D:\Windows Kits\10\lib\10.0.22621.0\ucrt\x64 /LIBPATH:D:\Windows Kits\10\\lib\10.0.22621.0\\um\x64 cudart.lib cublas.lib cusparse.lib /EXPORT:PyInit__scs_gpu build\temp.win-amd64-3.6\Release\src/scsmodule.obj build\temp.win-amd64-3.6\Release\scs/src\aa.obj build\temp.win-amd64-3.6\Release\scs/src\cones.obj build\temp.win-amd64-3.6\Release\scs/src\ctrlc.obj build\temp.win-amd64-3.6\Release\scs/src\linalg.obj build\temp.win-amd64-3.6\Release\scs/src\normalize.obj build\temp.win-amd64-3.6\Release\scs/src\rw.obj build\temp.win-amd64-3.6\Release\scs/src\scs.obj build\temp.win-amd64-3.6\Release\scs/src\scs_version.obj build\temp.win-amd64-3.6\Release\scs/src\util.obj build\temp.win-amd64-3.6\Release\scs/linsys\amatrix.obj build\temp.win-amd64-3.6\Release\scs/linsys/gpu\gpu.obj build\temp.win-amd64-3.6\Release\scs/linsys/gpu/indirect\private.obj /OUT:build\lib.win-amd64-3.6\_scs_gpu.cp36-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.6\Release\src\_scs_gpu.cp36-win_amd64.lib" failed with exit status 1120

```

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-10-25 22:49
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:你值得拥有所有美好的东西,前提是你愿意为之努力。
    .

    根据错误信息,cusparseDcsrmvcusparseDcsr2csc 函数在链接时找不到,这表明 CUDA 库链接存在问题。以下是解决方案:

    问题分析

    错误显示两个 CUDA 稀疏矩阵函数无法解析:

    • cusparseDcsrmv - 双精度稀疏矩阵向量乘法
    • cusparseDcsr2csc - CSR 到 CSC 格式转换

    解决方案

    1. 检查 CUDA 安装和版本兼容性

    首先确认 CUDA 11.8 正确安装且路径正确:

    nvcc --version
    

    检查 CUDA 工具包路径是否包含 cuSPARSE 库:

    dir "D:\CUDA_Tool\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cusparse*"
    

    2. 更新构建配置

    修改 SCS 的构建配置,确保正确链接 cuSPARSE 库:

    # 在 setup.py 或构建配置中添加
    extra_link_args = [
        '-L"D:/CUDA_Tool/NVIDIA GPU Computing Toolkit/CUDA/v11.8/lib/x64"',
        '-lcusparse',
        '-lcudart',
        '-lcublas'
    ]
    

    3. 手动指定库路径

    在构建命令中显式指定库路径:

    python setup.py install --scs --gpu ^
      --library-dirs="D:\CUDA_Tool\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64" ^
      --libraries=cusparse,cudart,cublas
    

    4. 环境变量设置

    设置必要的环境变量:

    set CUDA_PATH=D:\CUDA_Tool\NVIDIA GPU Computing Toolkit\CUDA\v11.8
    set PATH=%CUDA_PATH%\bin;%PATH%
    set LIB=%CUDA_PATH%\lib\x64;%LIB%
    

    5. 检查 cuSPARSE 库版本

    确认 cuSPARSE 库存在且版本兼容:

    # 检查库文件
    dir "D:\CUDA_Tool\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64\cusparse.lib"
    

    6. 替代方案:使用 conda 安装

    如果手动构建持续失败,考虑使用 conda 安装预编译版本:

    conda install -c conda-forge scs
    

    或者:

    pip install scs-gpu
    

    7. 验证修复

    修复后验证安装:

    import scs
    import numpy as np
    
    
    # 测试 GPU 功能是否正常工作
    data = {'A': np.random.randn(10, 10), 'b': np.random.randn(10), 'c': np.random.randn(10)}
    cone = {'l': 10}
    soln = scs.solve(data, cone, use_indirect=True, gpu=True)
    

    注意事项

    1. Python 版本兼容性:您使用的是 Python 3.6,考虑升级到更新的 Python 版本以获得更好的 CUDA 支持
    2. Visual Studio 版本:确保使用与 CUDA 11.8 兼容的 Visual Studio 版本
    3. 架构匹配:确认所有库都是 x64 架构

    如果问题仍然存在,请检查 SCS 项目的 GitHub issues 中是否有相关的解决方案,或者考虑在 Linux 环境下构建,通常 Linux 下的 CUDA 开发环境配置更为简单。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 10月25日