Skip to content

无法手动导入litorch[cuda] #6248

@zm-luo

Description

@zm-luo

Xmake 版本

2.9.8+2025032

操作系统版本和架构

ubuntu 22.04

描述问题

我安装了libtorch[cuda] 2.6, nvcc 12.4, 使用cmake已经能够正常使用. 但是使用xmake会build不通过. 报错 /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’

期待的结果

正常编译, 可以打印cuda信息

工程配置

add_rules("mode.debug", "mode.release")
-- 添加 C++ 标准
set_languages("c++14")
set_runtimes("MD") -- 设置所有包为动态链接

add_requires("opencv") -- 添加 OpenCV 依赖
add_packages("opencv") -- 链接 OpenCV 库

local libtorch = "/home/lzm/env/libtorch"
add_requires(
    "cmake::Torch", 
    {
        system = true, 
        configs = {
            share = true,
            envs = {CMAKE_PREFIX_PATH = libtorch},
            presets = {CMAKE_BUILD_TYPE = "Release"},
            CUDA = true
        }
    }
)
add_packages("cmake::Torch")
-- 添加 libtorch 的头文件路径
add_includedirs(path.join(libtorch, "include"))
add_includedirs(path.join(libtorch, "include/torch/csrc/api/include"))
-- 添加 libtorch 的库路径
add_linkdirs(path.join(libtorch, "lib"))
-- 添加 libtorch 的链接库
add_links("torch", "torch_cpu", "c10") 
add_links("torch_cuda", "c10_cuda") -- 如果使用 CUDA,还需要添加 CUDA 库


target("xmakePrac")
    set_kind("binary")
    add_files("src/*.cpp")

附加信息和错误日志

/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’
  104 |     init::kaiming_uniform_(
      |     ~~~~~~~~~~~~~~~~~~~~~~^
      |                           |
      |                           const torch::enumtype::kFanIn
  105 |         weight,
      |         ~~~~~~~            
  106 |         /*a=*/std::sqrt(5)); // NOLINT(cppcoreguidelines-avoid-magic-numbers)
      |         ~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:5,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/init.h:97:17: note:   initializing argument 3 of ‘at::Tensor torch::nn::init::kaiming_uniform_(at::Tensor, double, int, int)’
   97 |     FanModeType mode = torch::kFanIn,
      |     ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules.h:20,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:7,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h: In instantiation of ‘const torch::ExpandingArray<D>& torch::nn::ConvTransposeNdImpl<D, Derived>::padding() const [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:287:23:   required from ‘void torch::nn::ConvTransposeNdImpl<D, Derived>::pretty_print(std::ostream&) const [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl; std::ostream = std::basic_ostream<char>]’
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:281:8:   required from here
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:312:61: error: no matching function for call to ‘torch::nn::detail::ConvNdOptions<2>::padding() const’
  312 |     return std::get<ExpandingArray<D>>(this->options.padding());
      |                                        ~~~~~~~~~~~~~~~~~~~~~^~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader_options.h:3,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader/base.h:3,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader/stateful.h:4,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data/dataloader.h:3,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/data.h:3,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:9,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate: ‘decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) torch::nn::detail::ConvNdOptions<D>::padding(const int&) [with long unsigned int D = 2; decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) = torch::nn::detail::ConvNdOptions<2>&]’
   60 |   TORCH_ARG(padding_t, padding) = 0;
      |   ^~~~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note:   candidate expects 1 argument, 0 provided
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note: candidate: ‘decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) torch::nn::detail::ConvNdOptions<D>::padding(int&&) [with long unsigned int D = 2; decltype (*(torch::nn::detail::ConvNdOptions<D>*)this) = torch::nn::detail::ConvNdOptions<2>&]’
   60 |   TORCH_ARG(padding_t, padding) = 0;
      |   ^~~~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:60:3: note:   candidate expects 1 argument, 0 provided
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/functional/conv.h:3,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/functional.h:4,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:4,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:63:18: note: candidate: ‘decltype(auto) torch::nn::detail::ConvNdOptions<D>::padding(std::initializer_list<long int>) [with long unsigned int D = 2]’
   63 |   decltype(auto) padding(std::initializer_list<int64_t> il) {
      |                  ^~~~~~~
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/options/conv.h:63:18: note:   candidate expects 1 argument, 0 provided
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules.h:20,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:7,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h: In instantiation of ‘void torch::nn::ConvNdImpl<D, Derived>::reset_parameters() [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:100:5:   required from ‘void torch::nn::ConvNdImpl<D, Derived>::reset() [with long unsigned int D = 2; Derived = torch::nn::ConvTranspose2dImpl]’
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:32:8:   required from here
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/modules/conv.h:104:27: error: cannot convert ‘const torch::enumtype::kFanIn’ to ‘int’
  104 |     init::kaiming_uniform_(
      |     ~~~~~~~~~~~~~~~~~~~~~~^
      |                           |
      |                           const torch::enumtype::kFanIn
  105 |         weight,
      |         ~~~~~~~            
  106 |         /*a=*/std::sqrt(5)); // NOLINT(cppcoreguidelines-avoid-magic-numbers)
      |         ~~~~~~~~~~~~~~~~~~~
In file included from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn.h:5,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/all.h:15,
                 from /home/lzm/env/libtorch/include/torch/csrc/api/include/torch/torch.h:3,
                 from src/main.h:4,
                 from src/main.cpp:1:
/home/lzm/env/libtorch/include/torch/csrc/api/include/torch/nn/init.h:97:17: note:   initializing argument 3 of ‘at::Tensor torch::nn::init::kaiming_uniform_(at::Tensor, double, int, int)’
   97 |     FanModeType mode = torch::kFanIn,
      |     ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
stack traceback:
    [C]: in function 'error'
    [@programdir/core/base/os.lua:1075]:
    [@programdir/modules/core/tools/gcc.lua:966]: in function 'catch'
    [@programdir/core/sandbox/modules/try.lua:123]: in function 'try'
    [@programdir/modules/core/tools/gcc.lua:908]:
    [C]: in function 'xpcall'
    [@programdir/core/base/utils.lua:246]:
    [@programdir/core/tool/compiler.lua:288]: in function 'compile'
    [@programdir/modules/private/action/build/object.lua:100]: in function 'script'
    [@programdir/modules/private/action/build/object.lua:131]: in function 'build_object'
    [@programdir/modules/private/action/build/object.lua:156]: in function 'jobfunc'
    [@programdir/modules/async/runjobs.lua:241]:
    [C]: in function 'xpcall'
    [@programdir/core/base/utils.lua:246]: in function 'trycall'
    [@programdir/core/sandbox/modules/try.lua:117]: in function 'try'
    [@programdir/modules/async/runjobs.lua:224]: in function 'cotask'
    [@programdir/core/base/scheduler.lua:406]:

stack traceback:
        [C]: in function 'error'
        @programdir/core/base/os.lua:1075: in function 'base/os.raiselevel'
        (...tail calls...)
        @programdir/core/main.lua:329: in upvalue 'cotask'
        @programdir/core/base/scheduler.lua:406: in function <@programdir/core/base/scheduler.lua:399>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions