内存分配和首次访问

面向英特尔® MIC 架构的编译器方法

内存分配和首次访问

相对至强而言,协处理器的内存分配成本较高——因此尽可能重复使用已非配的内存是非常明智的。例如,如果某函数被重复调用(假设在循环内),并且该函数使用数组作为临时存储,尝试初次分配足够大的数组(所需的最大大小),并在后续调用中重复使用该数组:

static real *temp_array=0;

void foo(..) {
          ...
if (temp_array == 0) {
    temp_array = my_malloc(MAX_SIZE);
}
... // use of temp_array
}

同时,请牢记在首次访问时 Linux 上的物理内存进行分配(而不是在 malloc-point)。因此,如果您的循环遍历访问已分配内存(但未访问)的数组,第一次迭代可能比其余迭代需要更长的时间。

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.