diff --git a/LICENSE.txt b/LICENSE.txt index 02167ed06..07df9b384 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Licensing information for STIR 6.0.0 +Licensing information for STIR 6.2.0 ---------------------------------- See for more info http://stir.sourceforge.net, section Registration. @@ -209,6 +209,7 @@ Explicit list of files that carry the PARAPET license ./src/include/stir/recon_buildblock/BackProjectorByBinUsingInterpolation.h ./src/include/stir/recon_buildblock/SymmetryOperations_PET_CartesianGrid.h ./src/include/stir/recon_buildblock/ProjMatrixElemsForOneBin.h +./src/include/stir/recon_buildblock/distributable.txx ./src/include/stir/recon_buildblock/RelatedBins.h ./src/include/stir/recon_buildblock/RelatedDensels.inl ./src/include/stir/recon_buildblock/ProjMatrixByBin.h @@ -219,6 +220,7 @@ Explicit list of files that carry the PARAPET license ./src/include/stir/CPUTimer.h ./src/include/stir/VoxelsOnCartesianGrid.inl ./src/include/stir/stream.h +./src/include/stir/HigherPrecision.h ./src/include/stir_experimental/phantoms/Utah.h ./src/test/test_ByteOrder.cxx ./src/test/test_VectorWithOffset.cxx diff --git a/documentation/STIR-UsersGuide.tex b/documentation/STIR-UsersGuide.tex index 975d03d00..231d24c7f 100644 --- a/documentation/STIR-UsersGuide.tex +++ b/documentation/STIR-UsersGuide.tex @@ -44,7 +44,7 @@ \\[3cm] \textbf{{\huge User's Guide\\ - Version 6.1}} + Version 6.2}} \end{center} \end{spacing} @@ -1092,17 +1092,18 @@ \subsubsection{ the same idea while still allowing preserving some of the obliqueness. For instance, for a dataset with 9 segments, \textbf{SSRB} can produce a new dataset with only 3 segments. This essentially increases -the axial compression (or \textit{span} in CTI terminology), see the +the axial compression (or \textit{span} in CTI/Siemens terminology), see the \textit{STIR} Glossary on axial compression. In addition, \textbf{SSRB} can introduce extra \textit{mashing} (see the \textit{STIR} Glossary) of the data, -i.e. add views together. +i.e. add views and/or TOF bins together. \textit{Usage:} \cmdline{SSRB output\_filename input\_projdata\_name {\textbackslash} \\ num\_segments\_to\_combine [num\_views\_to\_combine {\textbackslash}\\ -{[}do\_normalisation [max\_in\_segment\_num\_to\_process ]]]} +{[}do\_normalisation [max\_in\_segment\_num\_to\_process {\textbackslash}\\ +{[}num\_tof\_bins\_to\_combine ]]]]} or \cmdline{SSRB --template template\_filename output\_filename input\_projdata\_name [do\_normalisation]} @@ -1116,8 +1117,8 @@ \subsubsection{ the result is normalised, i.e. divided by \textit{num\_segments\_to\_combine*num\_views\_to\_combine}. This is appropriate for rebinning data where normalisation has already been applied, but inappropriate otherwise. - -\item[template\_filename] inicated by the \textit{--template} flag, +\item[num\_tof\_bins\_to\_combine] defaults to 1, so TOF bins are not combined. +\item[template\_filename] indicated by the \textit{--template} flag, is the sinogram type that the \textit{input\_projdata\_name} will be mapped to. This allows for the effective use of \textit{num\_segments\_to\_combine} to be an even number, @@ -4446,6 +4447,12 @@ \subsubsection{ END Relative Difference Prior Parameters:= \end{verbatim} + Note that if you have the \em{CUDA} drivers (and toolkit when building), setting + \begin{verbatim} + prior type := Cuda Relative Difference Prior + \end{verbatim} + will enable a \em{CUDA} implementation (with some restrictions). Other parameter + settings are identical. { \subsubsubsection{Logcosh} \label{sec:priors:Logcosh} } diff --git a/documentation/STIR-developers-overview.tex b/documentation/STIR-developers-overview.tex index 9297a938a..4fc9a146e 100644 --- a/documentation/STIR-developers-overview.tex +++ b/documentation/STIR-developers-overview.tex @@ -16,7 +16,7 @@ \textbf{{\huge STIR \\ Overview for developers}}\\ \textbf{Kris Thielemans}\\ -\textbf{\textit{version 6.0}} +\textbf{\textit{version 6.2}} \end{center} @@ -60,8 +60,8 @@ \section{ doxygen on the source files that come in the STIR distribution). \subsection{Language support} -STIR is written in C++ and currently requires C++-14, but it is compatible with newer versions of the C++ standard. -We will enforce C++-16 from STIR 6.2. +STIR is written in C++ and currently requires C++-17, but it is compatible with newer versions of the C++ standard. +We will enforce C++-20 from STIR 7.0 (possibly earlier). Python and MATLAB support is provided via \R2Lurl{http://www.swig.org/}{SWIG}. This means that Python/MATLAB interfaces follow the C++ classes closely, although some differences are required as these languages do not support templates for instance. @@ -392,7 +392,7 @@ \subsection{ with info on the file and line number where the assertion failed. \subsection{C++ conventions} -STIR uses C++-14 and is compatible with C++-20 to the best of our knowledge. +STIR uses C++-17 and is compatible with C++-20 to the best of our knowledge. For legacy reasons, we have some preprocessor macros (see \textit{stir/common.h}) to define the stir namespace (see below). These should disappear at a @@ -622,6 +622,12 @@ \subsubsection{typedefs} }; \end{verbatim} +\section{CUDA support} +STIR 6.2 introduced first versions of some CUDA code. The include file +\texttt{cuda\_utilities.h} contains some helpers classes to copy +arrays to/from the device. This is still work-in-progress as objects +cannot remain on the device. + \section{ Overview of classes} diff --git a/documentation/STIR-glossary.tex b/documentation/STIR-glossary.tex index b4786d0d7..e51268975 100644 --- a/documentation/STIR-glossary.tex +++ b/documentation/STIR-glossary.tex @@ -14,7 +14,7 @@ \end{center} \begin{center} -\textit{Version 6.0}\\ +\textit{Version 6.2}\\ Originally based on PARAPET Deliverable 4.1, Extended for Quantitative Reconstruction and motion compensation @@ -207,7 +207,7 @@ \section*{Different (lossy) data compressions used} by the scanner (in list-mode) over the actual number of TOF bins. Currently in STIR, this ratio has to be an integer. The size of a TOF bin is computed by multiplying the \textbf{TOF mashing factor} with the \textbf{size of unmashed TOF time bins}, with the latter -defined as a scanner property.\\ +defined as a scanner property. \texttt{SSRB} can be used to increase the TOF mashing factor.\\ Note that many PET scanners use a \textbf{TOF mashing factor} greater than 1 for their standard histogrammed projection data. diff --git a/documentation/history.htm b/documentation/history.htm index 9204d41f3..1f1203148 100644 --- a/documentation/history.htm +++ b/documentation/history.htm @@ -11,6 +11,7 @@
- This version is 100% backwards compatible with STIR 6.1, aside from the default of the - tail-fitting of the scatter estimator (see below). However, C++-17 is now required. -
- + This version is 100% backwards compatible with STIR 6.1, aside from a bug fix for + the blocks-on-cylindrical set-up which caused the wrong geometry, and a changed + default of the tail-fitting of the scatter estimator (see below). However, + C++-17 is now required. +
++ Main new features are the capability to mash TOF bins (via SSRB utility/code) + and a CUDA version of the Relative Difference Prior. There are also some + import bug fixes, as well as some speed-up (hopefully) in the use of arrays.
@@ -29,15 +33,9 @@
CudaRelativeDifferencePrior
(use Cuda Relative Difference Prior in .par files), only
available if the CUDA toolkit is found during building. Results are identical to RelativeDifferencePrior
up to numerical rounding issues. However, the code is currently limited to 3x3x3 weights.root-config
.
+ Array
members find_max(), find_min(), sum(), sum_positivie()
.
+ Enabled OpenMP for Array
members find_max(), find_min(), sum(), sum_positive()
.
root-config
.
- max_rd
.
+ The output of simulate_PET_data_for_tests.sh can now be varied by setting environment variables, e.g.
+ max_rd
. (Do not forget to unset those variables afterwards!)