GithubHelp home page GithubHelp logo

cejkaluk / masters_thesis Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 248 MB

Master's thesis that I wrote during my 3rd year of the Applications of Software Engineering program at the Faculty of Nuclear Sciences and Physical Engineering at the Czech Technical University in Prague.

TeX 18.68% HTML 79.81% Shell 0.62% MATLAB 0.45% Python 0.43%

masters_thesis's People

Contributors

cejkaluk avatar

Watchers

 avatar

masters_thesis's Issues

Retrospective

This issue contains any retrospective thoughts on the Master's Thesis.

TeX Files

  • Should have used a variable for repeating names to avoid potentially misspelling them, e.g., \PCMxPP instead of PCM\_\textit{x}PP, etc.

Master's Thesis Contents

Minor Math and Content Fixes

Math

The correct notation for finding an element largest in absolute value in a column of a matrix is: p = argmax_{j<=k<=n}|l_{k, j}|.

This has to be fixed on pages: 32, 33, 36, 49

Content

Replace any mention of "converge" with "process" or something similar.
It may not be a suitable term to use in this context.

Newlines in LaTeX files

Out of a paragraph, each sentence should be on a separate line in the .tex file.

This will make the .tex files more readable while not changing the contents of the PDF.

Optional TikZ Figures

Go through the text and, where possible, replace images with TikZ figures.

Chapter 01

  • Figure:theory->CUDA->memory-management->memory-spaces
    • Try to use ChatGPT to generate some base, e.g., "Generate a TikZ figure describing CUDA memory structuring, it should contain bla bla bla"
    • Consider paying for ChatGPT if it is able to accept images as prompts
  • Figure:theory->ICMPP->LUP->CMPP->sum-in-element-computation-dependance
    • Can use ChatGPT to generate some base and then expand on it

Chapter 02

  • Create TikZ figures to aid some explanations - list here:
    • chapter02 -> Implementation -> Decomposition Project -> Implemented Algorithms -> Decomposers -> ICMxPP -> Processing by Sections: Explanation of quality of elements.
      • Image showing that the quality of elements in the lower-right corner of the matrix depends on the quality of other elements.
    • \paragraph{Parallel Crout's Method With Partial Pivoting (PCM\textit{x}PP)} -> after the algorithm explanation: Figure showing the dependency of elements described in the text.

Chapter 03

  • Figure:comparing-decomposers-and-solvers->decomposition-project-benchmarks->solvers-benchmark->comparison-of-execution-times-on-all-matrices->visualization-of-substitutions
    • Try to use ChatGPT to generate some base, e.g., "Generate a TikZ figure that visualizes forward substituion".
  • Create TikZ figures to aid some explanations - list here:
    • To aid the description of how ICMxPP decomposes Cejka dense matrices - near Figure:comparing-decomposers-and-solvers->decomposition-project-benchmarks->decomposers-benchmark->comparison-of-execution-times-on-subset-of-matrices->matrix-with-metrics->Cejka558
    • TikZ figures explaining how a thread block is divided into warps - near Figure:comparing-decomposers-and-solvers->decomposition-project-benchmarks->decomposers-benchmark->comparison-of-execution-times-on-subset-of-matrices->ICMxPP-double-precision
    • TikZ figures explaining how 8-by-8 blocks of threads stacked on top of each other access the same block of elements multiple times to load the same elements, while a 32-by-32 block of threads does not need to do this as it loads the elements only once - near \begin{quote}

Bibliography

  • Ensure that the formatting required by the Software Engineering department is followed
  • Finalize the formatting of the bibliography - re-order the sources as best as possible to how they appear in text.

Original Declaration Scan

The final version of the master's thesis must contain:

  • Scan of the original Declaration - signed; declaration by the author that they wrote the thesis themselves and any used resources are mentioned.

WARNING: This PDF of the signed declaration must be renewed (fresh copy signed with correct date) if the contents of the main PDF are changed later than 13.07.2023. This is to ensure that the compiled dates in the PDF are the same as the signed copy to avoid any potential issues with validity.

declaration_unsigned.pdf

Chapter 3: Comparing Decomposers and Solvers

Notes related to this chapter can be found in Notion: Thesis Structure.

General draft & post-supervisor quality points to check

Grammar, Spelling, etc.

  • Address and remove TODOs (including \TODO)
  • Hyphenation:
    • "non-zero" is not as popular -> use "nonzero" instead
    • Replace all "sub-" prefixes with "sub" (for example: "sub-optimal" -> "suboptimal" - correct according to the Oxford dictionary)
  • Full stops and commas:
    • Full stops and commas after equations if the equations are part of a sentence
    • Thousands separated by comma
    • Bullet points that are meant to be a part of the sentence should be separated by a comma and the last bullet should have a dot at the end (if it ends the sentence)
  • Bullet points - consistent formatting, e.g., if they're individual sentences -> colon + capital letter right after. If they're part of a sentence, then colon + small letter right after.
  • Titles of Chapter/Section/etc. follow correct capitalization
  • Double-check spelling using TeXstudio and Grammarly

Text formatting

  • Numbers in the text must not be in math mode
  • References to sections etc. have a capital letter in the text (Section~\ref{}, Figure~\ref{}, Table~\ref{})
  • Quotes, or statements in "" should be italicized
  • No indented line after an object that slices a text in two
  • Use "*" for multiplication only in in-line code, e.g., U = R * I
  • Mathematics formatting:
    • Variables in cursive font
    • Constants in non-cursive (using \mathrm{})
    • Do not use "*" for multiplication in math mode as it signifies convolution
    • Use \mathbf{} for matrices and vectors (\mathbb{} is used for sets)
    • Shortcuts in sub- and super-script should not be in cursive, e.g. X^{new} "new" should not be cursive)
    • \nonumber\,. should be before newline
  • Code formatting:
    • Courier font and grey background (in-line and code block)
    • Check code in all lstlistings for correct syntax highlighting
    • Code blocks:
      • Consistent spacing in code - Do: for( int... i++ ); Don't: for ()
      • Consistent formatting of {} - Do: void func()\n{ \n}; Don't void func() { \n}
      • No spacing from the left part of the listing
  • Citations in the text:
    • Spaces between text and citations
    • Multiple citations must be in one \cite{a, b, c} command, not \cite{a}\cite{b}\cite{c}
  • Variables in cursive font, e.g., ICM_x_ (x can be one of 8, 16, 32)
  • Consistent label names
    • Template: {Type:chapter->section->subsection->subsubsection->specific-content-name}
  • No line overflowing (text, in-line code, etc.)
  • Consistent footnotes - they must either contain URL if a Url follows, or not.

Low priority

  • TiKZ Figures:
    • Either convert the necessary figures to TiKZ OR create an issue to fix a specific figure
    • Some papers include the TiKZ source code

Chapter 2: Implementation

Notes related to this chapter can be found in Notion: Thesis Structure.

General draft & post-supervisor quality points to check

Grammar, Spelling, etc.

  • Address and remove TODOs (including \TODO)
  • Hyphenation:
    • "non-zero" is not as popular -> use "nonzero" instead
    • Replace all "sub-" prefixes with "sub" (for example: "sub-optimal" -> "suboptimal" - correct according to the Oxford dictionary)
  • Full stops and commas:
    • Full stops and commas after equations if the equations are part of a sentence
    • Thousands separated by comma
  • Bullet points
    • That are meant to be a part of the sentence should be separated by a comma and the last bullet should have a dot at the end (if it ends the sentence)
    • Consistent formatting, e.g., if they're individual sentences -> colon + capital letter right after. If they're part of a sentence, then colon + small letter right after.
  • Titles of Chapter/Section/etc. follow correct capitalization
  • Double-check spelling using TeXstudio and Grammarly

Text formatting

  • Numbers in the text must not be in math mode
  • References to sections etc. have a capital letter in the text (Section~\ref{}, Figure~\ref{}, Table~\ref{})
  • Quotes, or statements in "" should be italicized
  • No indented line after an object that slices a text in two
  • Use "*" for multiplication only in in-line code, e.g., U = R * I
  • Mathematics formatting:
    • Variables in cursive font
    • Constants in non-cursive (using \mathrm{})
    • Do not use "*" for multiplication in math mode as it signifies convolution
    • Use \mathbf{} for matrices and vectors (\mathbb{} is used for sets)
    • Shortcuts in sub- and super-script should not be in cursive, e.g. X^{new} "new" should not be cursive)
    • \nonumber\,. should be before newline
  • Code formatting:
    • Courier font and grey background (in-line and code block)
    • Check code in all lstlistings for correct syntax highlighting
    • Code blocks:
      • Consistent spacing in code - Do: for( int... i++ ); Don't: for ()
      • Consistent formatting of {} - Do: void func()\n{ \n}; Don't void func() { \n}
      • No spacing from the left part of the listing
  • Citations in the text:
    • Spaces between text and citations
    • Multiple citations must be in one \cite{a, b, c} command, not \cite{a}\cite{b}\cite{c}
  • Variables in cursive font, e.g., ICM_x_ (x can be one of 8, 16, 32)
  • Consistent label names
    • Template: {Type:chapter->section->subsection->subsubsection->specific-content-name}
  • No line overflowing (text, in-line code, etc.)
  • Consistent footnotes - they must either contain URL if a Url follows, or not.
    • Made some exceptions

Low priority

  • TiKZ Figures:
    • Either convert the necessary figures to TiKZ OR create an issue to fix a specific figure
    • Some papers include the TiKZ source code

Post-supervisor checks quality points

  • Remove any \TO

Chapter 1: Theory

Notes related to this chapter can be found in Notion: Thesis Structure.

General draft & post-supervisor quality points to check

Grammar, Spelling, etc.

  • Address and remove TODOs (including \TODO)
  • Hyphenation:
    • "non-zero" is not as popular -> use "nonzero" instead
    • Replace all "sub-" prefixes with "sub" (for example: "sub-optimal" -> "suboptimal" - correct according to the Oxford dictionary)
  • Full stops and commas:
    • Full stops and commas after equations if the equations are part of a sentence
    • Thousands separated by comma
    • Bullet points that are meant to be a part of the sentence should be separated by a comma and the last bullet should have a dot at the end (if it ends the sentence)
  • Bullet points - consistent formatting, e.g., if they're individual sentences -> colon + capital letter right after. If they're part of a sentence, then colon + small letter right after.
  • Titles of Chapter/Section/etc. follow correct capitalization
  • Double-check spelling using TeXstudio and Grammarly

Text formatting

  • Numbers in the text must not be in math mode
  • References to sections etc. have a capital letter in the text (Section~\ref{}, Figure~\ref{}, Table~\ref{})
  • Quotes, or statements in "" should be italicized
  • No indented line after an object that slices a text in two
  • Use "*" for multiplication only in in-line code, e.g., U = R * I
  • Mathematics formatting:
    • Variables in cursive font
    • Constants in non-cursive (using \mathrm{})
    • Do not use "*" for multiplication in math mode as it signifies convolution
    • Use \mathbf{} for matrices and vectors (\mathbb{} is used for sets)
    • Shortcuts in sub- and super-script should not be in cursive, e.g. X^{new} "new" should not be cursive)
    • \nonumber\,. should be before newline
  • Code formatting:
    • Courier font and grey background (in-line and code block)
    • Check code in all lstlistings for correct syntax highlighting
    • Code blocks:
      • Consistent spacing in code - Do: for( int... i++ ); Don't: for ()
      • Consistent formatting of {} - Do: void func()\n{ \n}; Don't void func() { \n}
      • No spacing from the left part of the listing
  • Citations in the text:
    • Spaces between text and citations
    • Multiple citations must be in one \cite{a, b, c} command, not \cite{a}\cite{b}\cite{c}
  • Variables in cursive font, e.g., ICM_x_ (x can be one of 8, 16, 32)
  • Consistent label names
    • Template: {Type:chapter->section->subsection->subsubsection->specific-content-name}
  • No line overflowing (text, in-line code, etc.)
  • Consistent footnotes - they must either contain URL if a Url follows, or not.

Low priority

  • TiKZ Figures:
    • Either convert the necessary figures to TiKZ or track the replacement of a specific figure in an issue.
    • Some papers include the TiKZ source code

Post-supervisor checks quality points

  • Remove any \TO

Abstract, Introduction, Conclusion, and Appendices

Notes related to this chapter can be found in Notion: Thesis Structure.

Note: The Appendices chapter will be created throughout the writing of the thesis and only finalized in this issue.

General draft & post-supervisor quality points to check

Grammar, Spelling, etc.

  • Address and remove TODOs (including \TODO)
  • Hyphenation:
    • "non-zero" is not as popular -> use "nonzero" instead
    • Replace all "sub-" prefixes with "sub" (for example: "sub-optimal" -> "suboptimal" - correct according to the Oxford dictionary)
  • Full stops and commas:
    • Full stops and commas after equations if the equations are part of a sentence
    • Thousands separated by comma
    • Bullet points that are meant to be a part of the sentence should be separated by a comma and the last bullet should have a dot at the end (if it ends the sentence)
  • Bullet points - consistent formatting, e.g., if they're individual sentences -> colon + capital letter right after. If they're part of a sentence, then colon + small letter right after.
  • Titles of Chapter/Section/etc. follow correct capitalization
  • Double-check spelling using TeXstudio and Grammarly

Text formatting

  • Numbers in the text must not be in math mode
  • References to sections etc. have a capital letter in the text (Section~\ref{}, Figure~\ref{}, Table~\ref{})
  • Quotes, or statements in "" should be italicized
  • No indented line after an object that slices a text in two
  • Use "*" for multiplication only in in-line code, e.g., U = R * I
  • Mathematics formatting:
    • Variables in cursive font
    • Constants in non-cursive (using \mathrm{})
    • Do not use "*" for multiplication in math mode as it signifies convolution
    • Use \mathbf{} for matrices and vectors (\mathbb{} is used for sets)
    • Shortcuts in sub- and super-script should not be in cursive, e.g. X^{new} "new" should not be cursive)
    • \nonumber\,. should be before newline
  • Code formatting:
    • Courier font and grey background (in-line and code block)
    • Check code in all lstlistings for correct syntax highlighting
    • Code blocks:
      • Consistent spacing in code - Do: for( int... i++ ); Don't: for ()
      • Consistent formatting of {} - Do: void func()\n{ \n}; Don't void func() { \n}
      • No spacing from the left part of the listing
  • Citations in the text:
    • Spaces between text and citations
    • Multiple citations must be in one \cite{a, b, c} command, not \cite{a}\cite{b}\cite{c}
  • Variables in cursive font, e.g., ICM_x_ (x can be one of 8, 16, 32)
  • Consistent label names
    • Template: {Type:chapter->section->subsection->subsubsection->specific-content-name}
  • No line overflowing (text, in-line code, etc.)
  • Consistent footnotes - they must either contain URL if a Url follows, or not.

Original Thesis Assignment Scan

The final version of the master's thesis must contain:

  • Scan of the original Thesis Assignment - with all required signatures; the official goals of the thesis.

Contents of attached CD

WARNING: This issue must reflect any changes in the repository. Therefore, it MUST be reopened in the future if any such changes occur.

The contents of the CD:

  • Benchmark files
    • Decomposers benchmarks
      • Main results
      • PCM_xPP column-major order
      • ICM_xPP various processing tolerances
      • ICM_32PP metrics
    • Solvers benchmarks
    • BDDCML Benchmark
      • Main results
      • ICM_xPP various processing tolerances
      • ICM_32PP metrics
  • Repositories used for the final benchmarks - both structures (not zipped, not compiled):
  • Final PDF of the thesis
  • README (.md and .html)
    • Describe contents of each directory, as if the CD was a repository
  • Batch files used for the final benchmarks:
    • Decomposers & Solvers
    • BDDCML on AMD nodes
  • Other scripts
    • MATLAB script for calculation condition numbers
    • MATLAB script for generating nonzero element patterns
    • Python script for generating visualizations of metrics

Fix Max. Abs. Difference Explanations

On page 64 it is written that the max. abs. difference formula for decomposers:

max |A − LUP|

represents:

To clarify, the maximum absolute difference for decomposers is the largest absolute difference between a computed element and its expected result.

Consider replacing it with something like:

To clarify, the 'maximum absolute difference' for decomposers is defined as the largest absolute difference between the expected value of each element in the original matrix (A) and its corresponding computed value, represented in matrix form as LUP, after the LU decomposition process.

Similarly, for solvers change the clarification sentence from:

To clarify, the computed unknowns are used in the system of equations in matrix form, and then the largest absolute difference between the left- and right-hand sides is used.

to something like:

To clarify, the maximum absolute difference for solvers is calculated by comparing the computed unknowns (X) used in the system of equations, represented in matrix form as LUPX, with the right-hand side matrix (B). The metric measures the largest absolute difference between the elements of LUPX and the corresponding elements of B.

TODO:

  • Make the changes
  • Compile 3x times
  • Check with Grammarly.
  • Compare the PDF of v1.0.5 and the new main.pdf
  • Print, sign, and scan a new declaration
  • Replace BOTH masters_thesis.pdf in repo_root
  • Replace BOTH masters_thesis.pdf in repo_root/thesis_attachments

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.