]> https://gitweb.dealii.org/ - dealii.git/commitdiff
disable threading in task_info.cc for oneAPI
authorMatthias Maier <tamiko@43-1.org>
Thu, 6 Jan 2022 14:35:14 +0000 (08:35 -0600)
committerMatthias Maier <tamiko@43-1.org>
Wed, 12 Jan 2022 10:19:38 +0000 (04:19 -0600)
TBB with oneAPI API has deprecated and removed the
<code>tbb::tasks</code> backend. With this it is no longer possible to
compile the following code that builds a directed acyclic graph (DAG) of
(thread parallel) tasks without a major porting effort. It turned out
that such a dynamic handling of dependencies and structures is not as
competitive as initially assumed. Consequently, this part of the matrix
free infrastructure has seen less attention than the rest over the last
years and is (presumably) rarely used.

So in case of detected oneAPI backend we simply disable threading in the
matrix free backend for now.

doc/news/changes/minor/20220106BangerthMaier
include/deal.II/matrix_free/matrix_free.templates.h
source/matrix_free/task_info.cc

index ef8c2e7982337867e0a49fed1234a0669957d3eb..5b75e8638a3d04ce1ce2fd9a6e71214835d27a4d 100644 (file)
@@ -1,4 +1,7 @@
 Fixed: deal.II has been updated to support the new OneAPI api interface
-introduced by the Intel Threading Building Blocks Library.
+introduced by the Intel Threading Building Blocks Library. Note that the
+threading support of the matrix-free backend will be disabled in this case:
+For now, the MatrixFree::AdditionalData::tasks_parallel_scheme control has
+no effect and simply defaults to the serial loop.
 <br>
 (Wolfgang Bangerth, Matthias Maier, 2022/01/06)
index 953195557bf8bdbabff6b4ae7eda68298635831b..333b4d76c161db6994388e2e3dc1e2ee32c93fb9 100644 (file)
@@ -52,6 +52,24 @@ DEAL_II_ENABLE_EXTRA_DIAGNOSTICS
 
 #include <fstream>
 
+//
+// TBB with oneAPI API has deprecated and removed the
+// <code>tbb::tasks</code> backend. With this it is no longer possible to
+// compile the following code that builds a directed acyclic graph (DAG) of
+// (thread parallel) tasks without a major porting effort. It turned out
+// that such a dynamic handling of dependencies and structures is not as
+// competitive as initially assumed. Consequently, this part of the matrix
+// free infrastructure has seen less attention than the rest over the last
+// years and is (presumably) not used that often.
+//
+// In case of detected oneAPI backend we simply disable threading in the
+// matrix free backend for now.
+//
+// Matthias Maier, Martin Kronbichler, 2021
+//
+#ifdef DEAL_II_TBB_WITH_ONEAPI
+#  undef DEAL_II_WITH_TBB
+#endif
 
 DEAL_II_NAMESPACE_OPEN
 
@@ -2183,4 +2201,8 @@ MatrixFree<dim, Number, VectorizedArrayType>::print(std::ostream &out) const
 
 DEAL_II_NAMESPACE_CLOSE
 
+#ifdef DEAL_II_TBB_WITH_ONEAPI
+#  define DEAL_II_WITH_TBB
+#endif
+
 #endif
index 6fd05f036f7ff8a4d8012f0310718e3bc9b402ba..755d9fcde98cbe60191b1448cc10fc8141b1b449 100644 (file)
 #include <iostream>
 #include <set>
 
+//
+// TBB with oneAPI API has deprecated and removed the
+// <code>tbb::tasks</code> backend. With this it is no longer possible to
+// compile the following code that builds a directed acyclic graph (DAG) of
+// (thread parallel) tasks without a major porting effort. It turned out
+// that such a dynamic handling of dependencies and structures is not as
+// competitive as initially assumed. Consequently, this part of the matrix
+// free infrastructure has seen less attention than the rest over the last
+// years and is (presumably) not used that often.
+//
+// In case of detected oneAPI backend we simply disable threading in the
+// matrix free backend for now.
+//
+// Matthias Maier, Martin Kronbichler, 2021
+//
+#ifdef DEAL_II_TBB_WITH_ONEAPI
+#  undef DEAL_II_WITH_TBB
+#endif
+
 DEAL_II_NAMESPACE_OPEN
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.