From 643dad66ee4b32a8850ca0b9e577d3af8012ad8f Mon Sep 17 00:00:00 2001 From: Gilbert Lee Date: Sat, 17 Jan 2026 17:41:16 -0600 Subject: [PATCH] Fixing some Makefile issues, Null memory parsing --- CHANGELOG.md | 8 ++++++++ CMakeLists.txt | 2 +- Makefile | 35 ++++++++++++++++++++--------------- src/client/EnvVars.hpp | 2 +- src/header/TransferBench.hpp | 7 ++++++- 5 files changed, 36 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1d2abe..124761b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,14 @@ Documentation for TransferBench is available at [https://rocm.docs.amd.com/projects/TransferBench](https://rocm.docs.amd.com/projects/TransferBench). +## v1.66.01 +## Fixed +- Adding support for TheRock +- Fixing parsing issue when using NULL memory type +- Fixing CUAD compilation flags when enabling NIC/MPI +## Modified +- TransferBenchCuda must now be explicitly built with via 'make TransferBenchCuda' + ## v1.66.00 ### Added - Adding multi-node support diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cf8ba3..db7da3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ if (NOT CMAKE_TOOLCHAIN_FILE) message(STATUS "CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}") endif() -set(VERSION_STRING "1.66.00") +set(VERSION_STRING "1.66.01") project(TransferBench VERSION ${VERSION_STRING} LANGUAGES CXX) ## Load CMake modules diff --git a/Makefile b/Makefile index 8360d60..042ecc2 100644 --- a/Makefile +++ b/Makefile @@ -26,15 +26,21 @@ SINGLE_KERNEL ?= 0 # Default is the native GPU target GPU_TARGETS ?= native +EXE=TransferBench DEBUG ?= 0 +# Only perform this check if 'make clean' is not the target ifeq ($(filter clean,$(MAKECMDGOALS)),) - # Compile TransferBenchCuda if nvidia-smi returns successfully and nvcc detected - ifeq ("$(shell nvidia-smi > /dev/null 2>&1 && test -e $(NVCC) && echo found)", "found") - EXE=TransferBenchCuda - CXX=$(NVCC) + ifeq ($(MAKECMDGOALS),TransferBenchCuda) + # Check for nvcc + ifneq ($(shell test -e $(NVCC) && echo found), found) + $(error "Could not find $(NVCC). Please set CUDA_PATH appropriately") + else + $(info Compiling TransferBenchCuda using $(NVCC)) + endif + NVFLAGS = -x cu -lnuma -arch=native else - EXE=TransferBench + # Check for HIP compiler ifeq ("$(shell test -e $(HIPCC) && echo found)", "found") CXX=$(HIPCC) else ifeq ("$(shell test -e $(ROCM_PATH)/bin/hipcc && echo found)", "found") @@ -44,18 +50,17 @@ ifeq ($(filter clean,$(MAKECMDGOALS)),) $(error "Could not find $(HIPCC) or $(ROCM_PATH)/bin/hipcc. Check if the path is correct if you want to build $(EXE)") endif GPU_TARGETS_FLAGS = $(foreach target,$(GPU_TARGETS),"--offload-arch=$(target)") - endif - CXXFLAGS = -I$(ROCM_PATH)/include -I$(ROCM_PATH)/include/hip -I$(ROCM_PATH)/include/hsa - HIPLDFLAGS= -lnuma -L$(ROCM_PATH)/lib -lhsa-runtime64 -lamdhip64 - HIPFLAGS = -Wall -x hip -D__HIP_PLATFORM_AMD__ -D__HIPCC__ $(GPU_TARGETS_FLAGS) - ifneq ($(strip $(ROCM_DEVICE_LIB_PATH)),) - HIPFLAGS += --rocm-device-lib-path=$(ROCM_DEVICE_LIB_PATH) + CXXFLAGS = -I$(ROCM_PATH)/include -I$(ROCM_PATH)/include/hip -I$(ROCM_PATH)/include/hsa + HIPLDFLAGS= -lnuma -L$(ROCM_PATH)/lib -lhsa-runtime64 -lamdhip64 + HIPFLAGS = -Wall -x hip -D__HIP_PLATFORM_AMD__ -D__HIPCC__ $(GPU_TARGETS_FLAGS) + ifneq ($(strip $(ROCM_DEVICE_LIB_PATH)),) + HIPFLAGS += --rocm-device-lib-path=$(ROCM_DEVICE_LIB_PATH) + endif endif - NVFLAGS = -x cu -lnuma -arch=native ifeq ($(SINGLE_KERNEL), 1) - CXXFLAGS += -DSINGLE_KERNEL + COMMON_FLAGS += -DSINGLE_KERNEL endif ifeq ($(DEBUG), 0) @@ -79,7 +84,7 @@ ifeq ($(filter clean,$(MAKECMDGOALS)),) else ifeq ("$(shell echo '#include ' | $(CXX) -E - 2>/dev/null | grep -c 'infiniband/verbs.h')", "0") $(info infiniband/verbs.h not found) else - CXXFLAGS += -DNIC_EXEC_ENABLED + COMMON_FLAGS += -DNIC_EXEC_ENABLED LDFLAGS += -libverbs NIC_ENABLED = 1 endif @@ -101,7 +106,7 @@ ifeq ($(filter clean,$(MAKECMDGOALS)),) $(info Unable to find mpi.h at $(MPI_PATH)/include. Please specify appropriate MPI_PATH) else MPI_ENABLED = 1 - CXXFLAGS += -DMPI_COMM_ENABLED -I$(MPI_PATH)/include + COMMON_FLAGS += -DMPI_COMM_ENABLED -I$(MPI_PATH)/include LDFLAGS += -L/$(MPI_PATH)/lib -lmpi ifeq ($(DEBUG), 1) LDFLAGS += -lmpi_cxx diff --git a/src/client/EnvVars.hpp b/src/client/EnvVars.hpp index 8346e02..5f6bbe7 100644 --- a/src/client/EnvVars.hpp +++ b/src/client/EnvVars.hpp @@ -40,7 +40,7 @@ THE SOFTWARE. #include #include -#define CLIENT_VERSION "00" +#define CLIENT_VERSION "01" #include "TransferBench.hpp" using namespace TransferBench; diff --git a/src/header/TransferBench.hpp b/src/header/TransferBench.hpp index 3906930..a8dd6cb 100644 --- a/src/header/TransferBench.hpp +++ b/src/header/TransferBench.hpp @@ -1176,7 +1176,10 @@ namespace { } // Parse memory type - ERR_CHECK(CharToMemType(*ptr, w.memType)); + ErrResult err = CharToMemType(*ptr, w.memType); + if (err.errType != ERR_NONE) { + return {err.errType, "Error parsing token [%s]: %s\n", token.c_str(), err.errMsg.c_str()}; + } ptr++; // Skip memory type // Parse memory index @@ -1184,6 +1187,8 @@ namespace { ptr = ParseRange(ptr, -1, w.memIndices); if (!ptr) return {ERR_FATAL, "Unable to parse device index in memory token %s", token.c_str()}; memDevices.push_back(w); + } else { + break; } } return ERR_NONE;