tbb::parallel_for
size の間隔で消費したいデータセットがありますinterval_size
。私のファンクターが消費する各間隔は、データセットが均等に分割されていないinterval_size
場合は小さくなる可能性がある最後の部分間隔を除いて、 である必要があります。interval_size
TBB を使用してこの方法で静的に分割する方法はありますか? interval_size
このテストでは、私のシステムよりも小さいいくつかの間隔が生成されます。
#include <tbb/parallel_for.h>
#include <iostream>
struct body
{
void operator()(const tbb::blocked_range<size_t> &r) const
{
std::cout << "range size: " << r.end() - r.begin() << std::endl;
}
};
int main()
{
size_t num_intervals = 4;
size_t interval_size = 3;
// consume num_intervals plus a partial interval in total
size_t n = num_intervals * interval_size + (interval_size - 1);
tbb::parallel_for(tbb::blocked_range<size_t>(0, n, interval_size),
body(),
tbb::simple_partitioner());
return 0;
}
出力:
$ g++ test_parallel_for.cpp -ltbb
$ ./a.out
range size: 3
range size: 2
range size: 2
range size: 3
range size: 2
range size: 2