-fopenmp 提供什么预处理器定义?
What preprocessor define does -fopenmp provide?
我有一些代码可以 运行 使用(或不使用)OpenMP - 这取决于用户如何设置 makefile。如果他们想 运行 使用 OpenMP,那么他们只需将 -fopenmp
添加到 CFLAGS
和 CXXFLAGS
.
我正在尝试确定可以使用哪个预处理器宏来判断 -fopenmp
何时生效。 omp.h
header 看起来不是很有趣:
$ cat /usr/lib/gcc/x86_64-linux-gnu/4.8/include/omp.h | grep define
#define OMP_H 1
#define _LIBGOMP_OMP_LOCK_DEFINED 1
# define __GOMP_NOTHROW throw ()
# define __GOMP_NOTHROW __attribute__((__nothrow__))
而且我无法让预处理器提供任何有用的信息:
$ cpp -dM -fopenmp </dev/null | grep -i omp
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __STDC_IEC_559_COMPLEX__ 1
$ cpp -dM -fopenmp </dev/null | grep -i version
#define __GXX_ABI_VERSION 1002
#define __VERSION__ "4.8.2"
-fopenmp
提供什么预处理器定义?
这类似于 How to tell if OpenMP is working? 但我对编译时间感兴趣,而不是 post-build 或 运行 时间。
注意:本项目没有使用Boost,没有使用Autotools,也没有使用Cmake。它只是使用一个 makefile。
您的 grep 过于具体,您应该查找 "openmp"。
或者更确切地说,比较 cpp -dM -fopenmp </dev/null
和 cpp -dM </dev/null
会产生一个差异:
#define _OPENMP 201107
这应该正是您要找的。
我有一些代码可以 运行 使用(或不使用)OpenMP - 这取决于用户如何设置 makefile。如果他们想 运行 使用 OpenMP,那么他们只需将 -fopenmp
添加到 CFLAGS
和 CXXFLAGS
.
我正在尝试确定可以使用哪个预处理器宏来判断 -fopenmp
何时生效。 omp.h
header 看起来不是很有趣:
$ cat /usr/lib/gcc/x86_64-linux-gnu/4.8/include/omp.h | grep define
#define OMP_H 1
#define _LIBGOMP_OMP_LOCK_DEFINED 1
# define __GOMP_NOTHROW throw ()
# define __GOMP_NOTHROW __attribute__((__nothrow__))
而且我无法让预处理器提供任何有用的信息:
$ cpp -dM -fopenmp </dev/null | grep -i omp
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __STDC_IEC_559_COMPLEX__ 1
$ cpp -dM -fopenmp </dev/null | grep -i version
#define __GXX_ABI_VERSION 1002
#define __VERSION__ "4.8.2"
-fopenmp
提供什么预处理器定义?
这类似于 How to tell if OpenMP is working? 但我对编译时间感兴趣,而不是 post-build 或 运行 时间。
注意:本项目没有使用Boost,没有使用Autotools,也没有使用Cmake。它只是使用一个 makefile。
您的 grep 过于具体,您应该查找 "openmp"。
或者更确切地说,比较 cpp -dM -fopenmp </dev/null
和 cpp -dM </dev/null
会产生一个差异:
#define _OPENMP 201107
这应该正是您要找的。