From ac53a58a707f138c3e795acd7a2a1504eaab6449 Mon Sep 17 00:00:00 2001 From: Christos Choutouridis <hoo2@hoo2.net> Date: Fri, 21 Feb 2025 19:16:21 +0200 Subject: [PATCH] HW3: RC4 - Add a qsort for reference --- homework_3/Makefile | 10 ++++++++++ homework_3/src/bitonicsort.hpp | 10 +++++++++- homework_3/src/config.h | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/homework_3/Makefile b/homework_3/Makefile index 75914d9..caae5a1 100644 --- a/homework_3/Makefile +++ b/homework_3/Makefile @@ -187,6 +187,16 @@ bitonic_v2deb: $(BUILD_DIR)/$(TARGET) cp $(BUILD_DIR)/$(TARGET) $(OUTPUT_DIR)/$(TARGET) +bitonic_ser: CC := nvcc -x cu +bitonic_ser: CXX := nvcc -x cu +bitonic_ser: LINKER := nvcc +bitonic_ser: CFLAGS := $(REL_CFLAGS) -DCODE_VERSION=SERIAL +bitonic_ser: CXXFLAGS := $(REL_CXXFLAGS) -DCODE_VERSION=SERIAL +bitonic_ser: OUTPUT_DIR := $(OUTPUT_DIR)/serial +bitonic_ser: $(BUILD_DIR)/$(TARGET) + @mkdir -p $(OUTPUT_DIR) + cp $(BUILD_DIR)/$(TARGET) $(OUTPUT_DIR)/$(TARGET) + bitonic_v0: CC := nvcc -x cu bitonic_v0: CXX := nvcc -x cu diff --git a/homework_3/src/bitonicsort.hpp b/homework_3/src/bitonicsort.hpp index 98c8904..134beaa 100644 --- a/homework_3/src/bitonicsort.hpp +++ b/homework_3/src/bitonicsort.hpp @@ -16,6 +16,7 @@ #include <cstdint> #include <utility> #include <stdexcept> +#include <algorithm> #include "utils.hpp" @@ -117,8 +118,15 @@ __device__ void exchange(ValueT* data, threadId_t tid, threadId_t partner, bool data[partner] = temp; } } +#if CODE_VERSION == SERIAL -#if CODE_VERSION == V0 +template <typename DataT> +void bitonicSort(DataT& data) { + std::sort(data.begin(), data.end()); +} + + +#elif CODE_VERSION == V0 /*! * This is the body of each thread. This function compare and exchange data diff --git a/homework_3/src/config.h b/homework_3/src/config.h index 6dd5627..017d11d 100644 --- a/homework_3/src/config.h +++ b/homework_3/src/config.h @@ -28,6 +28,7 @@ static constexpr char version[] = "0.4"; #define V0 0 #define V1 1 #define V2 2 +#define SERIAL 's' // Fail-safe version selection #if !defined CODE_VERSION