是否可以为openMP名称创建预处理器别名?
IE
#define #myParallel #pragma omp parallel for
#define #myBarrier #pragma omp barrier
出于
的目的#ifdef MY_LIB_DISABLE_OPENMP
#define #myParallel
#define #myBarrier
#else
#define #myParallel #pragma omp parallel for
#define #myBarrier #pragma omp barrier
#endif
我有两个库都使用openmp。第一个库(并行化)调用第二个库(也是并行化)的函数,我相信它会导致指数量的线程。我希望能够禁用第二个库openmp调用。 (这两个lib都是我的,所以我可能会修补)。
唯一的另一个解决方案是复制/粘贴包裹在#ifdef #else
中的大块代码,但这看起来非常低效/非常不优雅。
答案 0 :(得分:1)
OpenMP运行时不太可能创建指数数量的线程。
更简单的选择是构建自己的库的两个版本
并链接到最适合的库。
注意C
在使用OpenMP标志(例如_OPENMP
和-fopenmp
)调用时定义GCC
宏,如果其他所有内容都失败,您可以使用它。
答案 1 :(得分:0)
您有多种选择