在C中,用schedule(static)
并行化一个循环意味着块大小被快速计算为ceil
(loops/threads)
。
对于我的项目,我必须排列9种不同的块大小,其中之一是“默认”。我就是这样做的:
我编写了一个perl循环,用-DCHUNKSIZE=$c
编译程序,并在omp
代码中指定schedule(static, CHUNKSIZE)
。
问:我能为违约做些什么?0的块大小不起作用:(
谢谢!
附笔。
我希望避免有#ifdef ... #else ... #endif
,因为我有很多并行的循环
最佳答案
我同意ejd。至于如何处理,为什么不:
#ifdef CHUNKSIZE
#pragma omp parallel for schedule(mode, CHUNKSIZE)
#else
#pragma omp parallel for schedule(mode)
#endif
for ( ; ; ) /* ... */
然后不通过默认值的
-DCHUNKSIZE
。