From: Matthias Maier Date: Thu, 6 Jan 2022 13:13:41 +0000 (-0600) Subject: port workstream.h to oneAPI X-Git-Tag: v9.4.0-rc1~659^2~1 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b28144222864f00a68768333719683a9c5c1883;p=dealii.git port workstream.h to oneAPI --- diff --git a/include/deal.II/base/work_stream.h b/include/deal.II/base/work_stream.h index 210cffd85a..30f09e6bfe 100644 --- a/include/deal.II/base/work_stream.h +++ b/include/deal.II/base/work_stream.h @@ -499,7 +499,12 @@ namespace WorkStream sample_scratch_data, sample_copy_data); auto tbb_item_stream_filter = tbb::make_filter( - tbb::filter::serial, [&](tbb::flow_control &fc) -> ItemType * { +# ifdef DEAL_II_TBB_WITH_ONEAPI + tbb::filter_mode::serial_in_order, +# else + tbb::filter::serial, +# endif + [&](tbb::flow_control &fc) -> ItemType * { if (const auto item = iterator_range_to_item_stream.get_item()) return item; else @@ -515,7 +520,11 @@ namespace WorkStream // The second stage is the one that does the actual work. This is the // stage that runs in parallel auto tbb_worker_filter = tbb::make_filter( +# ifdef DEAL_II_TBB_WITH_ONEAPI + tbb::filter_mode::parallel, +# else tbb::filter::parallel, +# endif [worker = std::function( worker), @@ -608,7 +617,11 @@ namespace WorkStream // The last stage is the one that copies data from the CopyData objects // to the final destination. This stage runs sequentially again. auto tbb_copier_filter = tbb::make_filter( +# ifdef DEAL_II_TBB_WITH_ONEAPI + tbb::filter_mode::serial_in_order, +# else tbb::filter::serial, +# endif [copier = std::function(copier)]( ItemType *current_item) { if (copier)