28 #ifndef SPLA_SCHEDULE_TASKS_HPP
29 #define SPLA_SCHEDULE_TASKS_HPP
52 const std::string&
get_label()
const override;
71 std::vector<ref_ptr<Object>>
get_args()
override;
87 std::vector<ref_ptr<Object>>
get_args()
override;
106 std::string
get_key()
override;
108 std::vector<ref_ptr<Object>>
get_args()
override;
129 std::string
get_key()
override;
131 std::vector<ref_ptr<Object>>
get_args()
override;
148 std::string
get_key()
override;
150 std::vector<ref_ptr<Object>>
get_args()
override;
171 std::string
get_key()
override;
173 std::vector<ref_ptr<Object>>
get_args()
override;
194 std::string
get_key()
override;
196 std::vector<ref_ptr<Object>>
get_args()
override;
213 std::string
get_key()
override;
215 std::vector<ref_ptr<Object>>
get_args()
override;
232 std::string
get_key()
override;
234 std::vector<ref_ptr<Object>>
get_args()
override;
251 std::string
get_key()
override;
253 std::vector<ref_ptr<Object>>
get_args()
override;
270 std::string
get_key()
override;
272 std::vector<ref_ptr<Object>>
get_args()
override;
289 std::string
get_key()
override;
291 std::vector<ref_ptr<Object>>
get_args()
override;
307 std::string
get_key()
override;
309 std::vector<ref_ptr<Object>>
get_args()
override;
326 std::string
get_key()
override;
328 std::vector<ref_ptr<Object>>
get_args()
override;
345 std::string
get_key()
override;
347 std::vector<ref_ptr<Object>>
get_args()
override;
364 std::string
get_key()
override;
366 std::vector<ref_ptr<Object>>
get_args()
override;
383 std::string
get_key()
override;
385 std::vector<ref_ptr<Object>>
get_args()
override;
402 std::string
get_key()
override;
404 std::vector<ref_ptr<Object>>
get_args()
override;
422 std::string
get_key()
override;
424 std::vector<ref_ptr<Object>>
get_args()
override;
440 std::string
get_key()
override;
442 std::vector<ref_ptr<Object>>
get_args()
override;
459 std::string
get_key()
override;
461 std::vector<ref_ptr<Object>>
get_args()
override;
Callback function which can be scheduled in schedule.
Base schedule task class with common public properties.
Definition: schedule_tasks.hpp:47
const std::string & get_label() const override
Definition: schedule_tasks.cpp:39
void set_label(std::string label) override
Definition: schedule_tasks.cpp:36
ref_ptr< Descriptor > desc
Definition: schedule_tasks.hpp:57
ref_ptr< Descriptor > get_desc() override
Definition: schedule_tasks.cpp:43
std::string label
Definition: schedule_tasks.hpp:56
ref_ptr< Descriptor > get_desc_or_default() override
Definition: schedule_tasks.cpp:47
~ScheduleTaskBase() override=default
Callback task.
Definition: schedule_tasks.hpp:64
ScheduleCallback callback
Definition: schedule_tasks.hpp:73
std::string get_key() override
Definition: schedule_tasks.cpp:55
std::string get_name() override
Definition: schedule_tasks.cpp:52
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:61
~ScheduleTask_callback() override=default
std::string get_key_full() override
Definition: schedule_tasks.cpp:58
Sparse matrix kronecker product.
Definition: schedule_tasks.hpp:124
std::string get_key_full() override
Definition: schedule_tasks.cpp:120
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:133
~ScheduleTask_kron() override=default
ref_ptr< Matrix > A
Definition: schedule_tasks.hpp:134
std::string get_name() override
Definition: schedule_tasks.cpp:110
ref_ptr< OpBinary > op_multiply
Definition: schedule_tasks.hpp:136
std::string get_key() override
Definition: schedule_tasks.cpp:113
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:127
ref_ptr< Matrix > B
Definition: schedule_tasks.hpp:135
Matrix ewise add.
Definition: schedule_tasks.hpp:189
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:194
ref_ptr< OpBinary > op
Definition: schedule_tasks.hpp:201
std::string get_name() override
Definition: schedule_tasks.cpp:177
ref_ptr< Matrix > A
Definition: schedule_tasks.hpp:199
std::string get_key() override
Definition: schedule_tasks.cpp:180
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:198
~ScheduleTask_m_eadd() override=default
std::string get_key_full() override
Definition: schedule_tasks.cpp:187
ref_ptr< Matrix > B
Definition: schedule_tasks.hpp:200
Matrix ewise add.
Definition: schedule_tasks.hpp:208
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:215
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:217
std::string get_name() override
Definition: schedule_tasks.cpp:198
ref_ptr< OpBinary > op
Definition: schedule_tasks.hpp:220
std::string get_key() override
Definition: schedule_tasks.cpp:201
ref_ptr< Matrix > B
Definition: schedule_tasks.hpp:219
std::string get_key_full() override
Definition: schedule_tasks.cpp:208
~ScheduleTask_m_emult() override=default
ref_ptr< Matrix > A
Definition: schedule_tasks.hpp:218
Matrix extract vector.
Definition: schedule_tasks.hpp:321
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:331
uint index
Definition: schedule_tasks.hpp:332
ref_ptr< OpUnary > op_apply
Definition: schedule_tasks.hpp:333
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:341
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:330
std::string get_name() override
Definition: schedule_tasks.cpp:324
std::string get_key_full() override
Definition: schedule_tasks.cpp:334
~ScheduleTask_m_extract_column() override=default
std::string get_key() override
Definition: schedule_tasks.cpp:327
Matrix by col reduction.
Definition: schedule_tasks.hpp:246
std::string get_key() override
Definition: schedule_tasks.cpp:243
std::string get_name() override
Definition: schedule_tasks.cpp:240
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:255
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:256
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:257
ref_ptr< OpBinary > op_reduce
Definition: schedule_tasks.hpp:257
~ScheduleTask_m_reduce_by_column() override=default
std::string get_key_full() override
Definition: schedule_tasks.cpp:250
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:258
Matrix by row reduction.
Definition: schedule_tasks.hpp:227
std::string get_key_full() override
Definition: schedule_tasks.cpp:229
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:236
std::string get_name() override
Definition: schedule_tasks.cpp:219
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:236
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:239
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:237
~ScheduleTask_m_reduce_by_row() override=default
std::string get_key() override
Definition: schedule_tasks.cpp:222
ref_ptr< OpBinary > op_reduce
Definition: schedule_tasks.hpp:238
Matrix reduction to scalar.
Definition: schedule_tasks.hpp:265
ref_ptr< Scalar > r
Definition: schedule_tasks.hpp:274
ref_ptr< OpBinary > op_reduce
Definition: schedule_tasks.hpp:277
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:276
ref_ptr< Scalar > s
Definition: schedule_tasks.hpp:275
~ScheduleTask_m_reduce() override=default
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:278
std::string get_name() override
Definition: schedule_tasks.cpp:261
std::string get_key() override
Definition: schedule_tasks.cpp:264
std::string get_key_full() override
Definition: schedule_tasks.cpp:271
Matrix transpose.
Definition: schedule_tasks.hpp:284
~ScheduleTask_m_transpose() override=default
std::string get_key() override
Definition: schedule_tasks.cpp:285
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:294
std::string get_name() override
Definition: schedule_tasks.cpp:282
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:293
ref_ptr< OpUnary > op_apply
Definition: schedule_tasks.hpp:295
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:299
std::string get_key_full() override
Definition: schedule_tasks.cpp:292
Masked matrix matrix-transposed product.
Definition: schedule_tasks.hpp:101
std::string get_key_full() override
Definition: schedule_tasks.cpp:97
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:110
ref_ptr< Matrix > A
Definition: schedule_tasks.hpp:112
ref_ptr< OpBinary > op_add
Definition: schedule_tasks.hpp:115
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:117
std::string get_name() override
Definition: schedule_tasks.cpp:87
~ScheduleTask_mxmT_masked() override=default
ref_ptr< Matrix > mask
Definition: schedule_tasks.hpp:111
ref_ptr< Matrix > B
Definition: schedule_tasks.hpp:113
std::string get_key() override
Definition: schedule_tasks.cpp:90
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:106
ref_ptr< OpBinary > op_multiply
Definition: schedule_tasks.hpp:114
ref_ptr< OpSelect > op_select
Definition: schedule_tasks.hpp:116
Sparse matrix sparse matrix product.
Definition: schedule_tasks.hpp:80
ref_ptr< OpBinary > op_add
Definition: schedule_tasks.hpp:93
ref_ptr< Matrix > R
Definition: schedule_tasks.hpp:89
std::string get_key_full() override
Definition: schedule_tasks.cpp:75
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:83
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:94
std::string get_key() override
Definition: schedule_tasks.cpp:68
ref_ptr< Matrix > B
Definition: schedule_tasks.hpp:91
ref_ptr< Matrix > A
Definition: schedule_tasks.hpp:90
ref_ptr< OpBinary > op_multiply
Definition: schedule_tasks.hpp:92
std::string get_name() override
Definition: schedule_tasks.cpp:65
~ScheduleTask_mxm() override=default
Masked matrix-vector product.
Definition: schedule_tasks.hpp:143
ref_ptr< OpSelect > op_select
Definition: schedule_tasks.hpp:158
~ScheduleTask_mxv_masked() override=default
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:150
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:152
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:159
std::string get_key() override
Definition: schedule_tasks.cpp:134
std::string get_key_full() override
Definition: schedule_tasks.cpp:141
ref_ptr< OpBinary > op_multiply
Definition: schedule_tasks.hpp:156
ref_ptr< OpBinary > op_add
Definition: schedule_tasks.hpp:157
ref_ptr< Vector > mask
Definition: schedule_tasks.hpp:153
std::string get_name() override
Definition: schedule_tasks.cpp:131
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:155
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:154
Masked vector assignment.
Definition: schedule_tasks.hpp:397
ref_ptr< Scalar > value
Definition: schedule_tasks.hpp:408
ref_ptr< Vector > mask
Definition: schedule_tasks.hpp:407
ref_ptr< OpSelect > op_select
Definition: schedule_tasks.hpp:410
std::string get_key() override
Definition: schedule_tasks.cpp:411
~ScheduleTask_v_assign_masked() override=default
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:426
std::string get_name() override
Definition: schedule_tasks.cpp:408
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:406
std::string get_key_full() override
Definition: schedule_tasks.cpp:418
ref_ptr< OpBinary > op_assign
Definition: schedule_tasks.hpp:409
Vector count meaningful elements.
Definition: schedule_tasks.hpp:454
~ScheduleTask_v_count_mf() override=default
std::string get_key() override
Definition: schedule_tasks.cpp:475
std::string get_name() override
Definition: schedule_tasks.cpp:472
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:464
std::string get_key_full() override
Definition: schedule_tasks.cpp:482
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:489
ref_ptr< Scalar > r
Definition: schedule_tasks.hpp:463
Vector ewise with feedback.
Definition: schedule_tasks.hpp:378
std::string get_name() override
Definition: schedule_tasks.cpp:387
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:387
std::string get_key() override
Definition: schedule_tasks.cpp:390
ref_ptr< Vector > fdb
Definition: schedule_tasks.hpp:389
ref_ptr< OpBinary > op
Definition: schedule_tasks.hpp:390
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:404
std::string get_key_full() override
Definition: schedule_tasks.cpp:397
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:388
~ScheduleTask_v_eadd_fdb() override=default
Vector ewise add.
Definition: schedule_tasks.hpp:340
std::string get_name() override
Definition: schedule_tasks.cpp:345
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:351
ref_ptr< OpBinary > op
Definition: schedule_tasks.hpp:352
std::string get_key_full() override
Definition: schedule_tasks.cpp:355
std::string get_key() override
Definition: schedule_tasks.cpp:348
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:362
~ScheduleTask_v_eadd() override=default
ref_ptr< Vector > u
Definition: schedule_tasks.hpp:350
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:349
Vector ewise mult.
Definition: schedule_tasks.hpp:359
ref_ptr< Vector > u
Definition: schedule_tasks.hpp:369
ref_ptr< OpBinary > op
Definition: schedule_tasks.hpp:371
std::string get_key() override
Definition: schedule_tasks.cpp:369
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:368
std::string get_key_full() override
Definition: schedule_tasks.cpp:376
std::string get_name() override
Definition: schedule_tasks.cpp:366
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:370
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:383
~ScheduleTask_v_emult() override=default
Vector map to vector.
Definition: schedule_tasks.hpp:417
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:427
std::string get_key_full() override
Definition: schedule_tasks.cpp:440
~ScheduleTask_v_map() override=default
std::string get_name() override
Definition: schedule_tasks.cpp:430
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:426
ref_ptr< OpUnary > op
Definition: schedule_tasks.hpp:428
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:447
std::string get_key() override
Definition: schedule_tasks.cpp:433
Vector reduction to scalar.
Definition: schedule_tasks.hpp:435
std::string get_key() override
Definition: schedule_tasks.cpp:454
ref_ptr< Scalar > r
Definition: schedule_tasks.hpp:444
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:446
~ScheduleTask_v_reduce() override=default
std::string get_name() override
Definition: schedule_tasks.cpp:451
std::string get_key_full() override
Definition: schedule_tasks.cpp:461
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:468
ref_ptr< Scalar > s
Definition: schedule_tasks.hpp:445
ref_ptr< OpBinary > op_reduce
Definition: schedule_tasks.hpp:447
Masked vector-matrix product.
Definition: schedule_tasks.hpp:166
ref_ptr< Vector > mask
Definition: schedule_tasks.hpp:176
ref_ptr< Vector > v
Definition: schedule_tasks.hpp:177
std::string get_key_full() override
Definition: schedule_tasks.cpp:164
ref_ptr< OpBinary > op_multiply
Definition: schedule_tasks.hpp:179
ref_ptr< Matrix > M
Definition: schedule_tasks.hpp:178
ref_ptr< OpSelect > op_select
Definition: schedule_tasks.hpp:181
std::vector< ref_ptr< Object > > get_args() override
Definition: schedule_tasks.cpp:173
ref_ptr< OpBinary > op_add
Definition: schedule_tasks.hpp:180
ref_ptr< Scalar > init
Definition: schedule_tasks.hpp:182
ref_ptr< Vector > r
Definition: schedule_tasks.hpp:175
std::string get_name() override
Definition: schedule_tasks.cpp:154
std::string get_key() override
Definition: schedule_tasks.cpp:157
~ScheduleTask_vxm_masked() override=default
Represent single smallest evaluation tasks which can scheduled.
Definition: schedule.hpp:49
Automates reference counting and behaves as shared smart pointer.
Definition: ref.hpp:117
std::uint32_t uint
Library index and size type.
Definition: config.hpp:56
Definition: algorithm.hpp:37