我对介子和C很陌生,如果这个问题的答案很琐碎,请原谅我......
我想在 C 项目中使用 OpenMP,并且我使用介子作为构建工具。
我想编译parallel for
本教程中的示例。我的main.c
看起来很相似:
#include <omp.h>
#define N 1000
#define CHUNKSIZE 100
int main(int argc, char *argv[]) {
int i, chunk;
float a[N], b[N], c[N];
/* Some initializations */
for (i=0; i < N; i++)
a[i] = b[i] = i * 1.0;
chunk = CHUNKSIZE;
#pragma omp parallel for \
shared(a,b,c,chunk) private(i) \
schedule(static,chunk)
for (i=0; i < N; i++)
c[i] = a[i] + b[i];
return 0;
}
我的短meson.build
文件包含以下内容:
project('openmp_with_meson', 'c')
# add_project_arguments('-fopenmp', language: 'c')
exe = executable('some_exe', 'src/main.c') #, c_args: '-fopenmp')
c_args
我在此处的调用中注释掉了关键字executable
。
现在我结束了以下场景:
- 如果没有
'-fopenmp'
选项,我会收到警告,即pragma
未知并将被忽略(如我所料):../src/main.c:15:0: warning: ignoring pragma omp parallel [-Wunknown-pragmas] #pragma omp parallel for
- 插入选项
c_args: '-fopenmp'
后,我不再收到上述警告,而是收到未定义的对GOMP_parallel
,omp_get_num_threads
和引用的错误omp_get_thread_num
,并且没有构建任何内容 - 当我手动使用 gcc
gcc -Wall -o manually_with_gcc ../src/main.c -fopenmp
程序编译并执行时没有任何错误。
谁能告诉我如何让可执行文件与介子一起编译?