Unverified Commit bb5552c0 authored by Anton Gorenko's avatar Anton Gorenko Committed by GitHub
Browse files

Fix uninitialized buffers in QTB (#5163)

adaptFrictionPart1 is executed first, it reads randomForce and
segmentVelocity buffers before other kernels write them so they can
contain garbage after allocation (cuMemAlloc/hipMalloc/clCreateBuffer
do not clear allocated memory).
parent 762d822e
...@@ -51,7 +51,9 @@ void CommonIntegrateQTBStepKernel::initialize(const System& system, const QTBInt ...@@ -51,7 +51,9 @@ void CommonIntegrateQTBStepKernel::initialize(const System& system, const QTBInt
noise.upload(noiseVec); noise.upload(noiseVec);
int elementSize = (cc.getUseMixedPrecision() || cc.getUseDoublePrecision() ? sizeof(double) : sizeof(float)); int elementSize = (cc.getUseMixedPrecision() || cc.getUseDoublePrecision() ? sizeof(double) : sizeof(float));
randomForce.initialize(cc, 3*segmentLength*numParticles, elementSize, "randomForce"); randomForce.initialize(cc, 3*segmentLength*numParticles, elementSize, "randomForce");
cc.clearBuffer(randomForce);
segmentVelocity.initialize(cc, 3*segmentLength*numParticles, elementSize, "segmentVelocity"); segmentVelocity.initialize(cc, 3*segmentLength*numParticles, elementSize, "segmentVelocity");
cc.clearBuffer(segmentVelocity);
oldDelta.initialize(cc, cc.getPaddedNumAtoms(), 4*elementSize, "oldDelta"); oldDelta.initialize(cc, cc.getPaddedNumAtoms(), 4*elementSize, "oldDelta");
thetad.initialize(cc, numFreq, elementSize, "thetad"); thetad.initialize(cc, numFreq, elementSize, "thetad");
workspace.initialize(cc, 18*segmentLength*cc.getNumThreadBlocks(), elementSize, "workspace"); workspace.initialize(cc, 18*segmentLength*cc.getNumThreadBlocks(), elementSize, "workspace");
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment