是否可以为openMP名称创建预处理别名?
即
#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调用。(这两个库都是我的,所以我可以修补一下)。
唯一的另一种解决方案是复制/粘贴包装在#ifdef #else中的大量代码,但这似乎非常低效/非常不优雅。
发布于 2018-03-25 10:57:16
OpenMP运行时不太可能创建指数级数量的线程。
一种更简单的方法是构建自己的库的两个版本
并链接到最适合的库。
注C在使用_OPENMP标志调用时定义了OpenMP宏(例如,带有GCC的-fopenmp ),如果其他一切都失败了,您可以使用它。
发布于 2018-03-26 16:19:01
您有多种选择
https://stackoverflow.com/questions/49469969
复制相似问题