针对任务间特殊跨步骤依赖关系的高效处理方案咨询
针对任务间特殊跨步骤依赖关系的高效处理方案咨询
各位大佬好!我最近在处理一个任务负载的问题,情况是这样的:我的工作负载由一系列任务构成,每个任务都可以拆分成k个步骤。目前存在一个依赖关系——第i个任务的第j步,必须等待第i-1个任务的第j步完成之后才能执行。
我本来打算用流水线来处理这个逻辑,为了避免伪共享,还特意把每个阶段都对齐到缓存行的大小。现在写了个初步的代码片段,不过还没完成:
void pipe(uint64_t j) { uint64_t pred = 0; for (uint64_t i = 1; i <= n; i++) { if (j > 0) { while (pred < i) { pred = load_consume(&pipes_[j-1].stage); } } // 后续的当前步骤处理逻辑还未补充 } }
我想请教一下,针对这种特殊的跨任务同步骤依赖的流水线场景,有没有更高效的实现思路?比如在同步机制、缓存优化或者任务调度方面,有没有可以进一步优化的地方?
内容来源于stack exchange
相关产品推荐
相关产品推荐

