Skip to content

Commit 5f54dfc

Browse files
committed
Add type enums and stubbed logic across shared utils for future lifting
1 parent 02f625e commit 5f54dfc

File tree

6 files changed

+227
-0
lines changed

6 files changed

+227
-0
lines changed

projects/hipdnn/backend/include/HipdnnOperationType.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,15 @@ typedef enum
2828
HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD = 5, ///< Batch normalization backward pass
2929
HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE
3030
= 6, ///< Batch normalization inference with variance
31+
HIPDNN_OPERATION_TYPE_BATCHNORM = 7, ///< Batch normalization training forward
32+
HIPDNN_OPERATION_TYPE_POINTWISE = 8, ///< Pointwise operation
33+
HIPDNN_OPERATION_TYPE_MATMUL = 9, ///< Matrix multiplication
34+
HIPDNN_OPERATION_TYPE_RMSNORM = 10, ///< RMS normalization
35+
HIPDNN_OPERATION_TYPE_LAYERNORM = 11, ///< Layer normalization
36+
HIPDNN_OPERATION_TYPE_SDPA_FORWARD = 12, ///< Scaled dot-product attention forward
37+
HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE = 13, ///< Block scale quantization
38+
HIPDNN_OPERATION_TYPE_SDPA_BACKWARD = 14, ///< Scaled dot-product attention backward
39+
HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE = 15, ///< Block scale dequantization
40+
HIPDNN_OPERATION_TYPE_CUSTOM_OP = 16, ///< Custom operation
41+
HIPDNN_OPERATION_TYPE_REDUCTION = 17, ///< Reduction operation
3142
} hipdnnOperationType_t;

projects/hipdnn/backend/src/BackendEnumStringUtils.hpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "HipdnnDataType.h"
1414
#include "HipdnnDiagonalAlignment.h"
1515
#include "HipdnnNormFwdPhase.h"
16+
#include "HipdnnOperationType.h"
1617
#include "HipdnnPointwiseMode.h"
1718
#include "HipdnnStatus.h"
1819

@@ -660,6 +661,12 @@ inline const char* hipdnnGetAttributeNameString(hipdnnBackendAttributeName_t att
660661
case HIPDNN_ATTR_OPERATION_BATCHNORM_PEER_STATS_EXT:
661662
return "HIPDNN_ATTR_OPERATION_BATCHNORM_PEER_STATS_EXT";
662663

664+
// Operation extension attributes
665+
case HIPDNN_ATTR_OPERATION_TYPE_EXT:
666+
return "HIPDNN_ATTR_OPERATION_TYPE_EXT";
667+
case HIPDNN_ATTR_OPERATION_NAME_EXT:
668+
return "HIPDNN_ATTR_OPERATION_NAME_EXT";
669+
663670
// Extension API
664671
case HIPDNN_ATTR_KNOB_INFO_SERIALIZED_VALUE_EXT:
665672
return "HIPDNN_ATTR_KNOB_INFO_SERIALIZED_VALUE_EXT";
@@ -671,6 +678,51 @@ inline const char* hipdnnGetAttributeNameString(hipdnnBackendAttributeName_t att
671678
}
672679
}
673680

681+
inline const char* hipdnnGetOperationTypeString(hipdnnOperationType_t type)
682+
{
683+
switch(type)
684+
{
685+
case HIPDNN_OPERATION_TYPE_NOT_SET:
686+
return "HIPDNN_OPERATION_TYPE_NOT_SET";
687+
case HIPDNN_OPERATION_TYPE_CONVOLUTION_FORWARD:
688+
return "HIPDNN_OPERATION_TYPE_CONVOLUTION_FORWARD";
689+
case HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_DATA:
690+
return "HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_DATA";
691+
case HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_WEIGHTS:
692+
return "HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_WEIGHTS";
693+
case HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE:
694+
return "HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE";
695+
case HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD:
696+
return "HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD";
697+
case HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE:
698+
return "HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE";
699+
case HIPDNN_OPERATION_TYPE_BATCHNORM:
700+
return "HIPDNN_OPERATION_TYPE_BATCHNORM";
701+
case HIPDNN_OPERATION_TYPE_POINTWISE:
702+
return "HIPDNN_OPERATION_TYPE_POINTWISE";
703+
case HIPDNN_OPERATION_TYPE_MATMUL:
704+
return "HIPDNN_OPERATION_TYPE_MATMUL";
705+
case HIPDNN_OPERATION_TYPE_RMSNORM:
706+
return "HIPDNN_OPERATION_TYPE_RMSNORM";
707+
case HIPDNN_OPERATION_TYPE_LAYERNORM:
708+
return "HIPDNN_OPERATION_TYPE_LAYERNORM";
709+
case HIPDNN_OPERATION_TYPE_SDPA_FORWARD:
710+
return "HIPDNN_OPERATION_TYPE_SDPA_FORWARD";
711+
case HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE:
712+
return "HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE";
713+
case HIPDNN_OPERATION_TYPE_SDPA_BACKWARD:
714+
return "HIPDNN_OPERATION_TYPE_SDPA_BACKWARD";
715+
case HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE:
716+
return "HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE";
717+
case HIPDNN_OPERATION_TYPE_CUSTOM_OP:
718+
return "HIPDNN_OPERATION_TYPE_CUSTOM_OP";
719+
case HIPDNN_OPERATION_TYPE_REDUCTION:
720+
return "HIPDNN_OPERATION_TYPE_REDUCTION";
721+
default:
722+
return "HIPDNN_OPERATION_TYPE_UNKNOWN";
723+
}
724+
}
725+
674726
inline const char* hipdnnGetPluginLoadingModeString(hipdnnPluginLoadingMode_ext_t mode)
675727
{
676728
switch(mode)

projects/hipdnn/backend/src/descriptors/NodeFactory.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,37 @@ std::shared_ptr<IBackendDescriptor> NodeFactory::createOperationFromNode(
1717
{
1818
case NodeAttributes::ConvolutionFwdAttributes:
1919
return ConvolutionFwdOperationDescriptor::fromNode(nodeT, tensorMap);
20+
// Uncomment when fromNode() is implemented in the lifting PR:
21+
// case NodeAttributes::ConvolutionBwdAttributes:
22+
// return ConvolutionBwdOperationDescriptor::fromNode(nodeT, tensorMap);
23+
// case NodeAttributes::ConvolutionWrwAttributes:
24+
// return ConvolutionWrwOperationDescriptor::fromNode(nodeT, tensorMap);
25+
// case NodeAttributes::BatchnormInferenceAttributes:
26+
// return BatchnormInferenceOperationDescriptor::fromNode(nodeT, tensorMap);
27+
// case NodeAttributes::BatchnormBackwardAttributes:
28+
// return BatchnormBackwardOperationDescriptor::fromNode(nodeT, tensorMap);
29+
// case NodeAttributes::BatchnormInferenceAttributesVarianceExt:
30+
// return BatchnormInferenceVarianceExtOperationDescriptor::fromNode(nodeT, tensorMap);
31+
// case NodeAttributes::BatchnormAttributes:
32+
// return BatchnormOperationDescriptor::fromNode(nodeT, tensorMap);
33+
// case NodeAttributes::PointwiseAttributes:
34+
// return PointwiseOperationDescriptor::fromNode(nodeT, tensorMap);
35+
// case NodeAttributes::MatmulAttributes:
36+
// return MatmulOperationDescriptor::fromNode(nodeT, tensorMap);
37+
// case NodeAttributes::RMSNormAttributes:
38+
// return RMSNormOperationDescriptor::fromNode(nodeT, tensorMap);
39+
// case NodeAttributes::LayernormAttributes:
40+
// return LayernormOperationDescriptor::fromNode(nodeT, tensorMap);
41+
// case NodeAttributes::SdpaAttributes:
42+
// return SdpaFpropOperationDescriptor::fromNode(nodeT, tensorMap);
43+
// case NodeAttributes::BlockScaleQuantizeAttributes:
44+
// return BlockScaleQuantizeOperationDescriptor::fromNode(nodeT, tensorMap);
45+
// case NodeAttributes::BlockScaleDequantizeAttributes:
46+
// return BlockScaleDequantizeOperationDescriptor::fromNode(nodeT, tensorMap);
47+
// case NodeAttributes::SdpaBackwardAttributes:
48+
// return SdpaBackwardOperationDescriptor::fromNode(nodeT, tensorMap);
49+
// case NodeAttributes::CustomOpAttributes:
50+
// return CustomOpOperationDescriptor::fromNode(nodeT, tensorMap);
2051
default:
2152
throw HipdnnException(
2253
HIPDNN_STATUS_NOT_SUPPORTED,

projects/hipdnn/backend/src/descriptors/NodeFactory.hpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@
44
#pragma once
55

66
#include "ConvolutionFwdOperationDescriptor.hpp"
7+
// Uncomment when fromNode() is implemented in the lifting PR:
8+
// #include "BatchnormBackwardOperationDescriptor.hpp"
9+
// #include "BatchnormInferenceOperationDescriptor.hpp"
10+
// #include "BatchnormInferenceVarianceExtOperationDescriptor.hpp"
11+
// #include "BatchnormOperationDescriptor.hpp"
12+
// #include "BlockScaleDequantizeOperationDescriptor.hpp"
13+
// #include "BlockScaleQuantizeOperationDescriptor.hpp"
14+
// #include "ConvolutionBwdOperationDescriptor.hpp"
15+
// #include "ConvolutionWrwOperationDescriptor.hpp"
16+
// #include "CustomOpOperationDescriptor.hpp"
17+
// #include "LayernormOperationDescriptor.hpp"
18+
// #include "MatmulOperationDescriptor.hpp"
19+
// #include "PointwiseOperationDescriptor.hpp"
20+
// #include "RMSNormOperationDescriptor.hpp"
21+
// #include "SdpaBackwardOperationDescriptor.hpp"
22+
// #include "SdpaFpropOperationDescriptor.hpp"
723
#include "IGraphOperation.hpp"
824
#include "TensorDescriptor.hpp"
925
#include <hipdnn_data_sdk/data_objects/graph_generated.h>

projects/hipdnn/backend/tests/TestBackendEnumStringUtils.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,60 @@ TEST(TestBackendEnumStringUtils, GetBackendAttributeName)
535535
"HIPDNN_ATTR_BATCHNORM_MATH_PREC_EXT");
536536
EXPECT_STREQ(hipdnnGetAttributeNameString(HIPDNN_ATTR_OPERATION_BATCHNORM_PEER_STATS_EXT),
537537
"HIPDNN_ATTR_OPERATION_BATCHNORM_PEER_STATS_EXT");
538+
539+
// Operation extension attributes
540+
EXPECT_STREQ(hipdnnGetAttributeNameString(HIPDNN_ATTR_OPERATION_TYPE_EXT),
541+
"HIPDNN_ATTR_OPERATION_TYPE_EXT");
542+
EXPECT_STREQ(hipdnnGetAttributeNameString(HIPDNN_ATTR_OPERATION_NAME_EXT),
543+
"HIPDNN_ATTR_OPERATION_NAME_EXT");
544+
545+
// Unknown attribute
546+
EXPECT_STREQ(hipdnnGetAttributeNameString(static_cast<hipdnnBackendAttributeName_t>(-1)),
547+
"HIPDNN_ATTR_UNKNOWN");
548+
}
549+
550+
TEST(TestBackendEnumStringUtils, GetOperationTypeString)
551+
{
552+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_NOT_SET),
553+
"HIPDNN_OPERATION_TYPE_NOT_SET");
554+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_CONVOLUTION_FORWARD),
555+
"HIPDNN_OPERATION_TYPE_CONVOLUTION_FORWARD");
556+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_DATA),
557+
"HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_DATA");
558+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_WEIGHTS),
559+
"HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_WEIGHTS");
560+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE),
561+
"HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE");
562+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD),
563+
"HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD");
564+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE),
565+
"HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE");
566+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BATCHNORM),
567+
"HIPDNN_OPERATION_TYPE_BATCHNORM");
568+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_POINTWISE),
569+
"HIPDNN_OPERATION_TYPE_POINTWISE");
570+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_MATMUL),
571+
"HIPDNN_OPERATION_TYPE_MATMUL");
572+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_RMSNORM),
573+
"HIPDNN_OPERATION_TYPE_RMSNORM");
574+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_LAYERNORM),
575+
"HIPDNN_OPERATION_TYPE_LAYERNORM");
576+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_SDPA_FORWARD),
577+
"HIPDNN_OPERATION_TYPE_SDPA_FORWARD");
578+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE),
579+
"HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE");
580+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_SDPA_BACKWARD),
581+
"HIPDNN_OPERATION_TYPE_SDPA_BACKWARD");
582+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE),
583+
"HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE");
584+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_CUSTOM_OP),
585+
"HIPDNN_OPERATION_TYPE_CUSTOM_OP");
586+
EXPECT_STREQ(hipdnnGetOperationTypeString(HIPDNN_OPERATION_TYPE_REDUCTION),
587+
"HIPDNN_OPERATION_TYPE_REDUCTION");
588+
589+
// Unknown type
590+
EXPECT_STREQ(hipdnnGetOperationTypeString(static_cast<hipdnnOperationType_t>(-1)),
591+
"HIPDNN_OPERATION_TYPE_UNKNOWN");
538592
}
539593

540594
TEST(TestBackendEnumStringUtils, GetStatusString)

projects/hipdnn/frontend/include/hipdnn_frontend/detail/OperationUnpacker.hpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,23 @@
99
#include <hipdnn_frontend/attributes/GraphAttributes.hpp>
1010
#include <hipdnn_frontend/attributes/TensorAttributes.hpp>
1111
#include <hipdnn_frontend/detail/BackendWrapper.hpp>
12+
#include <hipdnn_frontend/node/BatchnormBackwardNode.hpp>
13+
#include <hipdnn_frontend/node/BatchnormInferenceNode.hpp>
14+
#include <hipdnn_frontend/node/BatchnormInferenceNodeVarianceExt.hpp>
15+
#include <hipdnn_frontend/node/BatchnormNode.hpp>
16+
#include <hipdnn_frontend/node/BlockScaleDequantizeNode.hpp>
17+
#include <hipdnn_frontend/node/BlockScaleQuantizeNode.hpp>
18+
#include <hipdnn_frontend/node/ConvolutionDgradNode.hpp>
1219
#include <hipdnn_frontend/node/ConvolutionFpropNode.hpp>
20+
#include <hipdnn_frontend/node/ConvolutionWgradNode.hpp>
21+
#include <hipdnn_frontend/node/CustomOpNode.hpp>
22+
#include <hipdnn_frontend/node/LayerNormNode.hpp>
23+
#include <hipdnn_frontend/node/MatmulNode.hpp>
1324
#include <hipdnn_frontend/node/Node.hpp>
25+
#include <hipdnn_frontend/node/PointwiseNode.hpp>
26+
#include <hipdnn_frontend/node/RMSNormNode.hpp>
27+
#include <hipdnn_frontend/node/SdpaBpropNode.hpp>
28+
#include <hipdnn_frontend/node/SdpaFpropNode.hpp>
1429
#include <memory>
1530
#include <string>
1631
#include <unordered_map>
@@ -57,6 +72,54 @@ namespace hipdnn_frontend::detail
5772
return {
5873
std::make_shared<graph::ConvolutionFpropNode>(graph::ConvFpropAttributes{}, graphAttrs),
5974
{}};
75+
case HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_DATA:
76+
return {
77+
std::make_shared<graph::ConvolutionDgradNode>(graph::ConvDgradAttributes{}, graphAttrs),
78+
{}};
79+
case HIPDNN_OPERATION_TYPE_CONVOLUTION_BACKWARD_WEIGHTS:
80+
return {
81+
std::make_shared<graph::ConvolutionWgradNode>(graph::ConvWgradAttributes{}, graphAttrs),
82+
{}};
83+
case HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE:
84+
return {std::make_shared<graph::BatchnormInferenceNode>(
85+
graph::BatchnormInferenceAttributes{}, graphAttrs),
86+
{}};
87+
case HIPDNN_OPERATION_TYPE_BATCHNORM_BACKWARD:
88+
return {std::make_shared<graph::BatchnormBackwardNode>(graph::BatchnormBackwardAttributes{},
89+
graphAttrs),
90+
{}};
91+
case HIPDNN_OPERATION_TYPE_BATCHNORM_INFERENCE_VARIANCE:
92+
return {std::make_shared<graph::BatchnormInferenceNodeVarianceExt>(
93+
graph::BatchnormInferenceAttributesVarianceExt{}, graphAttrs),
94+
{}};
95+
case HIPDNN_OPERATION_TYPE_BATCHNORM:
96+
return {std::make_shared<graph::BatchnormNode>(graph::BatchnormAttributes{}, graphAttrs),
97+
{}};
98+
case HIPDNN_OPERATION_TYPE_POINTWISE:
99+
return {std::make_shared<graph::PointwiseNode>(graph::PointwiseAttributes{}, graphAttrs),
100+
{}};
101+
case HIPDNN_OPERATION_TYPE_MATMUL:
102+
return {std::make_shared<graph::MatmulNode>(graph::MatmulAttributes{}, graphAttrs), {}};
103+
case HIPDNN_OPERATION_TYPE_RMSNORM:
104+
return {std::make_shared<graph::RMSNormNode>(graph::RMSNormAttributes{}, graphAttrs), {}};
105+
case HIPDNN_OPERATION_TYPE_LAYERNORM:
106+
return {std::make_shared<graph::LayerNormNode>(graph::LayernormAttributes{}, graphAttrs),
107+
{}};
108+
case HIPDNN_OPERATION_TYPE_SDPA_FORWARD:
109+
return {std::make_shared<graph::SdpaFpropNode>(graph::SdpaAttributes{}, graphAttrs), {}};
110+
case HIPDNN_OPERATION_TYPE_BLOCK_SCALE_QUANTIZE:
111+
return {std::make_shared<graph::BlockScaleQuantizeNode>(
112+
graph::BlockScaleQuantizeAttributes{}, graphAttrs),
113+
{}};
114+
case HIPDNN_OPERATION_TYPE_SDPA_BACKWARD:
115+
return {std::make_shared<graph::SdpaBpropNode>(graph::SdpaBackwardAttributes{}, graphAttrs),
116+
{}};
117+
case HIPDNN_OPERATION_TYPE_BLOCK_SCALE_DEQUANTIZE:
118+
return {std::make_shared<graph::BlockScaleDequantizeNode>(
119+
graph::BlockScaleDequantizeAttributes{}, graphAttrs),
120+
{}};
121+
case HIPDNN_OPERATION_TYPE_CUSTOM_OP:
122+
return {std::make_shared<graph::CustomOpNode>(graph::CustomOpAttributes{}, graphAttrs), {}};
60123
default:
61124
return {nullptr,
62125
{ErrorCode::HIPDNN_BACKEND_ERROR,

0 commit comments

Comments
 (0)