BVLC / caffe

Caffe: a fast open framework for deep learning.

Home Page:http://caffe.berkeleyvision.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to run caffe in the M1 mac? I meet a problem.

shadowwu1 opened this issue · comments

I use the homebrew in M1 mac to install the lib such as boost, hdm5. After I change the cmakelist and cmake successed , I try to run make, but I meet problem below:

Undefined symbols for architecture arm64:
"boost::python::detail::init_module(char const*, void (*)())", referenced from:
_init_caffe in _caffe.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/_caffe.dylib] Error 1
make[1]: *** [python/CMakeFiles/pycaffe.dir/all] Error 2
make: *** [all] Error 2

when i install boost by homebrew, it look like boost supoort arm64, I try to find some solution or some problom just like I meet, but I thought I was the first one who try to use this simple solution to run caffe in the M1 mac which is arm core inside rather than x86. I hope someone can give me some help to make it. Thanks!
This is my Cmakelist file.
CMakeLists.txt

same problem, the only solution for me now is using docker

@klrc can you give reference on how you solved with docker?
Thanks

commented

应该是库没链接对,我试过M1可以跑

@klrc can you give reference on how you solved with docker? Thanks

solved now, pls make sure to link with your arm64 python library
I edit CMakeCache.txt like this:

//Path to a library.
PYTHON_LIBRARY:FILEPATH=/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib

hope this helps

you can also check this:
https://www.dazhuanlan.com/evenlemon/topics/947293

NOTE: pycaffe cannot run through Rosetta (e.g. anaconda) because of x86_64 arch

@klrc can you give reference on how you solved with docker? Thanks

solved now, pls make sure to link with your arm64 python library I edit CMakeCache.txt like this:

//Path to a library.
PYTHON_LIBRARY:FILEPATH=/opt/homebrew/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/libpython3.9.dylib

hope this helps

you can also check this: https://www.dazhuanlan.com/evenlemon/topics/947293

NOTE: pycaffe cannot run through Rosetta (e.g. anaconda) because of x86_64 arch

Can you show me your whole cmakecache.txt? I modified it according to your method, but it still doesn't work. thank you

I use the homebrew in M1 mac to install the lib such as boost, hdm5. After I change the cmakelist and cmake successed , I try to run make, but I meet problem below:

Undefined symbols for architecture arm64: "boost::python::detail::init_module(char const*, void (*)())", referenced from: _init_caffe in _caffe.cpp.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [lib/_caffe.dylib] Error 1 make[1]: *** [python/CMakeFiles/pycaffe.dir/all] Error 2 make: *** [all] Error 2

when i install boost by homebrew, it look like boost supoort arm64, I try to find some solution or some problom just like I meet, but I thought I was the first one who try to use this simple solution to run caffe in the M1 mac which is arm core inside rather than x86. I hope someone can give me some help to make it. Thanks! This is my Cmakelist file. CMakeLists.txt

您好请问解决了吗

I got a problem, an the compile is terminated! the outputs are:

`

[ 75%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/db_lmdb.cpp.o
[ 75%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/hdf5.cpp.o
[ 76%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/im2col.cpp.o
[ 76%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/insert_splits.cpp.o
[ 78%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/io.cpp.o
[ 78%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/math_functions.cpp.o
[ 79%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/signal_handler.cpp.o
[ 79%] Building CXX object src/caffe/CMakeFiles/caffe.dir/util/upgrade_proto.cpp.o
[ 81%] Linking CXX shared library ../../lib/libcaffe.dylib
Undefined symbols for architecture arm64:
"_AbslInternalSpinLockWake_lts_20240116", referenced from:
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(text_format.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic
, bool) in libprotobuf.a(reflection_ops.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(generated_message_reflection.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic
, bool) in libprotobuf.a(descriptor.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(message.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic
, bool) in libprotobuf.a(dynamic_message.cc.o)
absl::lts_20240116::base_internal::SpinLockWake(std::__1::atomic, bool) in libprotobuf.a(wire_format.cc.o)
...
"utf8_range::IsStructurallyValid(absl::lts_20240116::string_view)", referenced from:
google::protobuf::internal::WireFormatLite::VerifyUtf8String(char const
, int, google::protobuf::internal::WireFormatLite::Operation, char const*) in libprotobuf.a(wire_format_lite.cc.o)

`

how can i solve it?

same problem, the only solution for me now is using docker

Hi there! I am also on m1 Mac trying to build caffe with docker. I used the dockerfile from the (https://github.com/BVLC/caffe/blob/master/docker/cpu/Dockerfile) but failed with some errors. I wonder whether you had encountered similar problems and how you resolved them. Thank you so much!!