From 4c60331288825c40978ff8baf27d307ce4d0660d Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 12 Apr 2025 16:22:14 +0200 Subject: [PATCH] evaluation: added introduction text and made plan for additional text --- thesis/chapters/evaluation.tex | 5 +++++ thesis/main.pdf | Bin 718947 -> 719717 bytes 2 files changed, 5 insertions(+) diff --git a/thesis/chapters/evaluation.tex b/thesis/chapters/evaluation.tex index 3a690aa..a1d8fb5 100644 --- a/thesis/chapters/evaluation.tex +++ b/thesis/chapters/evaluation.tex @@ -1,9 +1,14 @@ \chapter{Evaluation} \label{cha:evaluation} +The aim of this thesis is to determine whether at least one of the GPU evaluators is faster than the current CPU evaluator. This chapter describes the performance evaluation. First, the environment in which the performance tests are performed is explained. Then the individual results for the GPU interpreter and the transpiler are presented. In addition, this part also includes the performance tuning steps taken to achieve these results. Finally, the results of the GPU evaluators are compared to the CPU evaluator in order to answer the research questions of this thesis. + \section{Test environment} Explain the hardware used, as well as the actual data (how many expressions, variables etc.) +three scenarios -> few, normal and many variable sets;; expr repetitions to simulate parameter optimisation +Benchmarktools.jl -> 1000 samples per scenario + \section{Results} talk about what we will see now (results only for interpreter, then transpiler and then compared with each other and a CPU interpreter) diff --git a/thesis/main.pdf b/thesis/main.pdf index 47acb2b23c8a7784d21cbfc0cdf136ca59e4de13..98da91fe891b4bac52efcb8f8be5e4d5700647db 100644 GIT binary patch delta 10520 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