Motivation: providing Augmented Reality Video Presentations through a fast and simple production pipeline.
It is actually simple to get Blender + Cycles + Nvidia/CUDA working on Mac OS X 10.13.6 (High Sierra). It takes 5 steps assuming Xcode is already installed:
  wget 'https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_mac.dmg' && \
  hdiutil attach cuda_10.2.89_mac.dmg \
      -nobrowse \
      -mountpoint \
      /Volumes/CUDAMacOSXInstaller
  open /Volumes/CUDAMacOSXInstaller/CUDAMacOSXInstaller.app
  hdiutil detach /Volumes/CUDAMacOSXInstaller && rm ./cuda_10.2.89_mac.dmg
  make update
make"-std=c++14 " as first argument of the string_printf (don't omit the trailing space!).  It should look like this:
  
     string cflags = string_printf(
            "-std=c++14 "
            "-m%d "
            "--ptxas-options=\"-v\" "
            "--use_fast_math "
            "-DNVCC "
            "-I\"%s\"",
            machine,
            include_path.c_str());
  static_assert calls for which the 1st param is a C++ templatised value that have an extra comma by simply putting the expression in parenthesis, so the non-C++14 compiler don't get confused.  This is the diff I got after the fix:
  
      887c887
      <     static_assert(is_same<int, typename CoordT::ValueType>::value, "Expected \"int\" coordinate type");
      ---
      >     static_assert((is_same<int, typename CoordT::ValueType>::value), "Expected \"int\" coordinate type");
      1515,1516c1515,1516
      <     static_assert(is_same<NodeType<0>, LeafNodeType>::value, "NodeType<0> error");
      <     static_assert(is_same<NodeType<3>, RootType>::value, "NodeType<3> error");
      ---
      >     static_assert((is_same<NodeType<0>, LeafNodeType>::value), "NodeType<0> error");
      >     static_assert((is_same<NodeType<3>, RootType>::value), "NodeType<3> error");
      1594c1594
      <     static_assert(is_same<NodeType<NodeT::LEVEL>, NodeT>::value, "Tree::getNode: unvalid node type");
      ---
      >     static_assert((is_same<NodeType<NodeT::LEVEL>, NodeT>::value), "Tree::getNode: unvalid node type");
      1611c1611
      <     static_assert(is_same<NodeType<NodeT::LEVEL>, NodeT>::value, "Tree::getNode: unvalid node type");
      ---
      >     static_assert((is_same<NodeType<NodeT::LEVEL>, NodeT>::value), "Tree::getNode: unvalid node type");
      2425c2425
      <         static_assert(is_same<T, NodeT>::value, "ReadAccessor::getNode: Invalid node type");
      ---
      >         static_assert((is_same<T, NodeT>::value), "ReadAccessor::getNode: Invalid node type");
  
  make WITH_CYCLES_CUDA_BINARIES=ON DCYCLES_CUDA_BINARIES_ARCH=sm_61
  
I used the latest git version (commit fa82a15676eb37a7e73d1e3a0e8095684842376d, version 2.92) to build, my system is an aging hackintosh
 running Xcode 10.1 and WebDrives 387.10.10.10.40.132 (ie, about a year old) with a GTX 1050 Ti and yet the whole thing work just fine.
It's great to be back!