我编写了一个c ++ openmp代码,它在并行区域中有一个动态分配的内存私有变量,该区域在while循环中.在每个循环中,在并行区域的末尾释放动态分配的内存.我在每次分配和释放后通过linux机器上的/ proc/self/stat文件监视内存.我发现驻留集大小的内存较少.为什么会这样?代码是这样的 -
float *dynm;
while(condition)
{
pragma omp parallel shared(list of variables) private(dynm)
{
read_values_from_/proc/self/stat_print_rss;
dynm = new float[size];
read_values_from_/proc/self/stat_print_rss;
pragma omp for schedule(static, chunk) nowait
for(counter)
{
do_operation;
}
delete []dynm;
read_values_from_/proc/self/stat_print_rss;
}
}
Run Code Online (Sandbox Code Playgroud)