Skip to content

Commit

Permalink
Merge pull request #11 from rapidsai/branch-0.15
Browse files Browse the repository at this point in the history
merge with upstream
  • Loading branch information
daxiongshu authored Jul 7, 2020
2 parents 404ff66 + e25e2fa commit 4b518e3
Show file tree
Hide file tree
Showing 91 changed files with 5,775 additions and 871 deletions.
25 changes: 19 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
- PR #2287: Single-GPU TfidfTransformer implementation
- PR #2289: QR SVD solver for MNMG PCA
- PR #2312: column-major support for make_blobs
- PR #2172: Initial support for auto-ARIMA
- PR #2394: Adding cosine & correlation distance for KNN
- PR #2392: PCA can accept sparse inputs, and sparse prim for computing covariance
- PR #2465: Support pandas 1.0+

## Improvements
- PR #2336: Eliminate `rmm.device_array` usage
Expand All @@ -14,24 +17,29 @@
- PR #1945: enable clang tidy
- PR #2339: umap performance improvements
- PR #2308: Using fixture for Dask client to eliminate possiblity of not closing
- PR #2310: Pinning ucx-py to 0.14 to make 0.15 CI pass
- PR #1945: enable clang tidy
- PR #2345: make C++ logger level definition to be the same as python layer
- PR #2329: Add short commit hash to conda package name
- PR #2363: Update threshold and make other changes for stress tests
- PR #2371: Updating MBSGD tests to use larger batches
- PR #2380: Pinning libcumlprims version to ease future updates
- PR #2405: Remove references to deprecated RMM headers.
- PR #2340: Import ARIMA in the root init file and fix the `test_fit_function` test
- PR #2408: Install meta packages for dependencies
- PR #2417: Move doc customization scripts to Jenkins
- PR #2427: Moving MNMG decomposition to cuml
- PR #2433: Add libcumlprims_mg to CMake
- PR #2420: Add and set convert_dtype default to True in estimator fit methods
- PR #2411: Refactor Mixin classes and use in classifier/regressor estimators
- PR #2442: fix setting RAFT_DIR from the RAFT_PATH env var
- PR #2411 Refactor Mixin classes and use in classifier/regressor estimators
- PR #2469: Updating KNN c-api to document all arguments
- PR #2453: Add CumlArray to API doc
- PR #2440: Use Treelite Conda package
- PR #2403 Support for input and output type consistency in logistic regression predict_proba
- PR #2403: Support for input and output type consistency in logistic regression predict_proba
- PR #2468: Add `_n_features_in_` attribute to all single GPU estimators that implement fit
- PR #2483: Moving MNMG KNN to cuml
- PR #2492: Adding additional assertions to mnmg nearest neighbors pytests
- PR #2439: Update dask RF code to have print_detailed function
- PR #2431: Match output of classifier predict with target dtype

## Bug Fixes
- PR #2369: Update RF code to fix set_params memory leak
Expand All @@ -48,6 +56,12 @@
- PR #2450: Update local build to use new gpuCI image
- PR #2454: Mark RF memleak test as XFAIL, because we can't detect memleak reliably
- PR #2455: Use correct field to store data type in `LabelEncoder.fit_transform`
- PR #2475: Fix typo in build.sh
- PR #2496: Fixing indentation for simulate_data in test_fil.py
- PR #2494: Set QN regularization strength consistent with scikit-learn
- PR #2486: Fix cupy input to kmeans init
- PR #2497: Changes to accomodate cuDF unsigned categorical changes
- PR #2507: Import `treelite.sklearn`

# cuML 0.14.0 (03 Jun 2020)

Expand Down Expand Up @@ -221,7 +235,7 @@
- PR #2305: Fixed race condition in DBScan
- PR #2354: Fix broken links in README

# cuML 0.13.0 (Date TBD)
# cuML 0.13.0 (31 Mar 2020)

## New Features
- PR #1777: Python bindings for entropy
Expand Down Expand Up @@ -340,7 +354,6 @@
- PR #1950: Fix UMAP test failure



# cuML 0.12.0 (04 Feb 2020)

## New Features
Expand Down
8 changes: 4 additions & 4 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ if hasArg --singlegpu; then
SINGLEGPU_PYTHON_FLAG="--singlegpu"
SINGLEGPU_CPP_FLAG=ON
fi
if hasArg mgtests; then
if hasArg cpp-mgtests; then
BUILD_CPP_MG_TESTS=ON
fi
if hasArg --nvtx; then
Expand Down Expand Up @@ -149,7 +149,7 @@ fi

################################################################################
# Configure for building all C++ targets
if completeBuild || hasArg libcuml || hasArg prims || hasArg bench || hasArg prims-bench || hasArg cppdocs; then
if completeBuild || hasArg libcuml || hasArg prims || hasArg bench || hasArg prims-bench || hasArg cppdocs || hasArg cpp-mgtests; then
if (( ${BUILD_ALL_GPU_ARCH} == 0 )); then
GPU_ARCH=""
echo "Building for the architecture of the GPU in the system..."
Expand Down Expand Up @@ -185,7 +185,7 @@ MAKE_TARGETS=
if hasArg libcuml; then
MAKE_TARGETS="${MAKE_TARGETS}cuml++ cuml ml"
fi
if hasarg mgtests; then
if hasArg cpp-mgtests; then
MAKE_TARGETS="${MAKE_TARGETS} ml_mg"
fi
if hasArg prims; then
Expand All @@ -199,7 +199,7 @@ if hasArg prims-bench; then
fi

# If `./build.sh cuml` is called, don't build C/C++ components
if completeBuild || hasArg libcuml || hasArg prims || hasArg bench; then
if completeBuild || hasArg libcuml || hasArg prims || hasArg bench || hasArg cpp-mgtests; then
# If there are no targets specified when calling build.sh, it will
# just call `make -j`. This avoids a lot of extra printing
cd ${LIBCUML_BUILD_DIR}
Expand Down
61 changes: 40 additions & 21 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ option(BUILD_CUML_CPP_LIBRARY "Build libcuml++ shared library" ON)

option(BUILD_CUML_TESTS "Build cuML algorithm tests" ON)

option(BUILD_CUML_MG_TESTS "Build cuML multigpu algorithm tests" ON)
option(BUILD_CUML_MG_TESTS "Build cuML multigpu algorithm tests" OFF)

option(BUILD_PRIMS_TESTS "Build ml-prim tests" ON)

Expand Down Expand Up @@ -156,10 +156,10 @@ if(SINGLEGPU)
set(WITH_UCX OFF)
endif(SINGLEGPU)

if(NOT BUILD_CUML_MPI_COMMS AND NOT SINGLEGPU)
message(STATUS "Detected BUILD_CUML_MPI_COMMS set to OFF. Disabling BUILD_CUML_MG_TESTS")
set(BUILD_CUML_MG_TESTS OFF)
endif(NOT BUILD_CUML_MPI_COMMS AND NOT SINGLEGPU)
if(BUILD_CUML_MG_TESTS AND NOT SINGLEGPU)
message(STATUS "Detected BUILD_CUML_MG_TESTS set to ON. Enabling BUILD_CUML_MPI_COMMS")
set(BUILD_CUML_MPI_COMMS ON)
endif(BUILD_CUML_MG_TESTS AND NOT SINGLEGPU)

##############################################################################
# - Requirements -------------------------------------------------------------
Expand Down Expand Up @@ -295,7 +295,6 @@ include(cmake/Dependencies.cmake)

set(CUML_INCLUDE_DIRECTORIES
${CUML_INCLUDE_DIR}
${CUMLPRIMS_MG_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src_prims
${CMAKE_CURRENT_SOURCE_DIR}/test/prims
Expand All @@ -304,16 +303,33 @@ set(CUML_INCLUDE_DIRECTORIES
${CUTLASS_DIR}/src/cutlass
${CUB_DIR}/src/cub
${SPDLOG_DIR}/src/spdlog/include
${RAFT_DIR}/cpp/include)
${RAFT_DIR}/cpp/include
)

set(CUML_LINK_LIBRARIES
set(CUML_PUBLIC_LINK_LIBRARIES
${CUDA_cublas_LIBRARY}
${CUDA_curand_LIBRARY}
${CUDA_cusolver_LIBRARY}
${CUDA_CUDART_LIBRARY}
${CUDA_cusparse_LIBRARY}
${CUDA_nvgraph_LIBRARY}
${CUMLPRIMS_MG_LIBRARIES})
)

set(CUML_PRIVATE_LINK_LIBRARIES
${Protobuf_LIBRARIES}
faisslib
treelite::treelite
treelite::treelite_runtime
)

if(ENABLE_CUMLPRIMS_MG)
list(APPEND CUML_INCLUDE_DIRECTORIES
${CUMLPRIMS_MG_INCLUDE_DIRS})

list(APPEND CUML_PRIVATE_LINK_LIBRARIES
CUMLPRIMS_MG::CUMLPRIMS_MG)

endif(ENABLE_CUMLPRIMS_MG)

##############################################################################
# - build libcuml++ shared library -------------------------------------------
Expand Down Expand Up @@ -352,25 +368,30 @@ if(BUILD_CUML_CPP_LIBRARY)
src/svm/svc.cu
src/svm/svr.cu
src/svm/ws_util.cu
src/tsa/auto_arima.cu
src/tsa/stationarity.cu
src/tsne/tsne.cu
src/tsvd/tsvd.cu
src/umap/umap.cu)

# mnmg components

# if(NOT SINGLEGPU)
# target_sources(${CUML_CPP_TARGET}
# PRIVATE src/kmeans/kmeans_mg.cu
# )
# endif(NOT SINGLEGPU)
if(NOT SINGLEGPU)
target_sources(${CUML_CPP_TARGET}
PRIVATE
src/knn/knn_mg.cu
src/pca/pca_mg.cu
src/pca/sign_flip_mg.cu
src/tsvd/tsvd_mg.cu
)
endif(NOT SINGLEGPU)

if(OPENMP_FOUND)
set(CUML_LINK_LIBRARIES ${CUML_LINK_LIBRARIES} ${OpenMP_CXX_LIB_NAMES} Threads::Threads)
set(CUML_PUBLIC_LINK_LIBRARIES ${CUML_PUBLIC_LINK_LIBRARIES} ${OpenMP_CXX_LIB_NAMES} Threads::Threads)
endif(OPENMP_FOUND)

if(NVTX)
set(CUML_LINK_LIBRARIES ${CUML_LINK_LIBRARIES} nvToolsExt)
set(CUML_PUBLIC_LINK_LIBRARIES ${CUML_PUBLIC_LINK_LIBRARIES} nvToolsExt)
link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib64)
endif(NVTX)

Expand All @@ -379,12 +400,10 @@ if(BUILD_CUML_CPP_LIBRARY)

target_link_libraries(${CUML_CPP_TARGET}
PUBLIC
${CUML_LINK_LIBRARIES}
${CUML_PUBLIC_LINK_LIBRARIES}
PRIVATE
${Protobuf_LIBRARIES}
faisslib
treelite::treelite
treelite::treelite_runtime)
${CUML_PRIVATE_LINK_LIBRARIES}
)
# If we export the libdmlc symbols, they can lead to weird crashes with other
# libraries that use libdmlc. This just hides the symbols internally.
target_link_options(${CUML_CPP_TARGET} PRIVATE "-Wl,--exclude-libs,libdmlc.a")
Expand Down
4 changes: 2 additions & 2 deletions cpp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ Current cmake offers the following configuration options:
| --- | --- | --- | --- |
| BUILD_CUML_CPP_LIBRARY | [ON, OFF] | ON | Enable/disable building libcuml++ shared library. Setting this variable to `OFF` sets the variables BUILD_CUML_TESTS, BUILD_CUML_MG_TESTS and BUILD_CUML_EXAMPLES to `OFF` |
| BUILD_CUML_TESTS | [ON, OFF] | ON | Enable/disable building cuML algorithm test executable `ml_test`. |
| BUILD_CUML_MG_TESTS | [ON, OFF] | ON | Enable/disable building cuML algorithm test executable `ml_mg_test`. Requires MPI installed and turning BUILD_CUML_MPI_COMMS to ON. |
| BUILD_CUML_MG_TESTS | [ON, OFF] | ON | Enable/disable building cuML algorithm test executable `ml_mg_test`. Requires MPI to be installed. When enabled, BUILD_CUML_MPI_COMMS will be automatically set to ON. |
| BUILD_PRIMS_TESTS | [ON, OFF] | ON | Enable/disable building cuML algorithm test executable `prims_test`. |
| BUILD_CUML_STD_COMMS | [ON, OFF] | ON | Enable/disable building cuML NCCL+UCX communicator for running multi-node multi-GPU algorithms. Note that UCX support can also be enabled/disabled (see below). The standard communicator and MPI communicator are not mutually exclusive and can both be installed at the same time. |
| WITH_UCX | [ON, OFF] | OFF | Enable/disable UCX support in the standard cuML communicator. Algorithms requiring point-to-point messaging will not work when this is disabled. This flag is ignored if BUILD_CUML_STD_COMMS is set to OFF. |
| BUILD_CUML_MPI_COMMS | [ON, OFF] | OFF | Enable/disable building cuML MPI+NCCL communicator for running multi-node multi-GPU C++ tests. MPI communicator and STD communicator are not mutually exclusive and can both be installed at the same time. If OFF, it overrides BUILD_CUML_MG_TESTS to be OFF as well. |
| BUILD_CUML_MPI_COMMS | [ON, OFF] | OFF | Enable/disable building cuML MPI+NCCL communicator for running multi-node multi-GPU C++ tests. MPI communicator and STD communicator may both be installed at the same time. If OFF, it overrides BUILD_CUML_MG_TESTS to be OFF as well. |
| SINGLEGPU | [ON, OFF] | OFF | Disable all mnmg components. Disables building of all multi-GPU algorithms and all comms library components. Removes libcumlprims, UCX-py and NCCL dependencies. Overrides values of BUILD_CUML_MG_TESTS, BUILD_CUML_STD_COMMS, WITH_UCX and BUILD_CUML_MPI_COMMS. |
| BUILD_CUML_EXAMPLES | [ON, OFF] | ON | Enable/disable building cuML C++ API usage examples. |
| BUILD_CUML_BENCH | [ON, OFF] | ON | Enable/disable building oc cuML C++ benchark. |
Expand Down
1 change: 0 additions & 1 deletion cpp/examples/dbscan/dbscan_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#endif //HAVE_CUB

#ifdef HAVE_RMM
#include <rmm/rmm.h>
#include <cuml/common/rmmAllocatorAdapter.hpp>
#endif //HAVE_RMM

Expand Down
1 change: 0 additions & 1 deletion cpp/examples/kmeans/kmeans_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#endif //HAVE_CUB

#ifdef HAVE_RMM
#include <rmm/rmm.h>
#include <cuml/common/rmmAllocatorAdapter.hpp>
#endif // HAVE_RMM

Expand Down
Loading

0 comments on commit 4b518e3

Please sign in to comment.