BVLC / caffe

Caffe: a fast open framework for deep learning.
http://caffe.berkeleyvision.org/
Other
33.96k stars 18.72k forks source link

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

Open shadowwu1 opened 2 years ago

shadowwu1 commented 2 years ago

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

klrc commented 2 years ago

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

rverma-dev commented 2 years ago

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

xxlyu-2046 commented 2 years ago

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

klrc commented 2 years ago

@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

wym11ciri commented 2 years ago

@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

xiaolin1990 commented 2 years ago

这是来自QQ邮箱的假期自动回复邮件。 谢谢,您的邮件已收到,尽快给您回复。

lovie123 commented 2 years ago

您好,邮件已收到,谢谢!

dragonQian commented 2 years ago

这是来自QQ邮箱的假期自动回复邮件。   您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。

wym11ciri commented 2 years ago

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

您好请问解决了吗

SLiang-liao commented 5 months ago

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?