diff --git a/thesis/chapters/conceptdesign.tex b/thesis/chapters/conceptdesign.tex index 2b9f755..8087e33 100644 --- a/thesis/chapters/conceptdesign.tex +++ b/thesis/chapters/conceptdesign.tex @@ -185,7 +185,7 @@ This reference can then be put on the stack for later use, the same way the inte \end{algorithmic} \end{algorithm} -The code generated by the transpiler is the kernel for the transpiled expressions. This means that a new kernel must be generated for each expression that needs to be evaluated. This is in contrast to the interpreter, which has one kernel and dispatches it once for each expression. However, generating one kernel per expression results in a much simpler kernel. This allows the kernel to focus on evaluating the postfix expression from left to right. There is no overhead work such as branching or managing a stack. However, this overhead is now shifted to the transpilation step on the CPU which can be seen in Algorithm \ref{alg:transpile}. There is also a noticeable overhead in that a kernel has to be generated for each expression. In cases like parameter optimisation, many of the expressions would be transpiled multiple times as the transpiler is called multiple times with the same expressions. +The code generated by the transpiler is the kernel for the transpiled expressions. This means that a new kernel must be generated for each expression that needs to be evaluated. This is in contrast to the interpreter, which has one kernel and dispatches it once for each expression. Generating one kernel per expression results in a much simpler kernel, which allows the kernel to focus on evaluating the postfix expression. There is no overhead work such as branching or managing a stack. However, this overhead is now shifted to the transpilation step on the CPU which can be seen in Algorithm \ref{alg:transpile}. There is also a noticeable overhead in that a kernel has to be generated for each expression. In cases like parameter optimisation, many of the expressions would be transpiled multiple times as the transpiler is called multiple times with the same expressions. Both the transpiler and the interpreter have their respective advantages and disadvantages. While the interpreter puts less load on the CPU, the GPU has to perform more work. Much of this work involves branching or managing a stack, and therefore involves many instructions that are not used to evaluate the expression itself. However, this overhead can be mitigated by the fact, that all this work is performed in parallel rather than sequentially. diff --git a/thesis/main.pdf b/thesis/main.pdf index 506add9..f367824 100644 Binary files a/thesis/main.pdf and b/thesis/main.pdf differ