enable ROCm for jvm and R

This commit is contained in:
Hui Liu 2023-10-30 12:52:44 -07:00
parent 32ae49ab92
commit 40dc263602
9 changed files with 31 additions and 5 deletions

View File

@ -32,7 +32,7 @@ namespace common {
bool CheckNAN(double v) { bool CheckNAN(double v) {
return ISNAN(v); return ISNAN(v);
} }
#if !defined(XGBOOST_USE_CUDA) #if !defined(XGBOOST_USE_CUDA) && !defined(XGBOOST_USE_HIP)
double LogGamma(double v) { double LogGamma(double v) {
return lgammafn(v); return lgammafn(v);
} }

View File

@ -9,6 +9,11 @@ if(USE_CUDA)
${PROJECT_SOURCE_DIR}/jvm-packages/xgboost4j-gpu/src/native/xgboost4j-gpu.cu) ${PROJECT_SOURCE_DIR}/jvm-packages/xgboost4j-gpu/src/native/xgboost4j-gpu.cu)
endif() endif()
if(USE_HIP)
list(APPEND JVM_SOURCES
${PROJECT_SOURCE_DIR}/jvm-packages/xgboost4j-gpu/src/native/xgboost4j-gpu.hip)
endif()
add_library(xgboost4j SHARED ${JVM_SOURCES} ${XGBOOST_OBJ_SOURCES}) add_library(xgboost4j SHARED ${JVM_SOURCES} ${XGBOOST_OBJ_SOURCES})
if(ENABLE_ALL_WARNINGS) if(ENABLE_ALL_WARNINGS)

View File

@ -22,6 +22,8 @@ CONFIG = {
"USE_CUDA": "OFF", "USE_CUDA": "OFF",
"USE_NCCL": "OFF", "USE_NCCL": "OFF",
"USE_HIP": "OFF",
"USE_RCCL": "OFF",
"JVM_BINDINGS": "ON", "JVM_BINDINGS": "ON",
"LOG_CAPI_INVOCATION": "OFF" "LOG_CAPI_INVOCATION": "OFF"
} }
@ -74,6 +76,7 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--log-capi-invocation', type=str, choices=['ON', 'OFF'], default='OFF') parser.add_argument('--log-capi-invocation', type=str, choices=['ON', 'OFF'], default='OFF')
parser.add_argument('--use-cuda', type=str, choices=['ON', 'OFF'], default='OFF') parser.add_argument('--use-cuda', type=str, choices=['ON', 'OFF'], default='OFF')
parser.add_argument('--use-hip', type=str, choices=['ON', 'OFF'], default='OFF')
cli_args = parser.parse_args() cli_args = parser.parse_args()
if sys.platform == "darwin": if sys.platform == "darwin":
@ -84,7 +87,7 @@ if __name__ == "__main__":
print("building Java wrapper") print("building Java wrapper")
with cd(".."): with cd(".."):
build_dir = 'build-gpu' if cli_args.use_cuda == 'ON' else 'build' build_dir = 'build-gpu' if cli_args.use_cuda == 'ON' or cli_args.use_hip == 'ON' else 'build'
maybe_makedirs(build_dir) maybe_makedirs(build_dir)
with cd(build_dir): with cd(build_dir):
if sys.platform == "win32": if sys.platform == "win32":
@ -103,6 +106,9 @@ if __name__ == "__main__":
if cli_args.use_cuda == 'ON': if cli_args.use_cuda == 'ON':
CONFIG['USE_CUDA'] = 'ON' CONFIG['USE_CUDA'] = 'ON'
CONFIG['USE_NCCL'] = 'ON' CONFIG['USE_NCCL'] = 'ON'
elif cli_args.use_hip== 'ON':
CONFIG['USE_HIP'] = 'ON'
CONFIG['USE_RCCL'] = 'ON'
args = ["-D{0}:BOOL={1}".format(k, v) for k, v in CONFIG.items()] args = ["-D{0}:BOOL={1}".format(k, v) for k, v in CONFIG.items()]
@ -125,8 +131,8 @@ if __name__ == "__main__":
run(f'"{sys.executable}" mapfeat.py') run(f'"{sys.executable}" mapfeat.py')
run(f'"{sys.executable}" mknfold.py machine.txt 1') run(f'"{sys.executable}" mknfold.py machine.txt 1')
xgboost4j = 'xgboost4j-gpu' if cli_args.use_cuda == 'ON' else 'xgboost4j' xgboost4j = 'xgboost4j-gpu' if cli_args.use_cuda == 'ON' or cli_args.use_hip== 'ON' else 'xgboost4j'
xgboost4j_spark = 'xgboost4j-spark-gpu' if cli_args.use_cuda == 'ON' else 'xgboost4j-spark' xgboost4j_spark = 'xgboost4j-spark-gpu' if cli_args.use_cuda == 'ON' or cli_args.use_hip == 'ON' else 'xgboost4j-spark'
print("copying native library") print("copying native library")
library_name, os_folder = { library_name, os_folder = {

View File

@ -43,6 +43,7 @@
<maven.wagon.http.retryHandler.count>5</maven.wagon.http.retryHandler.count> <maven.wagon.http.retryHandler.count>5</maven.wagon.http.retryHandler.count>
<log.capi.invocation>OFF</log.capi.invocation> <log.capi.invocation>OFF</log.capi.invocation>
<use.cuda>OFF</use.cuda> <use.cuda>OFF</use.cuda>
<use.hip>OFF</use.hip>
<cudf.version>23.08.0</cudf.version> <cudf.version>23.08.0</cudf.version>
<spark.rapids.version>23.08.1</spark.rapids.version> <spark.rapids.version>23.08.1</spark.rapids.version>
<cudf.classifier>cuda11</cudf.classifier> <cudf.classifier>cuda11</cudf.classifier>

View File

@ -104,6 +104,8 @@
<argument>${log.capi.invocation}</argument> <argument>${log.capi.invocation}</argument>
<argument>--use-cuda</argument> <argument>--use-cuda</argument>
<argument>${use.cuda}</argument> <argument>${use.cuda}</argument>
<argument>--use-hip</argument>
<argument>${use.hip}</argument>
</arguments> </arguments>
<workingDirectory>${user.dir}</workingDirectory> <workingDirectory>${user.dir}</workingDirectory>
</configuration> </configuration>

View File

@ -2,7 +2,7 @@
// Created by bobwang on 2021/9/8. // Created by bobwang on 2021/9/8.
// //
#ifndef XGBOOST_USE_CUDA #if !defined(XGBOOST_USE_CUDA) && !defined(XGBOOST_USE_HIP)
#include <jni.h> #include <jni.h>

View File

@ -1,6 +1,10 @@
#include <jni.h> #include <jni.h>
#if defined(XGBOOST_USE_CUDA)
#include "../../../../src/common/device_helpers.cuh" #include "../../../../src/common/device_helpers.cuh"
#elif defined(XGBOOST_USE_HIP)
#include "../../../../src/common/device_helpers.hip.h"
#endif
#include "../../../../src/common/cuda_pinned_allocator.h" #include "../../../../src/common/cuda_pinned_allocator.h"
#include "../../../../src/data/array_interface.h" #include "../../../../src/data/array_interface.h"
#include "jvm_utils.h" #include "jvm_utils.h"

View File

@ -0,0 +1,4 @@
#if defined(XGBOOST_USE_HIP)
#include "xgboost4j-gpu.cu"
#endif

View File

@ -15,6 +15,10 @@ class BuildConfiguration: # pylint: disable=R0902
use_cuda: bool = False use_cuda: bool = False
# Whether to enable NCCL # Whether to enable NCCL
use_nccl: bool = False use_nccl: bool = False
# Whether to enable HIP
use_hip: bool = False
# Whether to enable RCCL
use_rccl: bool = False
# Whether to enable HDFS # Whether to enable HDFS
use_hdfs: bool = False use_hdfs: bool = False
# Whether to enable Azure Storage # Whether to enable Azure Storage