From 6c3ba53ea336e655e659206b786bf4885093db75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Constantin=20F=C3=BCrst?= Date: Mon, 12 Feb 2024 18:18:35 +0100 Subject: [PATCH] add some todos to design chapter for modification --- thesis/content/40_design.tex | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/thesis/content/40_design.tex b/thesis/content/40_design.tex index a57b0f2..4b54df5 100644 --- a/thesis/content/40_design.tex +++ b/thesis/content/40_design.tex @@ -35,6 +35,8 @@ The interface of \texttt{Cache} must provide three basic functions: (1) requesti \subsection{Interface} +\todo{mention custom malloc for outsourcing allocation to user} + To facilitate rapid integration and alleviate developer workload, we opted for a simple interface. Given that this work primarily focuses on caching static data, we only provide cache invalidation and not synchronization. The \texttt{Cache::Invalidate} function, given a memory address, will remove all entries for it from the cache. The other two operations, caching and access, are provided in one single function, which we shall henceforth call \texttt{Cache::Access}. This function receives a data pointer and size as parameters and takes care of either submitting a caching operation if the pointer received is not yet cached or returning the cache entry if it is. The user retains control over cache placement and the assignment of tasks to accelerators through mechanisms outlined in \ref{sec:design:accel-usage}. This interface is represented on the right block of Figure \ref{fig:impl-design-interface} labelled \enquote{Cache} and includes some additional operations beyond the basic requirements. \par Given the asynchronous nature of caching operations, users may opt to await their completion. This proves particularly beneficial when parallel threads are actively processing, and the current thread strategically pauses until its data becomes available in faster memory, thereby optimizing access speeds for local computations. \par @@ -59,6 +61,9 @@ Secondly, invalidation is a manual process, requiring the programmer to remember Due to its reliance on libnuma for memory allocation, \texttt{Cache} is exclusively compatible with systems where this library is available. It is important to note that Windows platforms use their own API for this purpose, which is incompatible with libnuma, rendering the code non-executable on such systems \cite{microsoft:numa-malloc}. \par +\todo{remove the libnuma restriction} +\todo{mention undefined behaviour when writing to cache source before having waited for caching operation completion} + \section{Accelerator Usage} \label{sec:design:accel-usage}