Skip to content

Commit 42280e4

Browse files
committed
Annotate cholesky for use with apex/other
1 parent 2a2641a commit 42280e4

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

include/dlaf/factorization/cholesky/impl.h

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,19 @@ namespace dlaf {
3434
namespace factorization {
3535
namespace internal {
3636

37+
#ifdef PIKA_HAVE_APEX
38+
#define ANNOTATE(NAME) (priority == pika::execution::thread_priority::high ? "HP_" #NAME : #NAME)
39+
#else
40+
#define ANNOTATE(name) nullptr
41+
#endif
42+
3743
namespace cholesky_l {
44+
3845
template <Backend backend, class MatrixTileSender>
3946
void potrfDiagTile(pika::execution::thread_priority priority, MatrixTileSender&& matrix_tile) {
4047
pika::execution::experimental::start_detached(
4148
dlaf::internal::whenAllLift(blas::Uplo::Lower, std::forward<MatrixTileSender>(matrix_tile)) |
42-
tile::potrf(dlaf::internal::Policy<backend>(priority)));
49+
tile::potrf(dlaf::internal::Policy<backend>(priority, ANNOTATE(potrfDiagTile))));
4350
}
4451

4552
template <Backend backend, class KKTileSender, class MatrixTileSender>
@@ -52,7 +59,7 @@ void trsmPanelTile(pika::execution::thread_priority priority, KKTileSender&& kk_
5259
blas::Diag::NonUnit, ElementType(1.0),
5360
std::forward<KKTileSender>(kk_tile),
5461
std::forward<MatrixTileSender>(matrix_tile)) |
55-
tile::trsm(dlaf::internal::Policy<backend>(priority)));
62+
tile::trsm(dlaf::internal::Policy<backend>(priority, ANNOTATE(trsmPanelTile))));
5663
}
5764

5865
template <Backend backend, class PanelTileSender, class MatrixTileSender>
@@ -64,7 +71,7 @@ void herkTrailingDiagTile(pika::execution::thread_priority priority, PanelTileSe
6471
dlaf::internal::whenAllLift(blas::Uplo::Lower, blas::Op::NoTrans, BaseElementType(-1.0),
6572
std::forward<PanelTileSender>(panel_tile), BaseElementType(1.0),
6673
std::forward<MatrixTileSender>(matrix_tile)) |
67-
tile::herk(dlaf::internal::Policy<backend>(priority)));
74+
tile::herk(dlaf::internal::Policy<backend>(priority, ANNOTATE(herkTrailingDiagTile))));
6875
}
6976

7077
template <Backend backend, class PanelTileSender, class ColPanelSender, class MatrixTileSender>
@@ -77,7 +84,7 @@ void gemmTrailingMatrixTile(pika::execution::thread_priority priority, PanelTile
7784
std::forward<PanelTileSender>(panel_tile),
7885
std::forward<ColPanelSender>(col_panel), ElementType(1.0),
7986
std::forward<MatrixTileSender>(matrix_tile)) |
80-
tile::gemm(dlaf::internal::Policy<backend>(priority)));
87+
tile::gemm(dlaf::internal::Policy<backend>(priority, ANNOTATE(gemmTrailingMatrixTile))));
8188
}
8289
}
8390

@@ -86,7 +93,7 @@ template <Backend backend, class MatrixTileSender>
8693
void potrfDiagTile(pika::execution::thread_priority priority, MatrixTileSender&& matrix_tile) {
8794
pika::execution::experimental::start_detached(
8895
dlaf::internal::whenAllLift(blas::Uplo::Upper, std::forward<MatrixTileSender>(matrix_tile)) |
89-
tile::potrf(dlaf::internal::Policy<backend>(priority)));
96+
tile::potrf(dlaf::internal::Policy<backend>(priority, ANNOTATE(potrfDiagTile))));
9097
}
9198

9299
template <Backend backend, class KKTileSender, class MatrixTileSender>
@@ -99,7 +106,7 @@ void trsmPanelTile(pika::execution::thread_priority priority, KKTileSender&& kk_
99106
blas::Diag::NonUnit, ElementType(1.0),
100107
std::forward<KKTileSender>(kk_tile),
101108
std::forward<MatrixTileSender>(matrix_tile)) |
102-
tile::trsm(dlaf::internal::Policy<backend>(priority)));
109+
tile::trsm(dlaf::internal::Policy<backend>(priority, ANNOTATE(trsmPanelTile))));
103110
}
104111

105112
template <Backend backend, class PanelTileSender, class MatrixTileSender>
@@ -111,7 +118,7 @@ void herkTrailingDiagTile(pika::execution::thread_priority priority, PanelTileSe
111118
dlaf::internal::whenAllLift(blas::Uplo::Upper, blas::Op::ConjTrans, base_element_type(-1.0),
112119
std::forward<PanelTileSender>(panel_tile), base_element_type(1.0),
113120
std::forward<MatrixTileSender>(matrix_tile)) |
114-
tile::herk(dlaf::internal::Policy<backend>(priority)));
121+
tile::herk(dlaf::internal::Policy<backend>(priority, ANNOTATE(herkTrailingDiagTile))));
115122
}
116123

117124
template <Backend backend, class PanelTileSender, class ColPanelSender, class MatrixTileSender>
@@ -124,7 +131,7 @@ void gemmTrailingMatrixTile(pika::execution::thread_priority priority, PanelTile
124131
std::forward<PanelTileSender>(panel_tile),
125132
std::forward<ColPanelSender>(col_panel), ElementType(1.0),
126133
std::forward<MatrixTileSender>(matrix_tile)) |
127-
tile::gemm(dlaf::internal::Policy<backend>(priority)));
134+
tile::gemm(dlaf::internal::Policy<backend>(priority, ANNOTATE(gemmTrailingMatrixTile))));
128135
}
129136
}
130137

include/dlaf/sender/policy.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@ template <Backend B>
2424
class Policy {
2525
private:
2626
const pika::execution::thread_priority priority_ = pika::execution::thread_priority::normal;
27+
const char* annotation_ = nullptr;
2728

2829
public:
2930
Policy() = default;
30-
explicit Policy(pika::execution::thread_priority priority) : priority_(priority) {}
31+
explicit Policy(pika::execution::thread_priority priority, const char* annotation = nullptr)
32+
: priority_(priority), annotation_(annotation) {}
3133
Policy(Policy&&) = default;
3234
Policy(Policy const&) = default;
3335
Policy& operator=(Policy&&) = default;
@@ -36,6 +38,9 @@ class Policy {
3638
pika::execution::thread_priority priority() const noexcept {
3739
return priority_;
3840
}
41+
const char* annotation() const noexcept {
42+
return annotation_;
43+
}
3944
};
4045
}
4146
}

include/dlaf/sender/transform.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,14 @@ template <TransformDispatchType Tag = TransformDispatchType::Plain, Backend B =
5252
[[nodiscard]] decltype(auto) transform(const Policy<B> policy, F&& f, Sender&& sender) {
5353
using pika::execution::experimental::then;
5454
using pika::execution::experimental::transfer;
55+
using pika::execution::experimental::with_annotation;
5556

5657
auto scheduler = getBackendScheduler<B>(policy.priority());
57-
auto transfer_sender = transfer(std::forward<Sender>(sender), std::move(scheduler));
58-
5958
if constexpr (B == Backend::MC) {
59+
if (policy.annotation()) {
60+
scheduler = with_annotation(scheduler, policy.annotation());
61+
}
62+
auto transfer_sender = transfer(std::forward<Sender>(sender), std::move(scheduler));
6063
return then(std::move(transfer_sender), dlaf::common::internal::Unwrapping{std::forward<F>(f)});
6164
}
6265
else if constexpr (B == Backend::GPU) {

0 commit comments

Comments
 (0)