From 6c149a3990d9e9e484fcf46730ebca408b76d873 Mon Sep 17 00:00:00 2001 From: Mohamad Kadou <81359286+MohamadKadou@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:29:06 +0200 Subject: [PATCH] Add files via upload --- Lab04/HPC-Lab-04.pdf | Bin 0 -> 78559 bytes Lab04/find_max | Bin 0 -> 17080 bytes Lab04/find_max.cpp | 39 ++++++++ Lab04/find_max_threads | Bin 0 -> 192440 bytes Lab04/find_max_threads.cpp | 61 ++++++++++++ Lab04/helgrind.out | 6 ++ Lab04/llvm.sh | 184 +++++++++++++++++++++++++++++++++++++ Lab04/start_triad_bench.sh | 8 ++ Lab04/triad_bench | Bin 0 -> 33728 bytes Lab04/triad_bench.cpp | 92 +++++++++++++++++++ 10 files changed, 390 insertions(+) create mode 100644 Lab04/HPC-Lab-04.pdf create mode 100644 Lab04/find_max create mode 100644 Lab04/find_max.cpp create mode 100644 Lab04/find_max_threads create mode 100644 Lab04/find_max_threads.cpp create mode 100644 Lab04/helgrind.out create mode 100644 Lab04/llvm.sh create mode 100644 Lab04/start_triad_bench.sh create mode 100644 Lab04/triad_bench create mode 100644 Lab04/triad_bench.cpp diff --git a/Lab04/HPC-Lab-04.pdf b/Lab04/HPC-Lab-04.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0dc215f4efcf07ea261683037a693ec162636548 GIT binary patch literal 78559 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
    h-bg$oxK`{L` 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 C6?W?Y literal 0 HcmV?d00001 diff --git a/Lab04/find_max b/Lab04/find_max new file mode 100644 index 0000000000000000000000000000000000000000..4599f63aa66f86ffa5066952655c5cc6368fee37 GIT binary patch literal 17080 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 literal 0 HcmV?d00001 diff --git a/Lab04/find_max.cpp b/Lab04/find_max.cpp new file mode 100644 index 0000000..8d7b109 --- /dev/null +++ b/Lab04/find_max.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +/** + * Function to find the maximum element in a vector using multiple threads. + * + * @param maxElement Reference to the variable where the maximum element will be stored. + * @param v The vector of integers to search. + */ +int findMaxElement(const std::vector& v) { + int maxElement = std::numeric_limits::min(); + // Find max element in the range + for (int i = 0; i < v.size(); ++i) { + if (v[i] > maxElement) { + maxElement = v[i]; + } + } + return maxElement; +} + +int main() { + // Create a vector with some random values + const int n = 10240; + std::vector v(n); + v[0] = 1; + for (int i = 1; i < n; ++i) { + v[i] = (75 * v[i - 1]) % 65537; + } + + // Find the maximum element in the vector + // This should be done in parallel using multiple threads + int maxElement = findMaxElement(v); + + std::cout << "Maximum element: " << maxElement << std::endl; + + return 0; +} \ No newline at end of file diff --git a/Lab04/find_max_threads b/Lab04/find_max_threads new file mode 100644 index 0000000000000000000000000000000000000000..b5711868734ae475a4c04e784f1d6142d241581d GIT binary patch literal 192440 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 literal 0 HcmV?d00001 diff --git a/Lab04/find_max_threads.cpp b/Lab04/find_max_threads.cpp new file mode 100644 index 0000000..d05aa8f --- /dev/null +++ b/Lab04/find_max_threads.cpp @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include + +/** + * Function to find the maximum element in a vector using multiple threads. + * + * @param maxElement Reference to the variable where the maximum element will be stored. + * @param v The vector of integers to search. + */ +void findMaxElement(const std::vector& v, const int start, const int end, int& result) { + int maxElement = std::numeric_limits::min(); + // Find max element in the range + for (int i = start; i < end; ++i) { + if (v[i] > maxElement) { + maxElement = v[i]; + } + } + result = maxElement; +} + +int main() { + // Create a vector with some random values + const int n = 10240; + const int threadCounter = 4; + std::vector threads; + std::vector res(4, 0); + std::vector v(n); + v[0] = 1; + for (int i = 1; i < n; ++i) { + v[i] = (75 * v[i - 1]) % 65537; + } + + for(int i = 0; i < threadCounter; i++) { + int start = n / threadCounter * i; + int end = n / threadCounter * (i + 1); + + threads.emplace_back(findMaxElement, std::ref(v), start, end, std::ref(res[i])); + } + + for(auto&t : threads) { + t.join(); + } + + int max = res[0]; + for(int i = 1; i < res.size(); i++) { + if (max < res[i]){ + max = res[i]; + } + } + + // Find the maximum element in the vector + // This should be done in parallel using multiple threads + //int maxElement = findMaxElement(v); + + std::cout << "Maximum element: " << max << std::endl; + + return 0; +} diff --git a/Lab04/helgrind.out b/Lab04/helgrind.out new file mode 100644 index 0000000..7402de1 --- /dev/null +++ b/Lab04/helgrind.out @@ -0,0 +1,6 @@ +==5173== Helgrind, a thread error detector +==5173== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al. +==5173== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info +==5173== Command: ./find_max_threads +==5173== Parent PID: 5132 +==5173== diff --git a/Lab04/llvm.sh b/Lab04/llvm.sh new file mode 100644 index 0000000..c2e26ec --- /dev/null +++ b/Lab04/llvm.sh @@ -0,0 +1,184 @@ +#!/bin/bash +################################################################################ +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +################################################################################ +# +# This script will install the llvm toolchain on the different +# Debian and Ubuntu versions + +set -eux + +usage() { + set +x + echo "Usage: $0 [llvm_major_version] [all] [OPTIONS]" 1>&2 + echo -e "all\t\t\tInstall all packages." 1>&2 + echo -e "-n=code_name\t\tSpecifies the distro codename, for example bionic" 1>&2 + echo -e "-h\t\t\tPrints this help." 1>&2 + echo -e "-m=repo_base_url\tSpecifies the base URL from which to download." 1>&2 + exit 1; +} + +CURRENT_LLVM_STABLE=18 +BASE_URL="http://apt.llvm.org" + +# Check for required tools +needed_binaries=(lsb_release wget add-apt-repository gpg) +missing_binaries=() +for binary in "${needed_binaries[@]}"; do + if ! which $binary &>/dev/null ; then + missing_binaries+=($binary) + fi +done +if [[ ${#missing_binaries[@]} -gt 0 ]] ; then + echo "You are missing some tools this script requires: ${missing_binaries[@]}" + echo "(hint: apt install lsb-release wget software-properties-common gnupg)" + exit 4 +fi + +# Set default values for commandline arguments +# We default to the current stable branch of LLVM +LLVM_VERSION=$CURRENT_LLVM_STABLE +ALL=0 +DISTRO=$(lsb_release -is) +VERSION=$(lsb_release -sr) +UBUNTU_CODENAME="" +CODENAME_FROM_ARGUMENTS="" +# Obtain VERSION_CODENAME and UBUNTU_CODENAME (for Ubuntu and its derivatives) +source /etc/os-release +DISTRO=${DISTRO,,} +case ${DISTRO} in + debian) + # Debian Trixie has a workaround because of + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1038383 + if [[ "${VERSION}" == "unstable" ]] || [[ "${VERSION}" == "testing" ]] || [[ "${VERSION_CODENAME}" == "trixie" ]]; then + CODENAME=unstable + LINKNAME= + else + # "stable" Debian release + CODENAME=${VERSION_CODENAME} + LINKNAME=-${CODENAME} + fi + ;; + *) + # ubuntu and its derivatives + if [[ -n "${UBUNTU_CODENAME}" ]]; then + CODENAME=${UBUNTU_CODENAME} + if [[ -n "${CODENAME}" ]]; then + LINKNAME=-${CODENAME} + fi + fi + ;; +esac + +# read optional command line arguments +if [ "$#" -ge 1 ] && [ "${1::1}" != "-" ]; then + if [ "$1" != "all" ]; then + LLVM_VERSION=$1 + else + # special case for ./llvm.sh all + ALL=1 + fi + OPTIND=2 + if [ "$#" -ge 2 ]; then + if [ "$2" == "all" ]; then + # Install all packages + ALL=1 + OPTIND=3 + fi + fi +fi + +while getopts ":hm:n:" arg; do + case $arg in + h) + usage + ;; + m) + BASE_URL=${OPTARG} + ;; + n) + CODENAME=${OPTARG} + if [[ "${CODENAME}" == "unstable" ]]; then + # link name does not apply to unstable repository + LINKNAME= + else + LINKNAME=-${CODENAME} + fi + CODENAME_FROM_ARGUMENTS="true" + ;; + esac +done + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root!" + exit 1 +fi + +declare -A LLVM_VERSION_PATTERNS +LLVM_VERSION_PATTERNS[9]="-9" +LLVM_VERSION_PATTERNS[10]="-10" +LLVM_VERSION_PATTERNS[11]="-11" +LLVM_VERSION_PATTERNS[12]="-12" +LLVM_VERSION_PATTERNS[13]="-13" +LLVM_VERSION_PATTERNS[14]="-14" +LLVM_VERSION_PATTERNS[15]="-15" +LLVM_VERSION_PATTERNS[16]="-16" +LLVM_VERSION_PATTERNS[17]="-17" +LLVM_VERSION_PATTERNS[18]="-18" +LLVM_VERSION_PATTERNS[19]="-19" +LLVM_VERSION_PATTERNS[20]="" + +if [ ! ${LLVM_VERSION_PATTERNS[$LLVM_VERSION]+_} ]; then + echo "This script does not support LLVM version $LLVM_VERSION" + exit 3 +fi + +LLVM_VERSION_STRING=${LLVM_VERSION_PATTERNS[$LLVM_VERSION]} + +# join the repository name +if [[ -n "${CODENAME}" ]]; then + REPO_NAME="deb ${BASE_URL}/${CODENAME}/ llvm-toolchain${LINKNAME}${LLVM_VERSION_STRING} main" + + # check if the repository exists for the distro and version + if ! wget -q --method=HEAD ${BASE_URL}/${CODENAME} &> /dev/null; then + if [[ -n "${CODENAME_FROM_ARGUMENTS}" ]]; then + echo "Specified codename '${CODENAME}' is not supported by this script." + else + echo "Distribution '${DISTRO}' in version '${VERSION}' is not supported by this script." + fi + exit 2 + fi +fi + + +# install everything + +if [[ ! -f /etc/apt/trusted.gpg.d/apt.llvm.org.asc ]]; then + # download GPG key once + wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc +fi + +if [[ -z "`apt-key list 2> /dev/null | grep -i llvm`" ]]; then + # Delete the key in the old format + apt-key del AF4F7421 +fi +if [[ "${VERSION_CODENAME}" == "bookworm" ]]; then + # add it twice to workaround: + # https://github.com/llvm/llvm-project/issues/62475 + add-apt-repository -y "${REPO_NAME}" +fi + +add-apt-repository -y "${REPO_NAME}" +apt-get update +PKG="clang-$LLVM_VERSION lldb-$LLVM_VERSION lld-$LLVM_VERSION clangd-$LLVM_VERSION" +if [[ $ALL -eq 1 ]]; then + # same as in test-install.sh + # No worries if we have dups + PKG="$PKG clang-tidy-$LLVM_VERSION clang-format-$LLVM_VERSION clang-tools-$LLVM_VERSION llvm-$LLVM_VERSION-dev lld-$LLVM_VERSION lldb-$LLVM_VERSION llvm-$LLVM_VERSION-tools libomp-$LLVM_VERSION-dev libc++-$LLVM_VERSION-dev libc++abi-$LLVM_VERSION-dev libclang-common-$LLVM_VERSION-dev libclang-$LLVM_VERSION-dev libclang-cpp$LLVM_VERSION-dev libunwind-$LLVM_VERSION-dev" + if test $LLVM_VERSION -gt 14; then + PKG="$PKG libclang-rt-$LLVM_VERSION-dev libpolly-$LLVM_VERSION-dev" + fi +fi +apt-get install -y $PKG diff --git a/Lab04/start_triad_bench.sh b/Lab04/start_triad_bench.sh new file mode 100644 index 0000000..57e82ec --- /dev/null +++ b/Lab04/start_triad_bench.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +#SBATCH --job-name=G5_triad_bench +#SBATCH --nodes=4 +#SBATCH --ntasks=1 + +# Your script goes here +./triad_bench \ No newline at end of file diff --git a/Lab04/triad_bench b/Lab04/triad_bench new file mode 100644 index 0000000000000000000000000000000000000000..0a118affba8272d43257ac507c985cb6acb6f8be GIT binary patch literal 33728 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 +#include +#include +#include +#include +#include +#include + +std::vector B(1000000, 1); +std::vector C(1000000, 2); +std::vector D(1000000, 3); + +static double ownMethod(int n) { + std::vector A(n, 0); + std::chrono::duration sumTime; + for (int i = 0; i < 20; ++i) { + auto startTime = std::chrono::system_clock::now(); + for (int j = 0; j < n; ++j) { + A[j] = B[j] + C[j] * D[j]; + } + // prevent the compiler from optimizing everything away + volatile double dummy = A[0]; + auto endTime = std::chrono::system_clock::now(); + sumTime += endTime - startTime; + } + double averageTime = sumTime.count() / 20; + return averageTime; +} + +static std::vector ownMethod2(int n) { + std::vector A(n, 0); + std::vector results(2); + std::chrono::duration sumTime; + for (int i = 0; i < 20; ++i) { + auto startTime = std::chrono::system_clock::now(); + for (int j = 0; j < n; ++j) { + A[j] = B[j] + C[j] * D[j]; + } + // prevent the compiler from optimizing everything away + volatile double dummy = A[0]; + auto endTime = std::chrono::system_clock::now(); + sumTime += endTime - startTime; + } + double averageTime = sumTime.count() / 20; + double flops = (2.0 * n) / (averageTime / 1000); + results[0] = std::to_string(averageTime); + results[1] = std::to_string(flops); + return results; +} + +static void workerThread(int start, int end, int threadCount) { + std::vector> outcomes; + for (int i = start; i < end; i += 10) { + outcomes.push_back(ownMethod2(i)); + } + std::stringstream fileName; + fileName << "outcomes-" << start << "-" << end << ".csv"; + std::ofstream MyFile(fileName.str()); + for (int i = 0; i < outcomes.size(); i++) { + MyFile << "(" << outcomes[i][0] << "," << outcomes[i][1] << "," << threadCount << ")"; + } + MyFile.close(); +} + +int main() { + int range_start = 100; + int range_end = 1'000'000; + int countThreads[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64}; + // int num_threads = std::thread::hardware_concurrency(); // use system's core + // count + for (int j = 0; j < (sizeof(countThreads) / sizeof(int)); j++) { + int total = range_end - range_start; + int chunk_size = total / countThreads[j]; + + std::vector threads; + + for (int i = 1; i < countThreads[j]; ++i) { + int start = range_start + i * chunk_size; + int end = (i == countThreads[j] - 1) ? range_end : start + chunk_size; + + threads.emplace_back(workerThread, start, end, countThreads[j]); + } + workerThread(range_start, range_end, countThreads[j]); + + for (auto& t : threads) + t.join(); + + std::cout << "All threads finished.\n"; + } + + return 0; +} \ No newline at end of file