diff --git a/MainMemory/Makefile b/Makefile similarity index 100% rename from MainMemory/Makefile rename to Makefile diff --git a/MemoryHierarchy/Makefile b/MemoryHierarchy/Makefile deleted file mode 100644 index dee5aed..0000000 --- a/MemoryHierarchy/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -#CONFIGURE TOOL CHAIN -CC = gcc -OPENMP = -fopenmp -#CFLAGS = -O3 -xHost -qopt-zmm-usage=high -std=c99 $(OPENMP) -CFLAGS = -O3 -std=c99 $(OPENMP) -LFLAGS = $(OPENMP) -DEFINES = -D_GNU_SOURCE -#DEFINES += -DVERBOSE -#DEFINES += -DLIKWID_PERFMON -DEFINES += -DNTIMES=5 -DEFINES += -DARRAY_ALIGNMENT=64 - -#CONFIGURE BUILD SYSTEM -TARGET = striad -BUILD_DIR = ./build -SRC_DIR = ./src -INCLUDES += -I./src/ - -#DO NOT EDIT BELOW -VPATH = $(SRC_DIR) -ASM = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.s,$(wildcard $(SRC_DIR)/*.c)) -OBJ = $(patsubst $(SRC_DIR)/%.c, $(BUILD_DIR)/%.o,$(wildcard $(SRC_DIR)/*.c)) -CPPFLAGS := $(CPPFLAGS) $(DEFINES) $(INCLUDES) - -${TARGET}: $(BUILD_DIR) $(OBJ) - ${CC} ${LFLAGS} -o $(TARGET) $(OBJ) $(LIBS) - -asm: $(BUILD_DIR) $(ASM) - -$(BUILD_DIR)/%.o: %.c - $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ - -$(BUILD_DIR)/%.s: %.c - $(CC) -S $(CPPFLAGS) $(CFLAGS) $< -o $@ - -$(BUILD_DIR): - @mkdir $(BUILD_DIR) - -.PHONY: clean - -clean: - @echo "===> CLEAN" - @rm -rf $(BUILD_DIR) - @rm -f $(TARGET) - diff --git a/MemoryHierarchy/bench.pl b/MemoryHierarchy/bench.pl deleted file mode 100755 index d1e91a4..0000000 --- a/MemoryHierarchy/bench.pl +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use utf8; - -if ( $#ARGV < 2 ){ - print "Usage: ./bench.pl \n"; - exit; -} - -my $numCores = $ARGV[0]; -my $type = 0; -my $SMT = $ARGV[2] ? $ARGV[2] : 2; -my $N = 100; - - -if ( $ARGV[1] eq 'seq' ){ - $type = 0; -} elsif ( $ARGV[1] eq 'tp' ){ - $type = 1; -} elsif ( $ARGV[1] eq 'ws' ){ - $type = 2; -} - -print("# striad $numCores $SMT $ARGV[1]\n"); -while ( $N < 8000000 ) { - my $result; - my $performance = '0.00'; - - while ( $performance eq '0.00' ){ - $result = `likwid-pin -c E:S0:$numCores:1:$SMT -q ./striad $type $N`; - $result =~ /([0-9.]+) ([0-9.]+)/; - $performance = $2; - } - - print $result; - $N = int($N * 1.2); -} diff --git a/MemoryHierarchy/bench.plot b/MemoryHierarchy/bench.plot deleted file mode 100644 index 08b5ba0..0000000 --- a/MemoryHierarchy/bench.plot +++ /dev/null @@ -1,15 +0,0 @@ -set terminal png size 1024,768 enhanced font ,12 -set output 'striad.png' -set xlabel 'Size [kB]' -set xrange [100:] -set yrange [0:] -set ylabel 'Performance [MFLOP/s]' -cpuname = system("likwid-topology | grep 'CPU name' | cut -d ':' -f2 | sort -u | xargs") -numcores = system("grep 'striad' striad.dat | cut -d ' ' -f 3") -smt = system("grep 'striad' striad.dat | cut -d ' ' -f 4") -type = system("grep 'striad' striad.dat | cut -d ' ' -f 5") -set title sprintf("Benchmark of stream triad A[i] = B[i] + C[i] * D[i]\nType '%s', Threads %s, SMT %s, CPU %s", type, numcores, smt, cpuname) -set logscale x - - -plot 'striad.dat' u 1:2 w linespoints title 'striad' diff --git a/MemoryHierarchy/bench.py b/MemoryHierarchy/bench.py deleted file mode 100755 index 48ec4c3..0000000 --- a/MemoryHierarchy/bench.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python3 - -# ======================================================================================= -# -# Author: Thomas Gruber (tg), thomas.gruber@googlemail.com -# Copyright (c) 2019 RRZE, University Erlangen-Nuremberg -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# -# ======================================================================================= - -import sys, subprocess, re - -default_regex = "([0-9.]+) ([0-9.]+)" -default_smt = 2 -striad_types = {"seq" : 0, - "tp" : 1, - "ws" : 2 - } -start_N = 100 -max_N = 8000000 -scale_N = 1.2 - -if len(sys.argv) < 3 or len(sys.argv) > 4: - print("Usage: {} ()".format(sys.argv[0])) - print("Default value is {}".format(default_smt)) - sys.exit(1) - -numcores = int(sys.argv[1]) -striad_type = sys.argv[2] -striad_t = 0 -if striad_type in striad_types: - striad_t = striad_types.get(striad_type) -else: - print("Invalid type for striad. Available types: {}".format(", ".join(striad_types.keys()))) - sys.exit(1) -smt = int(sys.argv[3]) if len(sys.argv) == 4 else default_smt - -print("# striad {} {} {}".format(numcores, smt, striad_type)) - -N = start_N -while N < max_N: - performance = 0 - result = None - runcmd = "likwid-pin -c E:S0:{}:1:{} -q ./striad {} {}".format(numcores, smt, - striad_t, N) - while performance == 0: - p = subprocess.Popen(runcmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - shell=True) - p.wait() - if p.returncode == 0: - result = p.stdout.read().decode('utf-8').strip() - m = re.search(default_regex, result) - if m: - performance = float(m.group(2)) - else: - print("Execution failed: {}".format(runcmd)) - break - print(result) - sys.stdout.flush() - N = int(N * scale_N) diff --git a/MemoryHierarchy/src/affinity.c b/MemoryHierarchy/src/affinity.c deleted file mode 100644 index cc361c2..0000000 --- a/MemoryHierarchy/src/affinity.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#ifdef __linux__ -#ifdef _OPENMP -#include -#include -#include -#include -#include -#include -#include - -#define MAX_NUM_THREADS 128 -#define gettid() syscall(SYS_gettid) - -static int -getProcessorID(cpu_set_t* cpu_set) -{ - int processorId; - - for ( processorId = 0; processorId < MAX_NUM_THREADS; processorId++ ) - { - if ( CPU_ISSET(processorId,cpu_set) ) - { - break; - } - } - return processorId; -} - - -int -affinity_getProcessorId() -{ - cpu_set_t cpu_set; - CPU_ZERO(&cpu_set); - sched_getaffinity(gettid(),sizeof(cpu_set_t), &cpu_set); - - return getProcessorID(&cpu_set); -} - -void -affinity_pinThread(int processorId) -{ - cpu_set_t cpuset; - pthread_t thread; - - thread = pthread_self(); - CPU_ZERO(&cpuset); - CPU_SET(processorId, &cpuset); - pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); -} - -void -affinity_pinProcess(int processorId) -{ - cpu_set_t cpuset; - - CPU_ZERO(&cpuset); - CPU_SET(processorId, &cpuset); - sched_setaffinity(0, sizeof(cpu_set_t), &cpuset); -} -#endif /*__linux__*/ -#endif /*_OPENMP*/ diff --git a/MemoryHierarchy/src/affinity.h b/MemoryHierarchy/src/affinity.h deleted file mode 100644 index 9c7eecf..0000000 --- a/MemoryHierarchy/src/affinity.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#ifndef AFFINITY_H -#define AFFINITY_H - -extern int affinity_getProcessorId(); -extern void affinity_pinProcess(int); -extern void affinity_pinThread(int); - -#endif /*AFFINITY_H*/ - diff --git a/MemoryHierarchy/src/allocate.c b/MemoryHierarchy/src/allocate.c deleted file mode 100644 index eaaa5e3..0000000 --- a/MemoryHierarchy/src/allocate.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#include -#include -#include - -void* allocate (int alignment, size_t bytesize) -{ - int errorCode; - void* ptr; - - errorCode = posix_memalign(&ptr, alignment, bytesize); - - if (errorCode) { - if (errorCode == EINVAL) { - fprintf(stderr, - "Error: Alignment parameter is not a power of two\n"); - exit(EXIT_FAILURE); - } - if (errorCode == ENOMEM) { - fprintf(stderr, - "Error: Insufficient memory to fulfill the request\n"); - exit(EXIT_FAILURE); - } - } - - if (ptr == NULL) { - fprintf(stderr, "Error: posix_memalign failed!\n"); - exit(EXIT_FAILURE); - } - - return ptr; -} diff --git a/MemoryHierarchy/src/allocate.h b/MemoryHierarchy/src/allocate.h deleted file mode 100644 index a6ee561..0000000 --- a/MemoryHierarchy/src/allocate.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#ifndef __ALLOCATE_H_ -#define __ALLOCATE_H_ - -extern void* allocate (int alignment, size_t bytesize); - -#endif diff --git a/MemoryHierarchy/src/likwid_markers.h b/MemoryHierarchy/src/likwid_markers.h deleted file mode 100644 index 76351d2..0000000 --- a/MemoryHierarchy/src/likwid_markers.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#ifndef LIKWID_MARKERS_H -#define LIKWID_MARKERS_H - -#ifdef LIKWID_PERFMON -#include -#else -#define LIKWID_MARKER_INIT -#define LIKWID_MARKER_THREADINIT -#define LIKWID_MARKER_SWITCH -#define LIKWID_MARKER_REGISTER(regionTag) -#define LIKWID_MARKER_START(regionTag) -#define LIKWID_MARKER_STOP(regionTag) -#define LIKWID_MARKER_CLOSE -#define LIKWID_MARKER_GET(regionTag, nevents, events, time, count) -#endif - -#endif /*LIKWID_MARKERS_H*/ diff --git a/MemoryHierarchy/src/main.c b/MemoryHierarchy/src/main.c deleted file mode 100644 index b634e68..0000000 --- a/MemoryHierarchy/src/main.c +++ /dev/null @@ -1,216 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#include -#include -#include -#include -#include - -#ifdef _OPENMP -#include -#endif - -#include -#include -#include -#include - -#define HLINE "----------------------------------------------------------------------------\n" - - -#ifndef MIN -#define MIN(x,y) ((x)<(y)?(x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x)>(y)?(x):(y)) -#endif -#ifndef ABS -#define ABS(a) ((a) >= 0 ? (a) : -(a)) -#endif - -extern double striad_seq(double*, double*, double*, double*, int, int); -extern double striad_tp(double*, double*, double*, double*, int, int); -extern double striad_ws(double*, double*, double*, double*, int, int); - -typedef double (*testFunc)(double*, double*, double*, double*, int, int); - -int main (int argc, char** argv) -{ - size_t bytesPerWord = sizeof(double); - size_t N; - int type; - size_t iter = 1; - size_t scale = 1; - double *a, *b, *c, *d; - double E, S; - double avgtime, maxtime, mintime; - double times[NTIMES]; - double dataSize; - testFunc func; - char* testname; - - - if ( argc > 2 ) { - type = atoi(argv[1]); - N = atoi(argv[2]); - } else { - printf("Usage: %s \n",argv[0]); - printf("Test types: 0 - sequential, 1 - OpenMP throughput, 2 - OpenMP worksharing\n"); - exit(EXIT_SUCCESS); - } - - LIKWID_MARKER_INIT; - - switch ( type ) { - case 0: - func = striad_seq; - testname = "striad_seq"; - break; - case 1: - func = striad_tp; - testname = "striad_tp"; -#ifdef _OPENMP -#pragma omp parallel - { -#pragma omp single - scale = omp_get_num_threads(); - - - LIKWID_MARKER_REGISTER("BENCH"); - } -#endif - break; - case 2: - func = striad_ws; - testname = "striad_ws"; - break; - default: - printf("Unknown test type: %d\n", type); - exit(EXIT_FAILURE); - } - - a = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); - b = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); - c = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); - d = (double*) allocate( ARRAY_ALIGNMENT, N * bytesPerWord ); - -#ifdef VERBOSE - printf(HLINE); - dataSize = 4.0 * bytesPerWord * N; - - if ( dataSize < 1.0E06 ) { - printf ("Total allocated datasize: %8.2f KB\n", dataSize * 1.0E-03); - } else { - printf ("Total allocated datasize: %8.2f MB\n", dataSize * 1.0E-06); - } -#endif - avgtime = 0; - maxtime = 0; - mintime = FLT_MAX; - -#ifdef VERBOSE -#ifdef _OPENMP - printf(HLINE); -#pragma omp parallel - { - int k = omp_get_num_threads(); - int i = omp_get_thread_num(); - -#pragma omp single - printf ("OpenMP enabled, running with %d threads\n", k); - - printf ("\tThread %d running on processor %d\n", i, affinity_getProcessorId()); - } -#endif -#endif - - S = getTimeStamp(); -#pragma omp parallel for - for (int i=0; i 0.1 ) break; - double factor = 0.2 / (times[0] - times[1]); - iter *= (int) factor; - times[1] = times[0]; - } - -#ifdef VERBOSE - printf ("Using %d iterations \n", iter); -#endif - - for ( int k=0; k < NTIMES; k++) { - times[k] = func(a, b, c, d, N, iter); - } - - for (int k=1; k - -#include -#include - -double striad_seq( - double * restrict a, - const double * restrict b, - const double * restrict c, - const double * restrict d, - int N, - int iter - ) -{ - double S, E; - - S = getTimeStamp(); - LIKWID_MARKER_START("BENCH"); - for(int j = 0; j < iter; j++) { - for (int i=0; i 2000) printf("Ai = %f\n",a[N-1]); - } - LIKWID_MARKER_STOP("BENCH"); - E = getTimeStamp(); - - return E-S; -} diff --git a/MemoryHierarchy/src/striad_tp.c b/MemoryHierarchy/src/striad_tp.c deleted file mode 100644 index 6b5297a..0000000 --- a/MemoryHierarchy/src/striad_tp.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#include - -#include -#include - -double striad_tp( - double * restrict a, - const double * restrict b, - const double * restrict c, - const double * restrict d, - int N, - int iter - ) -{ - double S, E; - -#pragma omp parallel - { - double* al = (double*) allocate( ARRAY_ALIGNMENT, N * sizeof(double)); - -#pragma omp single - S = getTimeStamp(); - for(int j = 0; j < iter; j++) { - for (int i=0; i 2000) printf("Ai = %f\n",al[N-1]); - } -#pragma omp single - E = getTimeStamp(); - } - - return E-S; -} diff --git a/MemoryHierarchy/src/striad_ws.c b/MemoryHierarchy/src/striad_ws.c deleted file mode 100644 index 9ba1374..0000000 --- a/MemoryHierarchy/src/striad_ws.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#include - -#include - -double striad_ws( - double * restrict a, - const double * restrict b, - const double * restrict c, - const double * restrict d, - int N, - int iter - ) -{ - double S, E; - - S = getTimeStamp(); -#pragma omp parallel - { - for(int j = 0; j < iter; j++) { -#pragma omp for - for (int i=0; i 2000) printf("Ai = %f\n",a[N-1]); - } - } - E = getTimeStamp(); - - return E-S; -} diff --git a/MemoryHierarchy/src/timing.c b/MemoryHierarchy/src/timing.c deleted file mode 100644 index 0ed2617..0000000 --- a/MemoryHierarchy/src/timing.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#include -#include - -double getTimeStamp() -{ - struct timespec ts; - clock_gettime(CLOCK_MONOTONIC, &ts); - return (double)ts.tv_sec + (double)ts.tv_nsec * 1.e-9; -} - -double getTimeResolution() -{ - struct timespec ts; - clock_getres(CLOCK_MONOTONIC, &ts); - return (double)ts.tv_sec + (double)ts.tv_nsec * 1.e-9; -} - -double getTimeStamp_() -{ - return getTimeStamp(); -} - diff --git a/MemoryHierarchy/src/timing.h b/MemoryHierarchy/src/timing.h deleted file mode 100644 index 79bdf95..0000000 --- a/MemoryHierarchy/src/timing.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * ======================================================================================= - * - * Author: Jan Eitzinger (je), jan.treibig@gmail.com - * Copyright (c) 2019 RRZE, University Erlangen-Nuremberg - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * ======================================================================================= - */ - -#ifndef __TIMING_H_ -#define __TIMING_H_ - -extern double getTimeStamp(); -extern double getTimeResolution(); -extern double getTimeStamp_(); - -#endif diff --git a/MainMemory/bench.pl b/bench.pl similarity index 100% rename from MainMemory/bench.pl rename to bench.pl diff --git a/MainMemory/bench.py b/bench.py similarity index 100% rename from MainMemory/bench.py rename to bench.py diff --git a/MainMemory/config.mk b/config.mk similarity index 100% rename from MainMemory/config.mk rename to config.mk diff --git a/MainMemory/include_CLANG.mk b/include_CLANG.mk similarity index 100% rename from MainMemory/include_CLANG.mk rename to include_CLANG.mk diff --git a/MainMemory/include_GCC.mk b/include_GCC.mk similarity index 100% rename from MainMemory/include_GCC.mk rename to include_GCC.mk diff --git a/MainMemory/include_ICC.mk b/include_ICC.mk similarity index 100% rename from MainMemory/include_ICC.mk rename to include_ICC.mk diff --git a/MainMemory/src/affinity.c b/src/affinity.c similarity index 100% rename from MainMemory/src/affinity.c rename to src/affinity.c diff --git a/MainMemory/src/allocate.c b/src/allocate.c similarity index 100% rename from MainMemory/src/allocate.c rename to src/allocate.c diff --git a/MainMemory/src/copy.c b/src/copy.c similarity index 100% rename from MainMemory/src/copy.c rename to src/copy.c diff --git a/MainMemory/src/daxpy.c b/src/daxpy.c similarity index 100% rename from MainMemory/src/daxpy.c rename to src/daxpy.c diff --git a/MainMemory/src/includes/affinity.h b/src/includes/affinity.h similarity index 100% rename from MainMemory/src/includes/affinity.h rename to src/includes/affinity.h diff --git a/MainMemory/src/includes/allocate.h b/src/includes/allocate.h similarity index 100% rename from MainMemory/src/includes/allocate.h rename to src/includes/allocate.h diff --git a/MainMemory/src/includes/timing.h b/src/includes/timing.h similarity index 100% rename from MainMemory/src/includes/timing.h rename to src/includes/timing.h diff --git a/MainMemory/src/init.c b/src/init.c similarity index 100% rename from MainMemory/src/init.c rename to src/init.c diff --git a/MainMemory/src/main.c b/src/main.c similarity index 100% rename from MainMemory/src/main.c rename to src/main.c diff --git a/MainMemory/src/sdaxpy.c b/src/sdaxpy.c similarity index 100% rename from MainMemory/src/sdaxpy.c rename to src/sdaxpy.c diff --git a/MainMemory/src/striad.c b/src/striad.c similarity index 100% rename from MainMemory/src/striad.c rename to src/striad.c diff --git a/MainMemory/src/sum.c b/src/sum.c similarity index 100% rename from MainMemory/src/sum.c rename to src/sum.c diff --git a/MainMemory/src/timing.c b/src/timing.c similarity index 100% rename from MainMemory/src/timing.c rename to src/timing.c diff --git a/MainMemory/src/triad.c b/src/triad.c similarity index 100% rename from MainMemory/src/triad.c rename to src/triad.c diff --git a/MainMemory/src/update.c b/src/update.c similarity index 100% rename from MainMemory/src/update.c rename to src/update.c