19#ifndef __stir_recon_buildblock_CUDA_CudaGibbsPenalty_H__
20#define __stir_recon_buildblock_CUDA_CudaGibbsPenalty_H__
50template <
typename elemT,
typename PotentialT>
63 int threads_per_block;
64 size_t shared_mem_bytes;
66 mutable CuVec<elemT> d_image_data;
68 cuda_int3 d_image_dim;
69 cuda_int3 d_image_max_indices;
70 cuda_int3 d_image_min_indices;
71 cuda_int3 d_weight_max_indices;
72 cuda_int3 d_weight_min_indices;
75 CuVec<float> d_weights_data;
76 CuVec<elemT> d_kappa_data;
79 mutable CuVec<double> d_scalar;
81 mutable CuVec<elemT> d_input_data;
83 mutable CuVec<elemT> d_output_data;
89 CudaGibbsPenalty(
const bool only_2D,
float penalization_factor);
125# include "stir/recon_buildblock/CUDA/CudaGibbsPenalty.cuh"
defines the stir::Array class for multi-dimensional (numeric) arrays
defines the stir::DiscretisedDensity class
Declaration of the stir::GibbsPenalty class.
This class defines multi-dimensional (numeric) arrays.
Definition Array.h:78
void compute_Hessian_diagonal(DiscretisedDensity< 3, elemT > &Hessian_diagonal, const DiscretisedDensity< 3, elemT > ¤t_estimate) const override
CUDA-accelerated Hessian diagonal computation.
double compute_value(const DiscretisedDensity< 3, elemT > ¤t_image_estimate) override
CUDA-accelerated value computation.
void set_weights(const Array< 3, float > &w) override
Set the weights array for the prior on the GPU.
double compute_gradient_times_input(const DiscretisedDensity< 3, elemT > &input, const DiscretisedDensity< 3, elemT > ¤t_image_estimate) override
CUDA-accelerated gradient dot input computation.
void compute_gradient(DiscretisedDensity< 3, elemT > &prior_gradient, const DiscretisedDensity< 3, elemT > ¤t_image_estimate) override
CUDA-accelerated gradient computation.
void accumulate_Hessian_times_input(DiscretisedDensity< 3, elemT > &output, const DiscretisedDensity< 3, elemT > ¤t_image_estimate, const DiscretisedDensity< 3, elemT > &input) const override
CUDA-accelerated Hessian times input computation.
void set_kappa_sptr(const shared_ptr< const DiscretisedDensity< 3, elemT > > &k) override
Set the kappa image (spatially-varying penalty factors) on the GPU.
Succeeded set_up(shared_ptr< const DiscretisedDensity< 3, elemT > > const &target_sptr) override
Override CPU version to set up CUDA resources on GPU and call parent set_up.
This abstract class is the basis for all image representations.
Definition DiscretisedDensity.h:99
bool only_2D
Definition GibbsPenalty.h:173
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44
some utilities for STIR and CUDA
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...