Xtra-Computing / FedTree

A tree-based federated learning system (MLSys 2023)
https://fedtree.readthedocs.io/en/latest/index.html
Apache License 2.0
140 stars 38 forks source link

Install issue on MacOS #55

Closed zzyzeyuan closed 1 year ago

zzyzeyuan commented 1 year ago

Hi, when I run this command:

cmake -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" \
  -DOpenMP_C_LIB_NAMES=omp \
  -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" \
  -DOpenMP_CXX_LIB_NAMES=omp \
  -DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib \
  ..

I got this:

CMake Error at CMakeLists.txt:41 (add_subdirectory):
  The source directory

    /Users/myname/Downloads/FedTree/thrust

  does not contain a CMakeLists.txt file.

CMake Error at CMakeLists.txt:42 (find_package):
  By not providing "FindThrust.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Thrust", but
  CMake did not find one.

  Could not find a package configuration file provided by "Thrust" with any
  of the following names:

    ThrustConfig.cmake
    thrust-config.cmake

  Add the installation prefix of "Thrust" to CMAKE_PREFIX_PATH or set
  "Thrust_DIR" to a directory containing one of the above files.  If "Thrust"
  provides a separate development package or SDK, be sure it has been
  installed.

Then I check ~/FedTree/thrust, there is noting indeed. Also I can't find any file named ThrustConfig.cmake. How to fix this?

zzyzeyuan commented 1 year ago

I check CMakelists.txt, the line42 --> find_package(Thrust REQUIRED). Thrust is a package I should "brew install Thrust" first or that you have provided alredy?

QinbinLi commented 1 year ago

Hi @zzyzeyuan ,

You need to run the following commands before you build the library as stated in the document.

git submodule init
git submodule update
zzyzeyuan commented 1 year ago

Thanks,but it's not completely solved. When I run this command:

cmake -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" \
  -DOpenMP_C_LIB_NAMES=omp \
  -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include" \
  -DOpenMP_CXX_LIB_NAMES=omp \
  -DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib \
  ..

another bug similar to above:

CMake Error at CMakeLists.txt:52 (find_package):
  Could not find a package configuration file provided by "Protobuf" with any
  of the following names:

    ProtobufConfig.cmake
    protobuf-config.cmake

  Add the installation prefix of "Protobuf" to CMAKE_PREFIX_PATH or set
  "Protobuf_DIR" to a directory containing one of the above files.  If
  "Protobuf" provides a separate development package or SDK, be sure it has
  been installed.

I run "git submodule update" again, but it doesn't work. What should I do next?

QinbinLi commented 1 year ago

Hi @zzyzeyuan ,

You need to install gRPC first if you want to install the distributed version. If you only want to install the single-machine simulation version, you can add -DDISTRIBUTED=OFF option to cmake (see issue #54).

zzyzeyuan commented 1 year ago

It works! Thank you!!!😬😬😬