Line data Source code
1 : /**
2 : * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3 : * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4 : * CANN Open Software License Agreement Version 2.0 (the "License").
5 : * Please refer to the License for details. You may not use this file except in compliance with the License.
6 : * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7 : * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8 : * See LICENSE in the root of the software repository for the full text of the License.
9 : */
10 :
11 : #ifndef HCCLV2_INS_RULES_H
12 : #define HCCLV2_INS_RULES_H
13 :
14 : #include "communicator_impl.h"
15 : #include "instruction.h"
16 : #include "task.h"
17 : #include "ccu_ins.h"
18 : #include "ccu_ins_group.h"
19 : #include "aicpu_ins.h"
20 : #include "aiv/aiv_ins/aiv_ins.h"
21 :
22 : namespace Hccl {
23 :
24 : void Interpret(
25 : const InsLocalPostTo& insLocalPostTo, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
26 :
27 : void Interpret(
28 : const InsLocalWaitFrom& insLocalWaitFrom, CommunicatorImpl& comm, const Stream& stream,
29 : const OpTaskConfig& taskConfig);
30 :
31 : void Interpret(
32 : const InsLocalWaitGroup& insLocalWaitGroup, CommunicatorImpl& comm, const Stream& stream,
33 : const OpTaskConfig& taskConfig);
34 :
35 : void Interpret(
36 : const InsLocalBcastPost& insLocalBcastPost, CommunicatorImpl& comm, const Stream& stream,
37 : const OpTaskConfig& taskConfig);
38 :
39 : void Interpret(
40 : const InsLocalCopy& insLocalCopy, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
41 :
42 : void Interpret(
43 : const InsLocalReduce& insLocalReduce, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
44 :
45 : void Interpret(
46 : const InsPostReady& insPostReady, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
47 :
48 : void Interpret(
49 : const InsWaitReady& insWaitReady, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
50 :
51 : void Interpret(
52 : const InsPostFin& insPostFin, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
53 :
54 : void Interpret(
55 : const InsWaitFin& insWaitFin, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
56 :
57 : void Interpret(
58 : const InsWaitGroupFin& insWaitGroupFin, CommunicatorImpl& comm, const Stream& stream,
59 : const OpTaskConfig& taskConfig);
60 :
61 : void Interpret(
62 : const InsPostFinAck& insPostFinAck, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
63 :
64 : void Interpret(
65 : const InsWaitFinAck& insWaitFinAck, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
66 :
67 : void Interpret(const InsRead& insRead, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
68 :
69 : void Interpret(const InsWrite& insWrite, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
70 :
71 : void Interpret(
72 : const InsReadReduce& insReadReduce, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
73 :
74 : void Interpret(
75 : const InsWriteReduce& insWriteReduce, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
76 :
77 : void Interpret(
78 : const InsWriteWithFin& insWriteWithFin, CommunicatorImpl& comm, const Stream& stream,
79 : const OpTaskConfig& taskConfig);
80 :
81 : void Interpret(
82 : const InsWriteReduceWithFin& insWriteReduceWithFin, CommunicatorImpl& comm, const Stream& stream,
83 : const OpTaskConfig& taskConfig);
84 :
85 : void Interpret(
86 : const CcuInstruction& ccuInstruction, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig);
87 :
88 : void Interpret(
89 : const AicpuInstruction& aicpuInstruction, CommunicatorImpl& comm, const Stream& stream,
90 : const OpTaskConfig& taskConfig);
91 :
92 : void Interpret(
93 : const AivInstruction& aivInstruction, const CommunicatorImpl& comm, const Stream& stream,
94 : const OpTaskConfig& taskConfig);
95 :
96 : template <typename INS_TYPE>
97 220 : Interpreter::InsRule GetInsRule()
98 : {
99 232 : return [](const Instruction& ins, CommunicatorImpl& comm, const Stream& stream, const OpTaskConfig& taskConfig) {
100 6 : Interpret(static_cast<const INS_TYPE&>(ins), comm, stream, taskConfig);
101 220 : };
102 : }
103 :
104 : } // namespace Hccl
105 :
106 : #endif // HCCLV2_INS_RULES_H
|