代码之家  ›  专栏  ›  技术社区  ›  Marko Grdinić

如何在CuPy项目中包含Cutlass?

  •  0
  • Marko Grdinić  · 技术社区  · 2 年前
    kernel = r"""
    #include <include/cutlass/cutlass.h>
    extern "C" __global__ void entry0() {
        return ;
    }
    """
    import cupy as cp
    
    raw_module = cp.RawModule(code=kernel, backend='nvcc', options=("-I G:/cutlass-3.3.0",))
    raw_module.get_function("entry0")((1, 1, 1),(1, 1, 1),())
    

    我是这样包含它的,但当我尝试运行它时,我会收到以下错误消息:

    cupy.cuda.compiler.CompileException: `nvcc` command returns non-zero exit status.
    command: ['C:\\Program', 'Files\\NVIDIA', 'GPU', 'Computing', 'Toolkit\\CUDA\\v12.2\\bin\\nvcc.EXE', '-gencode=arch=compute_89,code=sm_89', '--cubin', '-I G:/cutlass-3.3.0', '-IC:\\Users\\mrakg\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cupy\\_core\\include', '-IC:\\Users\\mrakg\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\cupy\\_core\\include\\cupy\\_cuda\\cuda-12', '-IC:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v12.2\\include', '-ftz=true', 'C:\\Users\\mrakg\\AppData\\Local\\Temp\\tmpdwwgnwt7\\e63b826e4265f53d72fc550972a60778d4e87cc0.cu']
    return-code: 2
    stdout/stderr:
    G:/cutlass-3.3.0\include/cutlass/cutlass.h(48): fatal error C1083: Cannot open include file: 'cutlass/detail/helper_macros.hpp': No such file or directory
    e63b826e4265f53d72fc550972a60778d4e87cc0.cu
    

    问题似乎是收录不够彻底。如果我查看Cutlass库本身,我会看到 quoted include :

    #include "cutlass/detail/helper_macros.hpp"
    

    如果是。。。

    #include "detail/helper_macros.hpp"
    

    它本可以工作,但事实上,它没有在正确的目录中查看它。我应该怎么做才能正确地包含它?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Marko Grdinić    2 年前
    "-I G:/cutlass-3.3.0/include"
    

    我的记忆力好像有问题。我所要做的是将目录包括在路径中。之后,编译以下内容。

    kernel = r"""
    #include <cutlass/cutlass.h>
    extern "C" __global__ void entry0() {
        return ;
    }
    """
    import cupy as cp
    
    raw_module = cp.RawModule(code=kernel, backend='nvcc', options=("-I G:/cutlass-3.3.0/include",))
    raw_module.get_function("entry0")((1, 1, 1),(1, 1, 1),())