kernelParams_.electrostaticsScaleFactor = electrostaticsScaleFactor;
kernelParams_.d_forceParams = d_forceParams_;
- kernelParams_.d_xq = d_xq_;
- kernelParams_.d_f = d_f_;
- kernelParams_.d_fShift = d_fShift_;
kernelParams_.d_vTot = d_vTot_;
for (int i = 0; i < numFTypesOnGpu; i++)
{
d_f_ = asFloat3(d_fPtr);
d_fShift_ = asFloat3(d_fShiftPtr);
- kernelParams_.d_xq = d_xq_;
- kernelParams_.d_f = d_f_;
- kernelParams_.d_fShift = d_fShift_;
kernelParams_.d_forceParams = d_forceParams_;
kernelParams_.d_vTot = d_vTot_;
//! Force parameters (on GPU)
t_iparams* d_forceParams;
- //! Coordinates before the timestep (on GPU)
- const float4* d_xq;
- //! Forces on atoms (on GPU)
- float3* d_f;
- //! Force shifts on atoms (on GPU)
- float3* d_fShift;
//! Total Energy (on GPU)
float* d_vTot;
//! Interaction list atoms (on GPU)
electrostaticsScaleFactor = 1.0;
d_forceParams = nullptr;
- d_xq = nullptr;
- d_f = nullptr;
- d_fShift = nullptr;
d_vTot = nullptr;
}
};
{
template<bool calcVir, bool calcEner>
-__global__ void exec_kernel_gpu(BondedCudaKernelParameters kernelParams)
+__global__ void exec_kernel_gpu(BondedCudaKernelParameters kernelParams, float4* gm_xq, float3* gm_f, float3* gm_fShift)
{
assert(blockDim.y == 1 && blockDim.z == 1);
const int tid = blockIdx.x * blockDim.x + threadIdx.x;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc);
break;
numBonds,
iatoms,
kernelParams.d_forceParams,
- kernelParams.d_xq,
- kernelParams.d_f,
+ gm_xq,
+ gm_f,
sm_fShiftLoc,
kernelParams.pbcAiuc,
kernelParams.electrostaticsScaleFactor,
__syncthreads();
if (threadIdx.x < c_numShiftVectors)
{
- atomicAdd(kernelParams.d_fShift[threadIdx.x], sm_fShiftLoc[threadIdx.x]);
+ atomicAdd(gm_fShift[threadIdx.x], sm_fShiftLoc[threadIdx.x]);
}
}
}
auto kernelPtr = exec_kernel_gpu<calcVir, calcEner>;
- const auto kernelArgs = prepareGpuKernelArguments(kernelPtr, kernelLaunchConfig_, &kernelParams_);
+ const auto kernelArgs = prepareGpuKernelArguments(
+ kernelPtr, kernelLaunchConfig_, &kernelParams_, &d_xq_, &d_f_, &d_fShift_);
launchGpuKernel(kernelPtr,
kernelLaunchConfig_,