From 3efef5c2ba26d3309a65f1f10bc18e90e07016eb Mon Sep 17 00:00:00 2001 From: Nicholas Sielicki Date: Mon, 12 Aug 2024 12:37:04 -0700 Subject: [PATCH] feat(test): parse as c++ source All included headers are fully safe to be parsed as C++, so these unit tests can now use C++. Rename them to `.cc' files and use a few c++ keywords to enforce that the compiler is actually treating them as such. Actual C++ cleanups to follow later, hopefully alongside a unit test framework like gtest or catch2. Signed-off-by: Nicholas Sielicki --- tests/functional/Makefile.am | 9 +++++---- .../{nccl_connection.c => nccl_connection.cc} | 2 +- ...ssage_transfer.c => nccl_message_transfer.cc} | 8 +++++--- tests/functional/{ring.c => ring.cc} | 2 +- .../{test-common.h => test-common.hpp} | 4 ++++ tests/unit/Makefile.am | 16 ++++++++-------- tests/unit/{deque.c => deque.cc} | 2 +- tests/unit/{freelist.c => freelist.cc} | 2 +- tests/unit/{idpool.c => idpool.cc} | 2 +- tests/unit/{mr.c => mr.cc} | 2 +- tests/unit/{msgbuff.c => msgbuff.cc} | 2 +- tests/unit/{scheduler.c => scheduler.cc} | 2 +- ...tuner_decisions.c => show_tuner_decisions.cc} | 0 tests/unit/{test-common.h => test-common.hpp} | 12 +++++++++--- 14 files changed, 39 insertions(+), 26 deletions(-) rename tests/functional/{nccl_connection.c => nccl_connection.cc} (99%) rename tests/functional/{nccl_message_transfer.c => nccl_message_transfer.cc} (98%) rename tests/functional/{ring.c => ring.cc} (99%) rename tests/functional/{test-common.h => test-common.hpp} (98%) rename tests/unit/{deque.c => deque.cc} (99%) rename tests/unit/{freelist.c => freelist.cc} (99%) rename tests/unit/{idpool.c => idpool.cc} (99%) rename tests/unit/{mr.c => mr.cc} (99%) rename tests/unit/{msgbuff.c => msgbuff.cc} (99%) rename tests/unit/{scheduler.c => scheduler.cc} (99%) rename tests/unit/{show_tuner_decisions.c => show_tuner_decisions.cc} (100%) rename tests/unit/{test-common.h => test-common.hpp} (80%) diff --git a/tests/functional/Makefile.am b/tests/functional/Makefile.am index 7238e6c35..7a4c0986d 100644 --- a/tests/functional/Makefile.am +++ b/tests/functional/Makefile.am @@ -12,13 +12,14 @@ AM_CPPFLAGS += $(MPI_CPPFLAGS) $(CUDA_CPPFLAGS) AM_LDFLAGS = $(MPI_LDFLAGS) $(CUDA_LDFLAGS) LDADD = $(top_builddir)/src/libinternal_net_plugin.la $(MPI_LIBS) $(CUDA_LIBS) CC = $(MPICC) +CXX = $(MPICXX) if ENABLE_FUNC_TESTS -noinst_HEADERS = test-common.h +noinst_HEADERS = test-common.hpp bin_PROGRAMS = nccl_connection nccl_message_transfer ring -nccl_connection_SOURCES = nccl_connection.c -nccl_message_transfer_SOURCES = nccl_message_transfer.c -ring_SOURCES = ring.c +nccl_connection_SOURCES = nccl_connection.cc +nccl_message_transfer_SOURCES = nccl_message_transfer.cc +ring_SOURCES = ring.cc endif diff --git a/tests/functional/nccl_connection.c b/tests/functional/nccl_connection.cc similarity index 99% rename from tests/functional/nccl_connection.c rename to tests/functional/nccl_connection.cc index 3874ec975..15b713612 100644 --- a/tests/functional/nccl_connection.c +++ b/tests/functional/nccl_connection.cc @@ -8,7 +8,7 @@ #include "config.h" -#include "test-common.h" +#include "test-common.hpp" int main(int argc, char* argv[]) { diff --git a/tests/functional/nccl_message_transfer.c b/tests/functional/nccl_message_transfer.cc similarity index 98% rename from tests/functional/nccl_message_transfer.c rename to tests/functional/nccl_message_transfer.cc index 3b2421ba0..9849bc56f 100644 --- a/tests/functional/nccl_message_transfer.c +++ b/tests/functional/nccl_message_transfer.cc @@ -9,14 +9,16 @@ #include "config.h" -#include "test-common.h" +#include "test-common.hpp" #define PROC_NAME_IDX(i) (i * MPI_MAX_PROCESSOR_NAME) int main(int argc, char* argv[]) { ncclResult_t res = ncclSuccess; - int rank, proc_name_len, num_ranks = 0, local_rank = 0, peer_rank = 0; + int rank, proc_name_len, num_ranks = 0, peer_rank = 0; + /* Unused when trace prints are not enabled. */ + [[maybe_unused]] int local_rank = 0; int buffer_type = NCCL_PTR_HOST; test_nccl_properties_t props = {}; @@ -390,7 +392,7 @@ int main(int argc, char* argv[]) MPI_Finalize(); NCCL_OFI_INFO(NCCL_NET, "Test completed successfully for rank %d", rank); -exit:; +exit: ncclResult_t close_res = ncclSuccess; diff --git a/tests/functional/ring.c b/tests/functional/ring.cc similarity index 99% rename from tests/functional/ring.c rename to tests/functional/ring.cc index 77aac75a6..abc4ccb48 100644 --- a/tests/functional/ring.c +++ b/tests/functional/ring.cc @@ -4,7 +4,7 @@ #include "config.h" -#include "test-common.h" +#include "test-common.hpp" #define PROC_NAME_IDX(i) (i * MPI_MAX_PROCESSOR_NAME) diff --git a/tests/functional/test-common.h b/tests/functional/test-common.hpp similarity index 98% rename from tests/functional/test-common.h rename to tests/functional/test-common.hpp index e83017423..51118c1cc 100644 --- a/tests/functional/test-common.h +++ b/tests/functional/test-common.hpp @@ -23,6 +23,10 @@ #include "nccl_ofi_math.h" #include "nccl_ofi_param.h" + +template +constexpr T PROC_NAME_IDX(T i) { return i * MPI_MAX_PROCESSOR_NAME; }; + #define STR2(v) #v #define STR(v) STR2(v) diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index cfa47ffe9..7d97a94eb 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -9,7 +9,7 @@ AM_CPPFLAGS = -I$(top_srcdir)/include AM_CPPFLAGS += -isystem $(abs_top_srcdir)/3rd-party/nccl/$(DEVICE_INTERFACE)/include AM_CPPFLAGS += -isystem $(abs_top_srcdir)/3rd-party/uthash/include LDADD = $(top_builddir)/src/libinternal_net_plugin.la -noinst_HEADERS = test-common.h +noinst_HEADERS = test-common.hpp noinst_PROGRAMS = \ deque \ @@ -25,7 +25,7 @@ if WANT_PLATFORM_AWS AM_CPPFLAGS += $(CUDA_CPPFLAGS) LDADD += $(CUDA_LIBS) noinst_PROGRAMS += show_tuner_decisions - show_tuner_decisions_SOURCES = show_tuner_decisions.c + show_tuner_decisions_SOURCES = show_tuner_decisions.cc show_tuner_decisions_LDADD = $(top_builddir)/src/libinternal_tuner_plugin.la noinst_PROGRAMS += region_based_tuner region_based_tuner_SOURCES = region_based_tuner.c @@ -33,12 +33,12 @@ if WANT_PLATFORM_AWS endif endif -idpool_SOURCES = idpool.c -deque_SOURCES = deque.c -freelist_SOURCES = freelist.c -msgbuff_SOURCES = msgbuff.c -scheduler_SOURCES = scheduler.c -mr_SOURCES = mr.c +idpool_SOURCES = idpool.cc +deque_SOURCES = deque.cc +freelist_SOURCES = freelist.cc +msgbuff_SOURCES = msgbuff.cc +scheduler_SOURCES = scheduler.cc +mr_SOURCES = mr.cc TESTS = $(noinst_PROGRAMS) endif diff --git a/tests/unit/deque.c b/tests/unit/deque.cc similarity index 99% rename from tests/unit/deque.c rename to tests/unit/deque.cc index be356cfcb..c562c728f 100644 --- a/tests/unit/deque.c +++ b/tests/unit/deque.cc @@ -6,7 +6,7 @@ #include -#include "test-common.h" +#include "test-common.hpp" #include "nccl_ofi_deque.h" #define test_get_front(deque, expected) \ diff --git a/tests/unit/freelist.c b/tests/unit/freelist.cc similarity index 99% rename from tests/unit/freelist.c rename to tests/unit/freelist.cc index aff7a9536..74c3e846b 100644 --- a/tests/unit/freelist.c +++ b/tests/unit/freelist.cc @@ -6,7 +6,7 @@ #include -#include "test-common.h" +#include "test-common.hpp" #include "nccl_ofi_freelist.h" void *simple_base; diff --git a/tests/unit/idpool.c b/tests/unit/idpool.cc similarity index 99% rename from tests/unit/idpool.c rename to tests/unit/idpool.cc index 770e98a2c..48076eeb3 100644 --- a/tests/unit/idpool.c +++ b/tests/unit/idpool.cc @@ -6,7 +6,7 @@ #include -#include "test-common.h" +#include "test-common.hpp" #include "nccl_ofi_idpool.h" #include "nccl_ofi_math.h" diff --git a/tests/unit/mr.c b/tests/unit/mr.cc similarity index 99% rename from tests/unit/mr.c rename to tests/unit/mr.cc index 1a9b51558..a9f7120ac 100644 --- a/tests/unit/mr.c +++ b/tests/unit/mr.cc @@ -6,7 +6,7 @@ #include -#include "test-common.h" +#include "test-common.hpp" #include "nccl_ofi_mr.h" static inline bool test_lookup_impl(nccl_ofi_mr_cache_t *cache, void *addr, size_t size, diff --git a/tests/unit/msgbuff.c b/tests/unit/msgbuff.cc similarity index 99% rename from tests/unit/msgbuff.c rename to tests/unit/msgbuff.cc index f697ec8ed..0571be812 100644 --- a/tests/unit/msgbuff.c +++ b/tests/unit/msgbuff.cc @@ -8,7 +8,7 @@ #include "nccl_ofi_msgbuff.h" -#include "test-common.h" +#include "test-common.hpp" int main(int argc, char *argv[]) { diff --git a/tests/unit/scheduler.c b/tests/unit/scheduler.cc similarity index 99% rename from tests/unit/scheduler.c rename to tests/unit/scheduler.cc index 7e57d7eb1..8e8bc8c77 100644 --- a/tests/unit/scheduler.c +++ b/tests/unit/scheduler.cc @@ -10,8 +10,8 @@ #include #include "nccl_ofi_log.h" +#include "test-common.hpp" #include "nccl_ofi_scheduler.h" -#include "test-common.h" static inline int verify_xfer_info(nccl_net_ofi_xfer_info_t *xfer, nccl_net_ofi_xfer_info_t *ref_xfer, int xfer_id) { diff --git a/tests/unit/show_tuner_decisions.c b/tests/unit/show_tuner_decisions.cc similarity index 100% rename from tests/unit/show_tuner_decisions.c rename to tests/unit/show_tuner_decisions.cc diff --git a/tests/unit/test-common.h b/tests/unit/test-common.hpp similarity index 80% rename from tests/unit/test-common.h rename to tests/unit/test-common.hpp index 70b97e329..adb8762dd 100644 --- a/tests/unit/test-common.h +++ b/tests/unit/test-common.hpp @@ -5,14 +5,18 @@ #ifndef TEST_COMMON_H_ #define TEST_COMMON_H_ +#include "config.h" + #include #include #include "nccl_ofi.h" #include "nccl_ofi_log.h" -static inline void logger(ncclDebugLogLevel level, unsigned long flags, const char *filefunc, - int line, const char *fmt, ...) +namespace { + +void logger(ncclDebugLogLevel level, unsigned long flags, const char *filefunc, + int line, char const *const fmt, ...) { va_list vargs; @@ -24,7 +28,7 @@ static inline void logger(ncclDebugLogLevel level, unsigned long flags, const ch printf("INFO: Function: %s Line: %d: ", filefunc, line); break; case NCCL_LOG_TRACE: -#if OFI_NCCL_TRACE +#if defined(OFI_NCCL_TRACE) && OFI_NCCL_TRACE printf("TRACE: Function: %s Line: %d: ", filefunc, line); break; #else @@ -46,4 +50,6 @@ static inline void logger(ncclDebugLogLevel level, unsigned long flags, const ch #pragma GCC diagnostic pop } +} + #endif // End TEST_COMMON_H_