From 53230c9b61ca004c5eec794e3f2a43a91d5b40ee Mon Sep 17 00:00:00 2001 From: jpekkila Date: Thu, 5 Sep 2019 19:56:04 +0300 Subject: [PATCH] Added errorchecking and more flexibility the the new acDeviceLoadScalarArray function --- include/astaroth_device.h | 4 ++-- src/core/device.cu | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/astaroth_device.h b/include/astaroth_device.h index 7a800c2..6ce7cda 100644 --- a/include/astaroth_device.h +++ b/include/astaroth_device.h @@ -63,8 +63,8 @@ AcResult acDeviceLoadInt3Constant(const Device device, const Stream stream, cons /** */ AcResult acDeviceLoadScalarArray(const Device device, const Stream stream, - const ScalarArrayHandle handle, const AcReal* data, - const size_t num); + const ScalarArrayHandle handle, const size_t start, + const AcReal* data, const size_t num); /** */ AcResult acDeviceLoadMeshInfo(const Device device, const Stream stream, diff --git a/src/core/device.cu b/src/core/device.cu index 33229b8..b5d3ebb 100644 --- a/src/core/device.cu +++ b/src/core/device.cu @@ -449,10 +449,15 @@ acDeviceLoadInt3Constant(const Device device, const Stream stream, const AcInt3P AcResult acDeviceLoadScalarArray(const Device device, const Stream stream, const ScalarArrayHandle handle, - const AcReal* data, const size_t num) + const size_t start, const AcReal* data, const size_t num) { cudaSetDevice(device->id); - ERRCHK_CUDA(cudaMemcpyAsync(device->vba.profiles[handle], data, sizeof(data[0]) * num, + + ERRCHK(start + num <= max(device->local_config.int_params[AC_mx], + max(device->local_config.int_params[AC_my], + device->local_config.int_params[AC_mz]))); + + ERRCHK_CUDA(cudaMemcpyAsync(&device->vba.profiles[handle][start], data, sizeof(data[0]) * num, cudaMemcpyHostToDevice, device->streams[stream])); return AC_SUCCESS; }