Add RABIT_DLL tag to definitions of rabit APIs. (#140)

* Add RABIT_DLL tag to definitions of rabit APIs.
* Fix Travis tests.
This commit is contained in:
Jiaming Yuan 2020-05-19 18:20:31 +08:00 committed by GitHub
parent 4fb34a008d
commit a6008d5d93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 80 additions and 36 deletions

View File

@ -63,7 +63,7 @@ addons:
before_install: before_install:
- git clone https://github.com/dmlc/dmlc-core - git clone https://github.com/dmlc/dmlc-core
- export TRAVIS=dmlc-core/scripts/travis/ - export TRAVIS=./scripts/
- source ${TRAVIS}/travis_setup_env.sh - source ${TRAVIS}/travis_setup_env.sh
- ${TRAVIS}/travis_osx_install.sh - ${TRAVIS}/travis_osx_install.sh
- source ./scripts/travis_setup.sh - source ./scripts/travis_setup.sh

13
scripts/travis_osx_install.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
set -x
if [ ${TRAVIS_OS_NAME} != "osx" ]; then
exit 0
fi
# Prevent clash between Python 2 and 3
brew unlink python@2
brew link --overwrite python
python3 -m pip install --upgrade pip

40
scripts/travis_setup_env.sh Executable file
View File

@ -0,0 +1,40 @@
# script to be sourced in travis yml
# setup all enviroment variables
export CACHE_PREFIX=${HOME}/.cache/usr
export PATH=${HOME}/.local/bin:${PATH}
export PATH=${PATH}:${CACHE_PREFIX}/bin
export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:${CACHE_PREFIX}/include
export C_INCLUDE_PATH=${C_INCLUDE_PATH}:${CACHE_PREFIX}/include
export LIBRARY_PATH=${LIBRARY_PATH}:${CACHE_PREFIX}/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CACHE_PREFIX}/lib
export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:${CACHE_PREFIX}/lib
alias make="make -j4"
# setup the cache prefix folder
if [ ! -d ${HOME}/.cache ]; then
mkdir ${HOME}/.cache
fi
if [ ! -d ${CACHE_PREFIX} ]; then
mkdir ${CACHE_PREFIX}
fi
if [ ! -d ${CACHE_PREFIX}/include ]; then
mkdir ${CACHE_PREFIX}/include
fi
if [ ! -d ${CACHE_PREFIX}/lib ]; then
mkdir ${CACHE_PREFIX}/lib
fi
if [ ! -d ${CACHE_PREFIX}/bin ]; then
mkdir ${CACHE_PREFIX}/bin
fi
# setup CUDA path if NVCC_PREFIX exists
if [ ! -z "$NVCC_PREFIX" ]; then
export PATH=${PATH}:${NVCC_PREFIX}/usr/local/cuda-7.5/bin
export CPLUS_INCLUDE_PATH=${CPLUS_INCLUDE_PATH}:${NVCC_PREFIX}/usr/local/cuda-7.5/include
export C_INCLUDE_PATH=${C_INCLUDE_PATH}:${NVCC_PREFIX}/usr/local/cuda-7.5/include
export LIBRARY_PATH=${LIBRARY_PATH}:${NVCC_PREFIX}/usr/local/cuda-7.5/lib64:${NVCC_PREFIX}/usr/lib/x86_64-linux-gnu
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${NVCC_PREFIX}/usr/local/cuda-7.5/lib64:${NVCC_PREFIX}/usr/lib/x86_64-linux-gnu
fi

View File

@ -220,38 +220,38 @@ struct WriteWrapper : public Serializable {
} // namespace c_api } // namespace c_api
} // namespace rabit } // namespace rabit
bool RabitInit(int argc, char *argv[]) { RABIT_DLL bool RabitInit(int argc, char *argv[]) {
return rabit::Init(argc, argv); return rabit::Init(argc, argv);
} }
bool RabitFinalize() { RABIT_DLL bool RabitFinalize() {
return rabit::Finalize(); return rabit::Finalize();
} }
int RabitGetRingPrevRank() { RABIT_DLL int RabitGetRingPrevRank() {
return rabit::GetRingPrevRank(); return rabit::GetRingPrevRank();
} }
int RabitGetRank() { RABIT_DLL int RabitGetRank() {
return rabit::GetRank(); return rabit::GetRank();
} }
int RabitGetWorldSize() { RABIT_DLL int RabitGetWorldSize() {
return rabit::GetWorldSize(); return rabit::GetWorldSize();
} }
int RabitIsDistributed() { RABIT_DLL int RabitIsDistributed() {
return rabit::IsDistributed(); return rabit::IsDistributed();
} }
void RabitTrackerPrint(const char *msg) { RABIT_DLL void RabitTrackerPrint(const char *msg) {
std::string m(msg); std::string m(msg);
rabit::TrackerPrint(m); rabit::TrackerPrint(m);
} }
void RabitGetProcessorName(char *out_name, RABIT_DLL void RabitGetProcessorName(char *out_name,
rbt_ulong *out_len, rbt_ulong *out_len,
rbt_ulong max_len) { rbt_ulong max_len) {
std::string s = rabit::GetProcessorName(); std::string s = rabit::GetProcessorName();
if (s.length() > max_len) { if (s.length() > max_len) {
s.resize(max_len - 1); s.resize(max_len - 1);
@ -260,17 +260,14 @@ void RabitGetProcessorName(char *out_name,
*out_len = static_cast<rbt_ulong>(s.length()); *out_len = static_cast<rbt_ulong>(s.length());
} }
void RabitBroadcast(void *sendrecv_data, RABIT_DLL void RabitBroadcast(void *sendrecv_data,
rbt_ulong size, int root) { rbt_ulong size, int root) {
rabit::Broadcast(sendrecv_data, size, root); rabit::Broadcast(sendrecv_data, size, root);
} }
void RabitAllgather(void *sendrecvbuf_, RABIT_DLL void RabitAllgather(void *sendrecvbuf_, size_t total_size,
size_t total_size, size_t beginIndex, size_t size_node_slice,
size_t beginIndex, size_t size_prev_slice, int enum_dtype) {
size_t size_node_slice,
size_t size_prev_slice,
int enum_dtype) {
rabit::c_api::Allgather(sendrecvbuf_, rabit::c_api::Allgather(sendrecvbuf_,
total_size, total_size,
beginIndex, beginIndex,
@ -279,13 +276,9 @@ void RabitAllgather(void *sendrecvbuf_,
static_cast<rabit::engine::mpi::DataType>(enum_dtype)); static_cast<rabit::engine::mpi::DataType>(enum_dtype));
} }
RABIT_DLL void RabitAllreduce(void *sendrecvbuf, size_t count, int enum_dtype,
void RabitAllreduce(void *sendrecvbuf, int enum_op, void (*prepare_fun)(void *arg),
size_t count, void *prepare_arg) {
int enum_dtype,
int enum_op,
void (*prepare_fun)(void *arg),
void *prepare_arg) {
rabit::c_api::Allreduce rabit::c_api::Allreduce
(sendrecvbuf, count, (sendrecvbuf, count,
static_cast<rabit::engine::mpi::DataType>(enum_dtype), static_cast<rabit::engine::mpi::DataType>(enum_dtype),
@ -293,10 +286,10 @@ void RabitAllreduce(void *sendrecvbuf,
prepare_fun, prepare_arg); prepare_fun, prepare_arg);
} }
int RabitLoadCheckPoint(char **out_global_model, RABIT_DLL int RabitLoadCheckPoint(char **out_global_model,
rbt_ulong *out_global_len, rbt_ulong *out_global_len,
char **out_local_model, char **out_local_model,
rbt_ulong *out_local_len) { rbt_ulong *out_local_len) {
// NOTE: this function is not thread-safe // NOTE: this function is not thread-safe
using rabit::BeginPtr; using rabit::BeginPtr;
using namespace rabit::c_api; // NOLINT(*) using namespace rabit::c_api; // NOLINT(*)
@ -321,10 +314,8 @@ int RabitLoadCheckPoint(char **out_global_model,
return version; return version;
} }
void RabitCheckPoint(const char *global_model, RABIT_DLL void RabitCheckPoint(const char *global_model, rbt_ulong global_len,
rbt_ulong global_len, const char *local_model, rbt_ulong local_len) {
const char *local_model,
rbt_ulong local_len) {
using namespace rabit::c_api; // NOLINT(*) using namespace rabit::c_api; // NOLINT(*)
WriteWrapper sg(global_model, global_len); WriteWrapper sg(global_model, global_len);
WriteWrapper sl(local_model, local_len); WriteWrapper sl(local_model, local_len);
@ -335,10 +326,10 @@ void RabitCheckPoint(const char *global_model,
} }
} }
int RabitVersionNumber() { RABIT_DLL int RabitVersionNumber() {
return rabit::VersionNumber(); return rabit::VersionNumber();
} }
int RabitLinkTag() { RABIT_DLL int RabitLinkTag() {
return 0; return 0;
} }