@@ -172,7 +172,7 @@ void VolumeRestorationKernels<T>::restorationSigmaCostError(T& error, const std:
172172 const vec2_type<T>* __restrict__ d_fV1 = (vec2_type<T>*)_d_fV1;
173173 const vec2_type<T>* __restrict__ d_fV2 = (vec2_type<T>*)_d_fV2;
174174
175- auto error_func = [=] __device__ (int n) -> T {
175+ auto error_func = [=] __host__ __device__ (int n) -> T {
176176 const T R2n = d_R2[n];
177177 if (R2n <= 0.25 ) {
178178 const T H1 = exp (K1 * R2n);
@@ -195,7 +195,7 @@ void VolumeRestorationKernels<T>::restorationSigmaCostError(T& error, const std:
195195
196196template < typename T >
197197void VolumeRestorationKernels<T>::computeDiffAndAverage(const T* __restrict__ d_V1, const T* __restrict__ d_V2, T* __restrict__ d_S, T* __restrict__ d_N, size_t volume_size) {
198- auto k = [=] __device__ (int n) {
198+ auto k = [=] __host__ __device__ (int n) {
199199 d_N[n] = d_V1[n] - d_V2[n];
200200 d_S[n] = (d_V1[n] + d_V2[n]) * static_cast <T>(0.5 );
201201 };
@@ -222,7 +222,7 @@ template< typename T >
222222std::pair<T, T> VolumeRestorationKernels<T>::computeAvgStd(const T* __restrict__ d_N, size_t volume_size) {
223223 const T avg = thrust::reduce (thrust::device, d_N, d_N + volume_size);
224224
225- auto square_kernel = [=] __device__ (T x) -> T {
225+ auto square_kernel = [=] __host__ __device__ (T x) -> T {
226226 return x * x;
227227 };
228228
@@ -233,7 +233,7 @@ std::pair<T, T> VolumeRestorationKernels<T>::computeAvgStd(const T* __restrict__
233233
234234template < typename T >
235235std::pair<T, T> VolumeRestorationKernels<T>::computeAvgStdWithMask(const T* __restrict__ d_N, const int * __restrict__ d_mask, size_t mask_size, size_t volume_size) {
236- auto masked_k = [=] __device__ (int n) -> T {
236+ auto masked_k = [=] __host__ __device__ (int n) -> T {
237237 if (d_mask[n]) {
238238 return d_N[n];
239239 } else {
@@ -244,7 +244,7 @@ std::pair<T, T> VolumeRestorationKernels<T>::computeAvgStdWithMask(const T* __re
244244 const T avg = thrust::transform_reduce (thrust::device, thrust::counting_iterator<int >(0 ), thrust::counting_iterator<int >(volume_size), masked_k,
245245 static_cast <T>(0 ), thrust::plus<T>());
246246
247- auto masked_square_k = [=] __device__ (int n) -> T {
247+ auto masked_square_k = [=] __host__ __device__ (int n) -> T {
248248 if (d_mask[n]) {
249249 return d_N[n] * d_N[n];
250250 } else {
@@ -260,7 +260,7 @@ std::pair<T, T> VolumeRestorationKernels<T>::computeAvgStdWithMask(const T* __re
260260
261261template < typename T >
262262void VolumeRestorationKernels<T>::computeDifference(T* __restrict__ d_V1, T* __restrict__ d_V2, const T* __restrict__ d_S, const T* __restrict__ d_N, T k, size_t volume_size) {
263- auto ker = [=] __device__ (int n) {
263+ auto ker = [=] __host__ __device__ (int n) {
264264 const T Nn = d_N[n];
265265 const T w = exp (k * Nn * Nn);
266266 const T s = d_S[n];
@@ -278,7 +278,7 @@ size_t VolumeRestorationKernels<T>::computeMaskSize(const int* __restrict__ d_ma
278278
279279template < typename T >
280280void VolumeRestorationKernels<T>::multiplyByConstant(T* __restrict__ d_array, T c, size_t volume_size) {
281- auto k = [=] __device__ (int n) {
281+ auto k = [=] __host__ __device__ (int n) {
282282 d_array[n] = d_array[n] * c;
283283 };
284284
0 commit comments