]> 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>
Tue, 11 Jan 2022 18:03:39 +0000 (12:03 -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 0a10940d1ef9bfa09039fcfe888a2d829742b844..3b91149a893035ef37bb74409b18dda5c4bd35b7 100644 (file)
@@ -53,6 +53,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
 
@@ -2269,4 +2287,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 0c987505d912fdc494aaef693bae546203623fd4..0338a3e4238ba87695a6e8559d4bba5a6f671e14 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.