在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

10-06 08:34