cuda_set_cacheconfig();
}
-void gpu_upload_shiftvec(NbnxmGpu* nb, const nbnxn_atomdata_t* nbatom)
-{
- NBAtomData* adat = nb->atdat;
- const DeviceStream& localStream = *nb->deviceStreams[InteractionLocality::Local];
-
- /* only if we have a dynamic box */
- if (nbatom->bDynamicBox || !adat->shiftVecUploaded)
- {
- static_assert(sizeof(adat->shiftVec[0]) == sizeof(nbatom->shift_vec[0]),
- "Sizes of host- and device-side shift vectors should be the same.");
- copyToDeviceBuffer(&adat->shiftVec,
- reinterpret_cast<const Float3*>(nbatom->shift_vec.data()),
- 0,
- SHIFTS,
- localStream,
- GpuApiCallBehavior::Async,
- nullptr);
- adat->shiftVecUploaded = true;
- }
-}
-
void gpu_free(NbnxmGpu* nb)
{
if (nb == nullptr)
#include "nbnxm_gpu_data_mgmt.h"
#include "gromacs/gpu_utils/device_stream_manager.h"
+#include "gromacs/gpu_utils/gputraits.h"
#include "gromacs/gpu_utils/pmalloc.h"
#include "gromacs/hardware/device_information.h"
#include "gromacs/mdtypes/interaction_const.h"
return nb;
}
+void gpu_upload_shiftvec(NbnxmGpu* nb, const nbnxn_atomdata_t* nbatom)
+{
+ NBAtomData* adat = nb->atdat;
+ const DeviceStream& localStream = *nb->deviceStreams[InteractionLocality::Local];
+
+ /* only if we have a dynamic box */
+ if (nbatom->bDynamicBox || !adat->shiftVecUploaded)
+ {
+ copyToDeviceBuffer(&adat->shiftVec,
+ gmx::asGenericFloat3Pointer(nbatom->shift_vec),
+ 0,
+ SHIFTS,
+ localStream,
+ GpuApiCallBehavior::Async,
+ nullptr);
+ adat->shiftVecUploaded = true;
+ }
+}
+
//! This function is documented in the header file
void gpu_init_pairlist(NbnxmGpu* nb, const NbnxnPairlistGpu* h_plist, const InteractionLocality iloc)
{
nbnxn_gpu_init_kernels(nb);
}
-//! This function is documented in the header file
-void gpu_upload_shiftvec(NbnxmGpu* nb, const nbnxn_atomdata_t* nbatom)
-{
- NBAtomData* adat = nb->atdat;
- const DeviceStream& localStream = *nb->deviceStreams[InteractionLocality::Local];
-
- /* only if we have a dynamic box */
- if (nbatom->bDynamicBox || !adat->shiftVecUploaded)
- {
- static_assert(sizeof(Float3) == sizeof(nbatom->shift_vec[0]),
- "Sizes of host- and device-side shift vectors should be the same.");
- copyToDeviceBuffer(&adat->shiftVec,
- reinterpret_cast<const Float3*>(nbatom->shift_vec.data()),
- 0,
- SHIFTS,
- localStream,
- GpuApiCallBehavior::Async,
- nullptr);
- adat->shiftVecUploaded = true;
- }
-}
-
/*! \brief Releases an OpenCL kernel pointer */
static void free_kernel(cl_kernel* kernel_ptr)
{
// Nothing specific in SYCL
}
-void gpu_upload_shiftvec(NbnxmGpu* nb, const nbnxn_atomdata_t* nbatom)
-{
- NBAtomData* adat = nb->atdat;
- const DeviceStream& localStream = *nb->deviceStreams[InteractionLocality::Local];
-
- /* only if we have a dynamic box */
- if (nbatom->bDynamicBox || !adat->shiftVecUploaded)
- {
- GMX_ASSERT(adat->shiftVec.elementSize() == sizeof(nbatom->shift_vec[0]),
- "Sizes of host- and device-side shift vectors should be the same.");
- copyToDeviceBuffer(&adat->shiftVec,
- reinterpret_cast<const Float3*>(nbatom->shift_vec.data()),
- 0,
- SHIFTS,
- localStream,
- GpuApiCallBehavior::Async,
- nullptr);
- adat->shiftVecUploaded = true;
- }
-}
-
void gpu_free(NbnxmGpu* nb)
{
if (nb == nullptr)