【发布时间】:2017-11-28 09:28:34
【问题描述】:
我有一个用于添加的示例 C 程序。当我使用 GCC 编译和运行它时,它只使用一个 CPU 内核。
有没有办法编译一个C程序,让它可以使用Linux中的所有CPU内核。
我以前编译喜欢gcc -O3 malloc.c
代码:
#include <stdio.h>
#include <time.h>
#include <malloc.h>
int main() {
float *ptr;
unsigned long long i;
ptr = (float*) malloc(8000000000 * sizeof(float));
for(i=0; i<8000000000; i++) {
ptr[i] = i/10000;
}
clock_t tic = clock();
for(i=0; i<8000000000; i++) {
ptr[i] = (i/10000)+1.0;
}
clock_t toc = clock();
printf("Elapsed: %f seconds\n", (double)(toc - tic) / CLOCKS_PER_SEC);
return 0;
}
【问题讨论】:
-
如果你使用 make buildtool 那么你可以使用 -j 标志,你可以同时工作。对于 4 个核心,您可以像
make -j4这样给出,这是您的要求吗? -
<malloc.h>是非标准的,可能已被弃用。使用<stdlib.h> -
@LethalProgrammer:
make -j在构建时相关,而不是在运行时 -
@BasileStarynkevitch,我不确定 OP 要求什么,这就是为什么我只是提出这个问题来澄清。如果他想在运行时执行此操作,那么我同意您使用
make毫无意义。 -
我的适应就像拨动开关一样简单,为什么不默认开启?