From 33cf72e73cbe2f8fc254453f64f2035a02682b0b Mon Sep 17 00:00:00 2001 From: Mark Abraham Date: Mon, 27 Jan 2020 07:54:05 +0100 Subject: [PATCH] Remove element-size member fields These are compile-time constants, and there is no need to store them in variables. Change-Id: Ib94fbc479b031c4d4034355123a8ff0cf333c74f --- src/gromacs/nbnxm/opencl/nbnxm_ocl.cpp | 7 ++++--- .../nbnxm/opencl/nbnxm_ocl_data_mgmt.cpp | 18 ++++-------------- src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h | 6 ------ 3 files changed, 8 insertions(+), 23 deletions(-) diff --git a/src/gromacs/nbnxm/opencl/nbnxm_ocl.cpp b/src/gromacs/nbnxm/opencl/nbnxm_ocl.cpp index f4c291ce7c..9da920db76 100644 --- a/src/gromacs/nbnxm/opencl/nbnxm_ocl.cpp +++ b/src/gromacs/nbnxm/opencl/nbnxm_ocl.cpp @@ -888,8 +888,9 @@ void gpu_launch_cpyback(NbnxmGpu* nb, } /* DtoH f */ - ocl_copy_D2H_async(nbatom->out[0].f.data() + adat_begin * 3, adat->f, - adat_begin * 3 * sizeof(float), (adat_len)*adat->f_elem_size, stream, + ocl_copy_D2H_async(nbatom->out[0].f.data() + adat_begin * DIM, adat->f, + adat_begin * DIM * sizeof(nbatom->out[0].f[0]), + adat_len * DIM * sizeof(nbatom->out[0].f[0]), stream, bDoTime ? t->xf[aloc].nb_d2h.fetchNextEvent() : nullptr); /* kick off work */ @@ -913,7 +914,7 @@ void gpu_launch_cpyback(NbnxmGpu* nb, /* DtoH fshift when virial is needed */ if (stepWork.computeVirial) { - ocl_copy_D2H_async(nb->nbst.fshift, adat->fshift, 0, SHIFTS * adat->fshift_elem_size, + ocl_copy_D2H_async(nb->nbst.fshift, adat->fshift, 0, SHIFTS * sizeof(nb->nbst.fshift[0]), stream, bDoTime ? t->xf[aloc].nb_d2h.fetchNextEvent() : nullptr); } diff --git a/src/gromacs/nbnxm/opencl/nbnxm_ocl_data_mgmt.cpp b/src/gromacs/nbnxm/opencl/nbnxm_ocl_data_mgmt.cpp index f8822ae31d..fe53ddf9c4 100644 --- a/src/gromacs/nbnxm/opencl/nbnxm_ocl_data_mgmt.cpp +++ b/src/gromacs/nbnxm/opencl/nbnxm_ocl_data_mgmt.cpp @@ -158,22 +158,14 @@ static void init_atomdata_first(cl_atomdata_t* ad, int ntypes, gmx_device_runtim ad->ntypes = ntypes; - /* An element of the shift_vec device buffer has the same size as one element - of the host side shift_vec buffer. */ - ad->shift_vec_elem_size = sizeof(*nbnxn_atomdata_t::shift_vec.data()); - ad->shift_vec = clCreateBuffer(runData->context, CL_MEM_READ_ONLY | CL_MEM_HOST_WRITE_ONLY, - SHIFTS * ad->shift_vec_elem_size, nullptr, &cl_error); + SHIFTS * sizeof(nbnxn_atomdata_t::shift_vec[0]), nullptr, &cl_error); GMX_RELEASE_ASSERT(cl_error == CL_SUCCESS, ("clCreateBuffer failed: " + ocl_get_error_string(cl_error)).c_str()); ad->bShiftVecUploaded = CL_FALSE; - /* An element of the fshift device buffer has the same size as one element - of the host side fshift buffer. */ - ad->fshift_elem_size = sizeof(*nb_staging_t::fshift); - ad->fshift = clCreateBuffer(runData->context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - SHIFTS * ad->fshift_elem_size, nullptr, &cl_error); + SHIFTS * sizeof(nb_staging_t::fshift[0]), nullptr, &cl_error); GMX_RELEASE_ASSERT(cl_error == CL_SUCCESS, ("clCreateBuffer failed: " + ocl_get_error_string(cl_error)).c_str()); @@ -834,7 +826,7 @@ void gpu_upload_shiftvec(NbnxmGpu* nb, const nbnxn_atomdata_t* nbatom) if (nbatom->bDynamicBox || !adat->bShiftVecUploaded) { ocl_copy_H2D_async(adat->shift_vec, nbatom->shift_vec.data(), 0, - SHIFTS * adat->shift_vec_elem_size, ls, nullptr); + SHIFTS * sizeof(nbatom->shift_vec[0]), ls, nullptr); adat->bShiftVecUploaded = CL_TRUE; } } @@ -874,10 +866,8 @@ void gpu_init_atomdata(NbnxmGpu* nb, const nbnxn_atomdata_t* nbat) freeDeviceBuffer(&d_atdat->atom_types); } - d_atdat->f_elem_size = sizeof(rvec); - d_atdat->f = clCreateBuffer(nb->dev_rundata->context, CL_MEM_READ_WRITE | CL_MEM_HOST_READ_ONLY, - nalloc * d_atdat->f_elem_size, nullptr, &cl_error); + nalloc * DIM * sizeof(nbat->out[0].f[0]), nullptr, &cl_error); GMX_RELEASE_ASSERT(cl_error == CL_SUCCESS, ("clCreateBuffer failed: " + ocl_get_error_string(cl_error)).c_str()); diff --git a/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h b/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h index a9379eea8f..7ae0526851 100644 --- a/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h +++ b/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h @@ -180,8 +180,6 @@ typedef struct cl_atomdata //! float3 buffer with force output array, size natoms cl_mem f; - //! Size in bytes for one element of f buffer - size_t f_elem_size; //! LJ energy output, size 1 cl_mem e_lj; @@ -190,8 +188,6 @@ typedef struct cl_atomdata //! float3 buffer with shift forces cl_mem fshift; - //! Size in bytes for one element of fshift buffer - size_t fshift_elem_size; //! number of atom types int ntypes; @@ -202,8 +198,6 @@ typedef struct cl_atomdata //! float3 buffer with shifts values cl_mem shift_vec; - //! Size in bytes for one element of shift_vec buffer - size_t shift_vec_elem_size; //! true if the shift vector has been uploaded bool bShiftVecUploaded; -- 2.22.0