I’m trying to send some objects to my device and i have to do so using a “for-loop” and its creating close to about 200 MB of allocated host memory. I see this happening in my task manager. I do not have any control over it or address to free it as well. What is happening here
//allocate memory for matrices on device
CudaSafeCall(cudaMalloc((void**)&d_mMat,M));
CudaSafeCall(cudaMalloc((void**)&d_mVec,M));
CudaSafeCall(cudaMalloc((void**)&d_f6Mat,F6));
CudaSafeCall(cudaMalloc((void**)&d_f6Vec,F6));
//Sending Matrix objects
CudaSafeCall(cudaMemcpy(d_mMat,src->cudaMissile.MAT,M,kind));
CudaSafeCall(cudaMemcpy(d_mVec,src->cudaMissile.VEC,M,kind));
CudaSafeCall(cudaMemcpy(d_f6Mat,src->cudaFlat6.MAT,F6,kind));
CudaSafeCall(cudaMemcpy(d_f6Vec,src->cudaFlat6.VEC,F6,kind));
for(int i = 0;i<num_missile*NMISSILE;i++)
{
CudaSafeCall(cudaMalloc((void**)&pbody_mm,9*sizeof(cudap)));
CudaSafeCall(cudaMalloc((void**)&pbody_mv,3*sizeof(cudap)));
CudaSafeCall(cudaMemcpy(pbody_mm,src->cudaMissile.MAT[i].pbody,9*sizeof(cudap),kind));
CudaSafeCall(cudaMemcpy(pbody_mv,src->cudaMissile.VEC[i].pbody,3*sizeof(cudap),kind));
CudaSafeCall(cudaMemcpy(&(d_mMat[i].pbody),&(pbody_mm),sizeof(cudap*),kind));
CudaSafeCall(cudaMemcpy(&(d_mVec[i].pbody),&(pbody_mv),sizeof(cudap*),kind));
}