diff --git a/documentation/release_6.4.htm b/documentation/release_6.4.htm
index dd3647470..2a2b979cb 100644
--- a/documentation/release_6.4.htm
+++ b/documentation/release_6.4.htm
@@ -65,7 +65,7 @@
Changed functionality
-
Compatibility with libparallelproj 2.0 and usage of CUDA managed pointers via
- CuVec for internal variables in our parallelproj interface and
CudaGibbsPenalty.
+ CuVec for internal variables in our parallelproj interface and CudaGibbsPenalty.
This results in a ~20% speed-up, but also code simplification.
PR #1689.
diff --git a/src/include/stir/cuda_utilities.h b/src/include/stir/cuda_utilities.h
index be7f11e88..d5ec02727 100644
--- a/src/include/stir/cuda_utilities.h
+++ b/src/include/stir/cuda_utilities.h
@@ -87,6 +87,7 @@ template
inline void
array_to_device(CuVec& dev_data, const Array& stir_array)
{
+ dev_data.resize(stir_array.size_all());
std::copy(stir_array.begin_all(), stir_array.end_all(), dev_data.begin());
}
@@ -127,6 +128,8 @@ array_to_host(Array& stir_array, const CuVec& dev_
{
if (sync)
cudaDeviceSynchronize();
+ if (stir_array.size_all() != dev_data.size())
+ error("array_to_host: size mismatch between CuVec and Array");
std::copy(dev_data.begin(), dev_data.end(), stir_array.begin_all());
}