/articles/toma

To get this branch, use:
bzr branch http://darksoft.org/webbzr/articles/toma

« back to all changes in this revision

Viewing changes to section_53_hybrid.tex

  • Committer: Suren A. Chilingaryan
  • Date: 2017-12-23 08:49:35 UTC
  • Revision ID: csa@suren.me-20171223084935-yg4j912ehufjz6d0
Fix cross-references and some latex complaints

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
 In \sectionname~\ref{section:newtex} we proposed an advanced thread mapping scheme for the texture-based kernel. The goal is to keep the pixel to block assignment minimal to preserve performance for the small images. The ALU kernel, however, is aimed on larger image sizes and works with 32-by-32 pixel area at minimum. Therefore, an alternative simpler mapping is utilized for the texture-based kernel if it is executed as part of hybrid approach. The block to pixel assignments are kept in sync with the ALU-based kernel. At each iteration a standard region of 16-by-16 pixels is processed. The thread to pixel assignments follow the mapping described in \sectionname~\ref{section:remap}. Each thread is responsible for 4 to 16 pixels and processes them in the loop. The same texture is used to perform linear interpolation in blocks running texture-based algorithm and to cache data in the shared memory in the blocks executing ALU-based reconstruction. The performance and utilization of GPU subsystems using the different reconstruction modes is reviewed in \tablename~\ref{tbl:utilization}.
24
24
 
25
 
\begin{table}[h] %[htbp]
 
25
\begin{table}[htb] %[htbp]
26
26
\begin{threeparttable}
27
27
\caption{\label{tbl:utilization} Utilization of functional units in hybrid reconstruction mode}
28
28
\centering
54
54
 
55
55
 
56
56
\subsubsection{Oversampling}\label{section:oversample}
57
 
 There is an alternative approach to better integrate the texture engine in the workflow of ALU-based reconstruction. The idea is to sample several values for each bin of a sinogram and use the nearest-neighbor instead of linear interpolation, see \figurename~\ref{fig:pvers}. While more shared memory is required, the number of computations and memory transactions is reduced in this case. A significant speed-up is achieved compared to linear interpolation if 4 values are sampled for each bin at offsets $.00$, $.25$, $.50$, and $.75$. The \figurename~\ref{fig:quality_overs} compares the described approach against the reconstructions performed using the standard nearest neighbor and linear interpolations. The reconstruction in oversampling mode is reasonably similar to the results obtained using the linear interpolation. 
58
 
 
59
 
 
60
 
\begin{figure}[h]
 
57
 There is an alternative approach to better integrate the texture engine in the workflow of ALU-based reconstruction. The idea is to sample several values for each bin of a sinogram and use the nearest-neighbor instead of linear interpolation, see \figurename~\ref{fig:overs}. While more shared memory is required, the number of computations and memory transactions is reduced in this case. A significant speed-up is achieved compared to linear interpolation if 4 values are sampled for each bin at offsets $.00$, $.25$, $.50$, and $.75$. The \figurename~\ref{fig:quality_overs} compares the described approach against the reconstructions performed using the standard nearest neighbor and linear interpolations. The reconstruction in oversampling mode is reasonably similar to the results obtained using the linear interpolation. 
 
58
 
 
59
 
 
60
\begin{figure}[htb]
61
61
\centering
62
62
\includegraphics[width=0.45\textwidth]{img/overs.pdf}
63
63
\caption{\label{fig:overs} The figure illustrates the oversampling reconstruction approach. To reconstruct a 32x32 pixel square, a thread block caches 192 values per projection (left). The values are fetched from 48 bins at uniform intervals using the texture engine. Then, the reconstruction is performed and projections are processed in a loop one after another (right). To determine required position in the cache, the offset from the first bin of the cache is multiplied by 4 and the result is rounded to the nearest integer. The value at this position is loaded from the array and used to update pixel value.}
64
64
\end{figure}
65
65
 
66
 
\begin{figure}[h]
 
66
\begin{figure}[htb]
67
67
\centering
68
68
%\includegraphics[width=0.45\textwidth]{img/quality_overs.pdf}
69
69
\includegraphics[width=0.45\textwidth]{img/quality_overs_zoomed.pdf}
80
80
\input{table_53_overs.tex}
81
81
 
82
82
%
83
 
%\begin{table}[h] %[htbp]
 
83
%\begin{table}[htb] %[htbp]
84
84
%\begin{threeparttable}
85
85
%\caption{\label{tbl:shmemoconf} The optimal parameters to prevent shared memory bank conflicts in oversampling kernel}
86
86
%\centering