{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## A. TISS-Feedback (optional, ~15min)\n", "\n", "Diese Aufgabe ist optional; wir bitten Sie sich dennoch explizit Zeit zu nehmen, und uns Rückmeldungen zu geben.\n", "\n", "Bitte nutzen Sie auch die Freitext Felder, diese sind für uns besonders wertvoll.\n", "\n", "Hier ein paar Anregungen für Ihre Rückmeldungen via Freitext:\n", "\n", "- Bitte wenn es geht immer kurz Ihre Vorerfahrung erwähnen, z.B. mit \"Vorerfahrung: viel\" oder \"Vorerfahrung: wenig\"\n", "- Bitte beziehen Sie gerne auch die vorangehende LV (Python 360.049) in Ihre Überlegungen mit ein.\n", "- Bitte beziehen Sie gerne auch explizit auf einzelne Aspekte des diessemestrigen Modus ein (Hörsaal/Hausübungen/Labor Abgaben/Labor Praxisteil)\n", "\n", "TISS-Fragebogen: https://tiss.tuwien.ac.at/survey/surveyForm.xhtml?dswid=1580&dsrid=261&courseNumber=360050&semesterCode=2024S\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## B. Laufzeitmessung für eine Ausgleichungsrechnung (*polynomial fitting*)\n", "\n", "[taskB.py](taskB.py): gegebener Python-Quellcode zur Ausgleichungsrechnung mit Polynomen (ident zu [360.049/homework8/task3](https://sgit.iue.tuwien.ac.at/360049/homework8/src/branch/main/main.ipynb#user-content-Aufgabe-3:-Ausgleichungsrechnung-mit-Polynomen-(1-Punkt))).\n", "\n", "[taskB.cpp](taskB.cpp): gegebener C++-Quellcode mit Funktionalität analog zu [taskB.py](taskB.py).\n", "\n", "Beide Quellcodes berechnen die Koeffizienten eines Ausgleichploynoms für einen generisch erzeugten Datensatz von Funktionswertepaaren (+ Rauschen) im Intervall $[0,5]$ für die Funktion: \n", "\n", "$f(x) = 2(1 - \\exp^{-x})$\n", "\n", "**Aufgabe:**\n", "\n", "1. Inspizieren Sie den gegebenen Programmcode.\n", "2. Führen Sie den die Programme aus (die Anzahl an Datenpunkten ist im Quellcode mit 30000 festgelegt).\n", "\t```shell\n", "\tpython taskB.py \n", "\t./taskB \n", "\t```\n", "3. Gestalten Sie beide gegebenen Programme um, so dass die Anzahl an Datenpunkten als Argument in der Kommandozeile übergeben werden kann, z.B. so:\n", "\t```shell\n", "\tpython taskB.py 30000 \n", "\t./taskB 30000\n", "\t```\n", "4. Messen Sie die Laufzeit für die Ausgleichungsrechnung für mindestens 5 verschiedene Anzahlen an Datenpunkten,\n", "\t- für die Python-Implementierung (taskB.py),\n", "\t- für die C++-Implementierung mit Debug Einstellungen (`-O0`), und\n", "\t- für die C++-Implementierung it Release Einstellungen\t(`-O3`).\n", "5. Erstellen Sie einen Plot der Laufzeiten, dies könnte z.B. so aussehen:\n", "\n", "\t![benchmark](images/benchmark_lin.png)\n", "\t\n", "\t![benchmark](images/benchmark_logy.png)\t\n", "\n", "\n", "**Demonstration:**\n", "\n", "- Welche Bibliothek kommt in der C++-Implementierung (statt numpy) zum Einsatz.\n", "- Warum sind die errechneten Koeffizienten nicht exakt gleich (Python vs C++). \n", "- Präsentieren Sie Ihre Messungen/Plot\n", "- Diskutieren Sie die Laufzeitunterschiede.\n", "- Diskutieren Sie die Abhängigkeit der Laufzeit von der Problemgrösse.\n", "- Diskutieren Sie mögliche Ursachen für die Abhängigkeit (z.B. Speicherzugriffszeiten, Rechenoperationen)." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "#" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 2 }