pytorch “Could not find schema for aten::empty.memory_format”in libtorch

mgdq6dx1  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(193)

我正在尝试使用libtorch从Android上的原生代码加载PyTorch模型文件。当我加载文件时,我得到以下异常:

terminating with uncaught exception of type c10::Error: Could not find schema for aten::empty.memory_format ()
Exception raised from findSchemaOrThrow at /Users/steve/work/torch/pytorch/aten/src/ATen/core/dispatch/Dispatcher.cpp:131 (most recent call first):

字符串
我以前在iOS上遇到过同样的问题,并通过向链接器指定“-all_load”标志来修复它。
根据我在iOS上看到的,我的猜测是,Tensor代码有一些静态初始化器,这些初始化器被剥离出来,没有被调用。然而,我认为在Android上相当于clang的东西(“-force_load”)导致了一些额外的链接错误,我正在努力修复。
有没有其他方法来强制初始化?在libtorch代码中,这个模式通常是在哪里注册的?

9w11ddsr

9w11ddsr1#

请确保您使用NDK的版本21构建库,然后在CMakeLists.txt文件的target_link_libraries部分使用以下内容:

-Wl,--gc-sections
    -Wl,--whole-archive
    ${TORCH_LIB_DIR}/libtorch.a
    ${TORCH_LIB_DIR}/libtorch_cpu.a
    -Wl,--no-whole-archive
    ${TORCH_LIB_DIR}/libc10.a
    ${TORCH_LIB_DIR}/libnnpack.a
    ${TORCH_LIB_DIR}/libXNNPACK.a
    ${TORCH_LIB_DIR}/libpytorch_qnnpack.a
    ${TORCH_LIB_DIR}/libpthreadpool.a
    ${TORCH_LIB_DIR}/libeigen_blas.a
    ${TORCH_LIB_DIR}/libcpuinfo.a
    ${TORCH_LIB_DIR}/libclog.a
    ${TORCH_LIB_DIR}/libVulkanWrapper.a

字符串

相关问题