如何在Mac ARM上构建libtorch?

5

我下载了LibTorch,并在MacBook Pro ARM上制作了这些文件:

example-app/
     build/
     libtorch/
     CMakeLists.txt
     example-app.cpp

然后我使用这些命令来构建torch:

cmake -DCMAKE_PREFIX_PATH=/path-to-example-app/example-app/libtorch
make

我遇到了这个错误:

building for macOS-x86_64 but attempting to link with file built for unknown-arm64

你能帮助我吗?

2个回答

7
我能够在我的 Mac M1 上从源代码构建 libtorch 库,并运行你正在查看的 C++ example-app 项目。

(https://medium.com/@albertsundjaja/installing-pytorch-c-api-d52c722f47ec)

我按照以下步骤完成了它:

% git clone -b master --recurse-submodule https://github.com/pytorch/pytorch.git
% mkdir pytorch-build
% cd pytorch-build 
% cmake -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=Release -DPYTHON_EXECUTABLE:PATH=`which python3` -DCMAKE_INSTALL_PREFIX:PATH=../pytorch-install ../pytorch

% cmake --build . --target install 

上述过程创建了一个名为pytorch-install的目录。从pytorch-install中以下目录中复制文件到/example-app/libtorch/中相应的目录:
bin include lib share 重要提示:替换文件而不是目录,否则将会丢失一些原始libtorch所需的文件。
完成此操作后,我可以按照教程运行以下命令:
% cmake -DCMAKE_PREFIX_PATH=/path-to-example-app/example-app/libtorch ..
    make

然后运行命令

% ./example-app

我得到

 0.1816  0.6954  0.8272
 0.7898  0.0256  0.1385
[ CPUFloatType{2,3} ]

我发现我可以直接用新创建的pytorch-install目录替换整个libtorch目录,因此无需逐个替换文件。 - neuro630

1

因为libtorch默认只构建x86架构,而不是arm架构。 可能需要自己编译。

我的意思是你下载的libtorch是预构建库,其中包含.so文件。这将无法工作,因为pytorch仅为x86架构提供预构建库。而你正在使用arm架构的CPU。

你需要下载libtorch源代码,并从头开始构建libtorch。

在你从头构建libtorch之后,你将获得适合在arm架构CPU上链接的二进制文件.so。


4
这并不是一个回答。如果你不能确定这个解决方案是否有效,你应该将它写成评论。此外,他的问题表明他正在自行编译,因此你应该在这里提供更详细的解释。 - Mike Young
是的,你可能是对的。但我认为PyTorch提供了特定的脚本来从零开始构建LibTorch,不像这样简单。 - Rookie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接