$ git submodule init
$ git submodule update
This should clone the moderngpu and cub git repos to ext/ but the cub git repo failed for me. So I cloned it by using this command in the ext/ directory (you will need to remove the existing cub directory)
$ git clone https://github.com/NVlabs/cub.git
At this point the build should work according to the documentation but running "cmake . " and "make" in the root cudpp directory will fail with an error something like "src/cudpp/CMakeFiles/cudpp.dir/build.make:105: recipe for target 'src/cudpp/CMakeFiles/cudpp.dir/app/cudpp_generated_multisplit_app.cu.o' failed". I think the is because of the cub repo changing causing cudpp to break.
To fix this you need to add an include to the file at cudpp/src/cudpp/app/multisplit_app.cu. Near the top of the file you should see these includes
#include <cub/cub.cuh>
#include "cuda_util.h"
#include "cudpp.h"
#include "cudpp_util.h"
add "#include <cub/util_allocator.cuh>" to these
At this point cmake will get up to some cuda_hash files which will cause errors saying "nvcc fatal : Unsupported gpu architecture 'compute_20'". So for the last step we need to modify a cmakefile that has outdated architectures in them (if you are using cuda-9). The CMakeLists.txt file resides in cudpp/src/cudpp_hash/ you need to modify this file removing all instances of SM's less then 30. To comment them out use '#'
these are the parts you have to remove
set(GENCODE_SM12 -gencode=arch=compute_12,code=sm_12 -gencode=arch=compute_12,code=compute_12)
set(GENCODE_SM13 -gencode=arch=compute_13,code=sm_13 -gencode=arch=compute_13,code=compute_13)
set(GENCODE_SM20 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_20,code=compute_20)
if (CUDPP_GENCODE_SM12)
set(GENCODE ${GENCODE} ${GENCODE_SM12})
endif(CUDPP_GENCODE_SM12)
if (CUDPP_GENCODE_SM13)
set(GENCODE ${GENCODE} ${GENCODE_SM13})
endif(CUDPP_GENCODE_SM13)
if (CUDPP_GENCODE_SM20)
set(GENCODE ${GENCODE} ${GENCODE_SM20})
endif(CUDPP_GENCODE_SM20)