Open Qmin  0.8.0
GPU-accelerated Q-tensor-based liquid crystal simulations
Functions
updater Kernels

CUDA kernels and callers for updater classes. More...

Functions

__global__ void gpu_adam_step_kernel (dVec *force, dVec *biasedMomentum, dVec *biasedMomentum2, dVec *correctedMomentum, dVec *correctedMomentum2, dVec *displacement, scalar deltaT, scalar beta1, scalar beta2, scalar beta1t, scalar beta2t, int N)
 
bool gpu_adam_step (dVec *force, dVec *biasedMomentum, dVec *biasedMomentum2, dVec *correctedMomentum, dVec *correctedMomentum2, dVec *displacement, scalar deltaT, scalar beta1, scalar beta2, scalar beta1t, scalar beta2t, int N, int blockSize)
 run an adam minimization step More...
 
__global__ void gpu_update_velocity_FIRE_kernel (dVec *d_velocity, dVec *d_force, scalar alpha, scalar scaling, int N)
 
bool gpu_update_velocity_FIRE (dVec *d_velocity, dVec *d_force, scalar alpha, scalar scaling, int N)
 velocity = (1-a)velocity +a*scaling*force More...
 
__global__ void gpu_nesterovAG_step_kernel (dVec *force, dVec *position, dVec *alternatePosition, scalar deltaT, scalar mu, int N)
 
bool gpu_nesterovAG_step (dVec *force, dVec *position, dVec *alternatePosition, scalar deltaT, scalar mu, int N, int blockSize)
 run an adam minimization step More...
 
__global__ void gpu_update_velocity_kernel (dVec *d_velocity, dVec *d_force, scalar deltaT, int N)
 
__global__ void gpu_displacement_vv_kernel (dVec *d_displacement, dVec *d_velocity, dVec *d_force, scalar deltaT, int N)
 
bool gpu_update_velocity (dVec *d_velocity, dVec *d_force, scalar deltaT, int N)
 velocity = velocity +0.5*deltaT*force More...
 
bool gpu_displacement_velocity_verlet (dVec *d_displacement, dVec *d_velocity, dVec *d_force, scalar deltaT, int N)
 displacement = dt*velocity + 0.5*dt^2*force More...
 

Detailed Description

CUDA kernels and callers for updater classes.

CUDA kernels and callers.

Function Documentation

◆ gpu_adam_step_kernel()

__global__ void gpu_adam_step_kernel ( dVec *  force,
dVec *  biasedMomentum,
dVec *  biasedMomentum2,
dVec *  correctedMomentum,
dVec *  correctedMomentum2,
dVec *  displacement,
scalar  deltaT,
scalar  beta1,
scalar  beta2,
scalar  beta1t,
scalar  beta2t,
int  N 
)

References idx, and scalar.

◆ gpu_adam_step()

bool gpu_adam_step ( dVec *  force,
dVec *  biasedMomentum,
dVec *  biasedMomentum2,
dVec *  correctedMomentum,
dVec *  correctedMomentum2,
dVec *  displacement,
scalar  deltaT,
scalar  beta1,
scalar  beta2,
scalar  beta1t,
scalar  beta2t,
int  N,
int  blockSize 
)

run an adam minimization step

A memory-efficiency optimization has each thread acting on one dimension of one degree of freedom...

References HANDLE_ERROR.

Referenced by energyMinimizerAdam::adamStepGPU().

◆ gpu_update_velocity_FIRE_kernel()

__global__ void gpu_update_velocity_FIRE_kernel ( dVec *  d_velocity,
dVec *  d_force,
scalar  alpha,
scalar  scaling,
int  N 
)

update the velocity according to a FIRE step

References idx.

◆ gpu_update_velocity_FIRE()

bool gpu_update_velocity_FIRE ( dVec *  d_velocity,
dVec *  d_force,
scalar  alpha,
scalar  scaling,
int  N 
)

velocity = (1-a)velocity +a*scaling*force

Parameters
d_velocityarray of velocity
d_forcearray of force
alphathe FIRE parameter
scalingthe square root of (v.v / f.f)
Nthe length of the arrays
Postcondition
v = (1-alpha)v + alpha*scalaing*force

References HANDLE_ERROR.

Referenced by energyMinimizerFIRE::fireStepGPU().

◆ gpu_nesterovAG_step_kernel()

__global__ void gpu_nesterovAG_step_kernel ( dVec *  force,
dVec *  position,
dVec *  alternatePosition,
scalar  deltaT,
scalar  mu,
int  N 
)

References idx, and scalar.

◆ gpu_nesterovAG_step()

bool gpu_nesterovAG_step ( dVec *  force,
dVec *  position,
dVec *  alternatePosition,
scalar  deltaT,
scalar  mu,
int  N,
int  blockSize 
)

run an adam minimization step

A memory-efficiency optimization has each thread acting on one dimension of one degree of freedom...

References HANDLE_ERROR.

Referenced by energyMinimizerNesterovAG::nesterovStepGPU().

◆ gpu_update_velocity_kernel()

__global__ void gpu_update_velocity_kernel ( dVec *  d_velocity,
dVec *  d_force,
scalar  deltaT,
int  N 
)

update the velocity in a velocity Verlet step

References idx.

◆ gpu_displacement_vv_kernel()

__global__ void gpu_displacement_vv_kernel ( dVec *  d_displacement,
dVec *  d_velocity,
dVec *  d_force,
scalar  deltaT,
int  N 
)

calculate the displacement in a velocity verlet step according to the force and velocity also updates the velocity for this half of the timestep

References idx.

◆ gpu_update_velocity()

bool gpu_update_velocity ( dVec *  d_velocity,
dVec *  d_force,
scalar  deltaT,
int  N 
)

velocity = velocity +0.5*deltaT*force

Parameters
d_velocitydVec array of velocity
d_forcedVec array of force
d_massscalar array of mass
deltaTtime step
Nthe length of the arrays
Postcondition
v = v + 0.5*deltaT*force

References HANDLE_ERROR.

Referenced by velocityVerlet::integrateEOMGPU().

◆ gpu_displacement_velocity_verlet()

bool gpu_displacement_velocity_verlet ( dVec *  d_displacement,
dVec *  d_velocity,
dVec *  d_force,
scalar  deltaT,
int  N 
)

displacement = dt*velocity + 0.5*dt^2*force

Parameters
d_displacementdVec array of displacements
d_velocitydVec array of velocities
d_forcedVec array of forces
d_massscalar array of mass
deltaTtime step
Nthe length of the arrays
Postcondition
displacement = dt*velocity + 0.5 *dt^2*force

References HANDLE_ERROR.

Referenced by velocityVerlet::integrateEOMGPU().