Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
232 commits
Select commit Hold shift + click to select a range
c4e55ca
Use enums present in commons.h
fiona-gladwin Sep 22, 2025
22af55b
Remove unused include rocal_api_types.h
fiona-gladwin Sep 22, 2025
752a734
Introduce EnumRegistry
fiona-gladwin Sep 24, 2025
6d45638
Introduce Argument class
fiona-gladwin Sep 24, 2025
90736c8
Introduce PipelineOperator class
fiona-gladwin Sep 24, 2025
fc55deb
Add support to create and return node name and tensor name
fiona-gladwin Sep 24, 2025
49e7025
Add support in MasterGraph to store details of PipelineOperators
fiona-gladwin Sep 24, 2025
25c9d91
Add support to store the argument details in the node for brightness …
fiona-gladwin Sep 24, 2025
9f75ff1
Introduce PipelineSerializer
fiona-gladwin Sep 24, 2025
8d07c81
Introduce external rocalSerialize API
fiona-gladwin Sep 24, 2025
4e8cb1c
Add support to serialize parameter arguments
fiona-gladwin Sep 24, 2025
8a09a06
Introduce serialize tests
fiona-gladwin Sep 24, 2025
cba503f
Remove redundant static cast
fiona-gladwin Sep 25, 2025
77676a4
Add support to dump images using OpenCV
fiona-gladwin Sep 25, 2025
fb09c21
Update CMakeLists
fiona-gladwin Sep 25, 2025
72ca736
Update copyright
fiona-gladwin Sep 25, 2025
604ce6a
Remove semicolon for enum macro
fiona-gladwin Sep 25, 2025
ef53616
Modify name of macro
fiona-gladwin Sep 25, 2025
bb665e5
Change enums to scoped enums in commons.h
fgladwin Sep 29, 2025
1f11c53
Merge branch 'fg/enum_register' into fg/ser_argument
fiona-gladwin Sep 29, 2025
d9d527e
Code reorganization
fiona-gladwin Sep 29, 2025
2651138
Minor fix
fiona-gladwin Oct 3, 2025
68dc5d3
Remove unused includes
fiona-gladwin Oct 3, 2025
da2ae16
Add compiler keywords
fiona-gladwin Oct 3, 2025
db854ce
Merge branch 'fg/enum_change' into fg/enum_register
fiona-gladwin Oct 3, 2025
ca0a736
Merge branch 'fg/enum_register' into fg/ser_argument
fiona-gladwin Oct 3, 2025
a1979c2
Update rocAL/include/pipeline/argument.h
fgladwin Oct 3, 2025
48730ba
Update rocAL/include/pipeline/argument.h
fgladwin Oct 3, 2025
d05dd31
Merge branch 'develop' into fg/enum_change
SundarRajan28 Oct 3, 2025
478e019
Merge branch 'develop' into fg/enum_register
SundarRajan28 Oct 3, 2025
df36a72
Merge branch 'fg/ser_argument' of https://github.com/fiona-gladwin/ro…
fiona-gladwin Oct 3, 2025
6b97bcb
Minor change
fiona-gladwin Oct 6, 2025
a8a5955
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Oct 6, 2025
8f361bb
Update rocAL/include/pipeline/argument.h
fgladwin Oct 6, 2025
c6212ca
Update rocAL/include/pipeline/argument.h
fgladwin Oct 6, 2025
57dfa73
Minor change
fiona-gladwin Oct 6, 2025
55640dd
Fix shared pointer fetching
fiona-gladwin Oct 6, 2025
f0a5e49
Minor fix
fiona-gladwin Oct 6, 2025
72013b9
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Oct 6, 2025
fa66d0b
Minor fix
fiona-gladwin Oct 6, 2025
5237ff2
Apply suggestions from code review
fgladwin Oct 7, 2025
58d98fe
Update CHANGELOG.md
fiona-gladwin Oct 7, 2025
e268b10
Merge branch 'fg/enum_change' into fg/enum_register
fiona-gladwin Oct 7, 2025
ae86648
Update CHANGELOG.md
fiona-gladwin Oct 7, 2025
bfb4b7e
Merge branch 'develop' of https://github.com/ROCm/rocAL into fg/enum_…
fiona-gladwin Oct 7, 2025
efe2b71
Merge branch 'fg/enum_change' into fg/enum_register
fiona-gladwin Oct 7, 2025
e736bfe
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Oct 8, 2025
bef321b
Add all serialization code to pipeline serializer
fiona-gladwin Oct 8, 2025
a82fb7f
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Oct 8, 2025
5842b84
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Oct 8, 2025
bbc96af
Revert fix
fiona-gladwin Oct 8, 2025
c4101fc
Update CHANGELOG.md
fiona-gladwin Oct 9, 2025
b668043
Update CHANGELOG.md
fiona-gladwin Oct 9, 2025
877bee0
Update CHANGELOG.md
fiona-gladwin Oct 9, 2025
43636be
Add comments and doc description
fiona-gladwin Oct 9, 2025
64697e6
Support to serialize to file
fiona-gladwin Oct 9, 2025
ffdee4b
Update CMakeLists version for rocAL
fiona-gladwin Oct 9, 2025
f9985cb
Merge branch 'fg/enum_change' into fg/enum_register
fiona-gladwin Oct 9, 2025
01cc2d2
Merge branch 'develop' into fg/enum_register
kiritigowda Oct 10, 2025
7619bdd
Merge branch 'develop' of https://github.com/ROCm/rocAL into fg/enum_…
fiona-gladwin Oct 14, 2025
1d71cf9
Merge branch 'fg/enum_change' into fg/enum_register
fiona-gladwin Oct 14, 2025
628ea36
Merge branch 'develop' into fg/enum_register
kiritigowda Oct 14, 2025
e620f0a
Merge branch 'develop' into fg/enum_register
fiona-gladwin Oct 15, 2025
5052fd6
Merge branch 'develop' into fg/enum_register
fiona-gladwin Oct 16, 2025
aa91eed
Merge branch 'fg/enum_register' of https://github.com/fiona-gladwin/r…
fiona-gladwin Oct 16, 2025
df3f598
Update CHANGELOG
fiona-gladwin Oct 16, 2025
1e88632
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Oct 16, 2025
3077acb
Update CHANGELOG.md
fiona-gladwin Oct 16, 2025
d2ccaab
Minor change
fiona-gladwin Oct 16, 2025
6a7c102
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Oct 22, 2025
59f7c0e
Minor changes
fiona-gladwin Oct 22, 2025
37fe4be
Update CHANGELOG.md
fiona-gladwin Oct 22, 2025
2be0388
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Oct 22, 2025
29359b7
Add const qualifier
fiona-gladwin Oct 22, 2025
151455a
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Oct 22, 2025
a6d271e
Add const correctness to get args list
fiona-gladwin Oct 22, 2025
6bf8527
Add const correctness to get args list
fiona-gladwin Oct 22, 2025
cf1227a
Minor change
fiona-gladwin Oct 22, 2025
d9ce6c9
Add const correctness to get args list
fiona-gladwin Oct 22, 2025
d999010
Merge pull request #8 from fiona-gladwin/fg/enum_register
fgladwin Oct 22, 2025
4ca7024
Merge pull request #9 from fiona-gladwin/fg/ser_argument
fgladwin Oct 22, 2025
65a4fe9
Merge branch 'gf/serialize_merge' into fg/ser1_pipe_op
fgladwin Oct 22, 2025
9cfb80f
Minor change
fiona-gladwin Oct 22, 2025
09f493e
Return serialized string reference from MasterGraph
fiona-gladwin Oct 22, 2025
04f535e
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Oct 22, 2025
57d219c
Apply suggestions from code review
fiona-gladwin Oct 23, 2025
4b16eec
Obtain serialized string size as ptr
fiona-gladwin Oct 23, 2025
6d6a6b6
Minor change
fiona-gladwin Oct 23, 2025
2b1bf5d
Add reset for pipeline serializer
fiona-gladwin Oct 23, 2025
a62ed11
Add cstring include
fiona-gladwin Oct 23, 2025
2e075a2
Merge branch 'fg/ser2_pipe_serialize' of https://github.com/fiona-gla…
fiona-gladwin Oct 23, 2025
3f245d2
Minor change
fiona-gladwin Oct 24, 2025
d9226cc
Update CHANGELOG
fiona-gladwin Oct 24, 2025
7084be1
Apply suggestions from code review
fiona-gladwin Oct 27, 2025
3aaae0e
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Oct 28, 2025
9a3bee6
Minor changes
fiona-gladwin Oct 28, 2025
e2242a5
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Oct 28, 2025
9fb38a1
Add empty lines in between functions
fiona-gladwin Oct 28, 2025
c621cce
Remove Params proto
fiona-gladwin Oct 28, 2025
95ca41f
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Oct 28, 2025
6207d4a
Add params proto
fiona-gladwin Oct 28, 2025
b33bd7e
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Oct 28, 2025
85a7ea8
Apply suggestions from code review
fiona-gladwin Oct 28, 2025
ab2d044
Minor changes
fiona-gladwin Oct 28, 2025
e1889b0
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Oct 28, 2025
8565cfd
Fix serialize test
fiona-gladwin Oct 28, 2025
651e48e
Add CMakeLists for serialization tests
fiona-gladwin Oct 28, 2025
5275fbf
Use random brightness API
fiona-gladwin Oct 28, 2025
70ab499
Add support to build serialization tests in CMakeLists
fiona-gladwin Oct 28, 2025
d18120e
Merge branch 'develop' into fg/ser1_pipe_op
kiritigowda Oct 28, 2025
dbb5573
Merge branch 'develop' into fg/ser_argument
kiritigowda Oct 28, 2025
5461857
Merge branch 'develop' into fg/ser1_pipe_op
kiritigowda Nov 3, 2025
3f2d467
Merge branch 'develop' into fg/ser_argument
kiritigowda Nov 3, 2025
f1f4248
Merge branch 'develop' of https://github.com/ROCm/rocAL into fg/ser2_…
fiona-gladwin Nov 5, 2025
34b8685
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 5, 2025
744d924
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 5, 2025
fd54bd3
Update CHANGELOG
fiona-gladwin Nov 5, 2025
6e17df8
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 5, 2025
5695f3c
Update CHANGELOG
fiona-gladwin Nov 5, 2025
bcfec0e
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 5, 2025
7cb5620
Update CHANGELOG.md
fiona-gladwin Nov 5, 2025
3fb45cb
Merge branch 'develop' into fg/ser_argument
LakshmiKumar23 Nov 5, 2025
88c546b
Merge branch 'develop' into fg/ser1_pipe_op
fiona-gladwin Nov 6, 2025
51046c2
Change rocal proto file to proto2 features
fiona-gladwin Nov 6, 2025
a747ed7
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 6, 2025
a7d5d67
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 6, 2025
c4bc6f4
Merge branch 'develop' into fg/ser2_pipe_serialize
fiona-gladwin Nov 6, 2025
3a9878c
Merge branch 'develop' into fg/ser3_params_serialize
fiona-gladwin Nov 6, 2025
576b94e
Merge branch 'develop' into fg/serialize_test
fiona-gladwin Nov 6, 2025
fe8f33e
Merge branch 'develop' into fg/ser_argument
LakshmiKumar23 Nov 6, 2025
d3a199e
Merge branch 'develop' into fg/ser1_pipe_op
fiona-gladwin Nov 7, 2025
7dcb7ef
Merge branch 'develop' into fg/ser2_pipe_serialize
fiona-gladwin Nov 7, 2025
bff3309
Merge branch 'develop' into fg/ser3_params_serialize
fiona-gladwin Nov 7, 2025
6d13fb1
Merge branch 'develop' into fg/serialize_test
fiona-gladwin Nov 7, 2025
dda7fd8
Merge branch 'develop' into fg/ser1_pipe_op
fiona-gladwin Nov 11, 2025
d0fd61f
Merge branch 'fg/ser_argument' into fg/ser1_pipe_op
fiona-gladwin Nov 11, 2025
90f7226
Merge branch 'develop' into fg/ser1_pipe_op
LakshmiKumar23 Nov 11, 2025
c1ab697
Generate UID for tensors from MasterGraph
fiona-gladwin Nov 12, 2025
ac72c30
Merge branch 'fg/ser1_pipe_op' of https://github.com/fiona-gladwin/ro…
fiona-gladwin Nov 12, 2025
4109ed4
Minor change
fiona-gladwin Nov 12, 2025
879c61a
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Nov 14, 2025
07763c4
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 14, 2025
4b07b01
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 14, 2025
c16bd3e
Merge branch 'develop' into fg/ser1_pipe_op
fiona-gladwin Nov 17, 2025
f05c1df
Merge branch 'develop' into fg/ser2_pipe_serialize
fiona-gladwin Nov 17, 2025
43b2fa2
Merge branch 'develop' into fg/ser3_params_serialize
fiona-gladwin Nov 17, 2025
fd42764
Merge branch 'develop' into fg/serialize_test
fiona-gladwin Nov 17, 2025
c60e86b
Merge branch 'develop' into fg/ser1_pipe_op
kiritigowda Nov 17, 2025
4f6aefe
Merge branch 'develop' into fg/ser2_pipe_serialize
kiritigowda Nov 17, 2025
c9457e9
Merge branch 'develop' into fg/ser3_params_serialize
kiritigowda Nov 17, 2025
c9ebed8
Merge branch 'develop' into fg/serialize_test
kiritigowda Nov 17, 2025
798e1a1
Resolve copilot review comments
fiona-gladwin Nov 18, 2025
7d9e236
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Nov 18, 2025
d2aff1b
Minor change
fiona-gladwin Nov 18, 2025
f3f110c
Resolve copilot review comments
fiona-gladwin Nov 18, 2025
e4816c5
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 18, 2025
df5c6b9
Use uint64 in proto for pipeline members
fiona-gladwin Nov 18, 2025
1e79ae6
Resolve review comments
fiona-gladwin Nov 18, 2025
6e1bfee
Minor changes - review comments
fiona-gladwin Nov 18, 2025
26b4502
Add error check statements
fiona-gladwin Nov 18, 2025
13d26d1
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 18, 2025
72ff657
Revert input and outputs
fiona-gladwin Nov 18, 2025
d572f7f
Use uint64 in proto for pipeline members
fiona-gladwin Nov 18, 2025
8bd71cc
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 18, 2025
42f6899
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 18, 2025
c6698af
Revert "Revert input and outputs"
fiona-gladwin Nov 18, 2025
9922f74
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 18, 2025
cf0b178
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 18, 2025
1b7d8ed
Minor change
fiona-gladwin Nov 18, 2025
5100f7c
Minor changes
fiona-gladwin Nov 18, 2025
a438365
Merge branch 'fg/ser1_pipe_op' into fg/ser2_pipe_serialize
fiona-gladwin Nov 18, 2025
784e1a6
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Nov 18, 2025
f671c50
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Nov 18, 2025
699eb02
Merge branch 'develop' into fg/serialize_test
kiritigowda Nov 21, 2025
addcda4
Merge branch 'develop' into fg/ser3_params_serialize
kiritigowda Nov 21, 2025
0aca014
Merge branch 'develop' into fg/ser2_pipe_serialize
kiritigowda Nov 21, 2025
7b03b37
Merge branch 'develop' into fg/ser2_pipe_serialize
kiritigowda Dec 2, 2025
221ae1a
Merge branch 'develop' into fg/ser3_params_serialize
kiritigowda Dec 2, 2025
a927983
Merge branch 'develop' into fg/serialize_test
kiritigowda Dec 2, 2025
87ffb64
Merge branch 'develop' into fg/ser2_pipe_serialize
fiona-gladwin Dec 8, 2025
14cd512
Merge branch 'develop' into fg/ser2_pipe_serialize
fiona-gladwin Dec 9, 2025
0128dab
Return tensor name as reference
fiona-gladwin Dec 9, 2025
69d9dbd
Merge branch 'develop' into fg/ser3_params_serialize
fiona-gladwin Dec 9, 2025
e817a47
Remove type string from InputOutput proto
fiona-gladwin Dec 10, 2025
0fc0561
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Dec 10, 2025
51a2cb7
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Dec 10, 2025
3892fd7
Merge branch 'develop' into fg/ser2_pipe_serialize
kiritigowda Dec 10, 2025
a0c0ab1
Merge branch 'develop' into fg/ser3_params_serialize
kiritigowda Dec 10, 2025
6dde528
Merge branch 'develop' into fg/serialize_test
kiritigowda Dec 10, 2025
7374112
Add python support for rocAL serialize
fiona-gladwin Dec 11, 2025
150c240
Accept filename as input
fiona-gladwin Dec 11, 2025
5bd3687
Introduce python serialization test file
fiona-gladwin Dec 11, 2025
f8870d5
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Dec 11, 2025
fa1556e
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Dec 11, 2025
50e73f1
Merge branch 'fg/serialize_test' into fg/serialize_python
fiona-gladwin Dec 11, 2025
ff7a970
Add support to store and fetch seed value in proto
fiona-gladwin Jul 29, 2025
1cd7710
Remove serialize to file
fiona-gladwin Dec 11, 2025
e227b8f
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Dec 11, 2025
035ca86
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Dec 11, 2025
f904406
Register copy node
fiona-gladwin Dec 11, 2025
74b81f9
Add serialization support for ImageLoaderSingleShardNode
fiona-gladwin Dec 11, 2025
bd5cd3a
Revert "Register copy node"
fiona-gladwin Dec 11, 2025
ccf207e
Update python test file
fiona-gladwin Dec 11, 2025
ea47d3a
Minor changes
fiona-gladwin Dec 11, 2025
e42c9e1
Fix the size of char buffer and other minor fixes
fiona-gladwin Dec 11, 2025
4ecb3ee
Update CHANGELOG
fiona-gladwin Dec 16, 2025
17280e2
Merge branch 'fg/ser2_pipe_serialize' into fg/ser3_params_serialize
fiona-gladwin Dec 16, 2025
7af03be
Add period in throw statements
fiona-gladwin Dec 16, 2025
ecd7250
Merge branch 'fg/ser3_params_serialize' into fg/serialize_test
fiona-gladwin Dec 16, 2025
559c93b
Merge branch 'fg/serialize_test' into fg/serialize_python
fiona-gladwin Dec 16, 2025
2506685
Update CHANGELOG.md
fiona-gladwin Dec 16, 2025
8b03b78
Fix opencv include in serialize test
fiona-gladwin Dec 16, 2025
6b45115
Merge branch 'develop' into fg/serialize_test
fiona-gladwin Dec 17, 2025
12fe8b1
Merge branch 'develop' into fg/serialize_python
fiona-gladwin Dec 17, 2025
a1b32bf
Apply suggestions from code review
fiona-gladwin Dec 19, 2025
65e2814
Merge branch 'develop' into fg/serialize_test
fiona-gladwin Dec 22, 2025
14d40cb
Merge branch 'develop' into fg/serialize_python
fiona-gladwin Dec 22, 2025
9ef6fb7
Remove OpenCV 3 usage in serialization test
fiona-gladwin Dec 23, 2025
de3ed2e
Update README with prerequisites
fiona-gladwin Dec 23, 2025
959b6e7
Remove Opencv4 definitions
fiona-gladwin Jan 5, 2026
4f67a09
Merge branch 'develop' into fg/serialize_test
LakshmiKumar23 Jan 5, 2026
6d3d6b9
Minor changes
fiona-gladwin Jan 6, 2026
cfbf905
Merge branch 'fg/serialize_test' into fg/serialize_python
fiona-gladwin Jan 6, 2026
4ffff8e
Remove extra lines
fiona-gladwin Jan 6, 2026
77f3cb1
Merge branch 'fg/serialize_test' into fg/serialize_python
fiona-gladwin Jan 6, 2026
f821ce6
Minor change
fiona-gladwin Jan 6, 2026
aacecc2
Revert "Minor change"
fiona-gladwin Jan 6, 2026
33fbabb
Minor change
fiona-gladwin Jan 6, 2026
467a38d
Merge branch 'fg/serialize_test' into fg/serialize_python
fiona-gladwin Jan 6, 2026
74a346a
Minor change
fiona-gladwin Jan 6, 2026
756f026
Merge branch 'develop' into fg/serialize_python
fiona-gladwin Jan 7, 2026
50c4cc5
Merge branch 'develop' into fg/serialize_python
fiona-gladwin Jan 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Full documentation for rocLibrary is available at [https://rocm.docs.amd.com/pro
### Added
* `PipelineSerializer` class to implement pipeline serialization functionality in rocAL.
* Serialization test to validate pipeline serialization functionality.
* Python support and example to test serialization

### Changes
* Adds new public APIs rocalSerialize() and rocalGetSerializedString() for serializing pipelines.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,12 @@ class ImageLoaderSingleShardNode : public Node {
const std::map<std::string, std::string> feature_key_map = std::map<std::string, std::string>(), unsigned sequence_length = 0, unsigned step = 0, unsigned stride = 0, ExternalSourceFileMode external_file_mode = ExternalSourceFileMode::NONE, const std::string &index_path = "");

std::shared_ptr<LoaderModule> get_loader_module();
std::string node_name() const override { return "ImageLoaderSingleShardNode"; }

protected:
void create_node() override{};
void update_node() override{};

private:
std::shared_ptr<ImageLoader> _loader_module = nullptr;
};
};
4 changes: 4 additions & 0 deletions rocAL/include/pipeline/master_graph.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,10 @@ inline std::shared_ptr<ImageLoaderSingleShardNode> MasterGraph::add_node(const s
_loader_modules.emplace_back(loader_module);
node->set_graph_id(_loaders_count++);
_root_nodes.push_back(node);

// Add each operator to the pipeline operators list
_pipeline_operators.push_back(std::make_shared<PipelineOperator>(node->node_name() + "_" + std::to_string(_op_idx++), "loader", node));

for (auto &output : outputs)
_tensor_map.insert(std::make_pair(output, node));

Expand Down
17 changes: 17 additions & 0 deletions rocAL/source/loaders/image/node_image_loader_single_shard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,23 @@ void ImageLoaderSingleShardNode::init(unsigned shard_id, unsigned shard_count, u
reader_cfg.set_external_filemode(external_file_mode);
reader_cfg.set_index_path(index_path);
reader_cfg.set_sharding_info(sharding_info);

std::array<std::string, 23> arg_names = {
"shard_id", "shard_count", "cpu_num_threads", "source_path",
"json_path", "storage_type", "decoder_type", "shuffle", "loop",
"load_batch_count", "mem_type", "meta_data_reader", "decoder_keep_orig",
"last_batch_policy", "pad_last_batch_repeated", "stick_to_shard", "shard_size",
"feature_key_map", "sequence_length", "step", "stride",
"external_file_mode", "index_path"
};

set_node_arguments(arg_names, std::make_index_sequence<arg_names.size()>{}, shard_id,
shard_count, cpu_num_threads, source_path, json_path, storage_type,
decoder_type, shuffle, loop, load_batch_count, mem_type, meta_data_reader, decoder_keep_original,
sharding_info.last_batch_policy, sharding_info.pad_last_batch_repeated,
sharding_info.stick_to_shard, sharding_info.shard_size, feature_key_map,
sequence_length, step, stride, external_file_mode, index_path);

_loader_module->initialize(reader_cfg, DecoderConfig(decoder_type),
mem_type,
_batch_size, decoder_keep_original);
Expand Down
2 changes: 1 addition & 1 deletion rocAL/source/pipeline/pipeline_serializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ void PipelineSerializer::serialize_pipeop_arguments(const std::vector<Argument>&
serialize_parameter_to_protobuf(param, op_arg);
} else if (op_arg.type_name == "enum") {
if (op_arg.values.empty()) {
THROW("Enum argument " + op_arg.arg_name + " has no values.");
THROW("Enum argument '" + op_arg.arg_name + "' requires at least one value.");
}
rocal_proto::EnumType* enum_arg = arg->mutable_enum_value();
enum_arg->set_name(op_arg.sub_type_name);
Expand Down
17 changes: 16 additions & 1 deletion rocAL_pybind/amd/rocal/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,22 @@ def run(self):
return b.getOutputTensors(self._handle)
except:
raise StopIteration


def serialize(self, filename=None):
"""
Serialize the pipeline and store into protobuffers

Args:
filename (str, optional): Optional output path to write the serialized data to file

Returns:
bytes: The serialized pipeline as protobuf payload
"""
serialized_str = b.rocalSerialize(self._handle)
if filename:
with open(filename, 'wb') as f:
f.write(serialized_str)
return serialized_str

def _discriminate_args(func, **func_kwargs):
"""!Split args on those applicable to Pipeline constructor and the decorated function."""
Expand Down
16 changes: 16 additions & 0 deletions rocAL_pybind/rocal_pybind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,22 @@ PYBIND11_MODULE(rocal_pybind, m) {
m.def("rocalVerify", &rocalVerify);
m.def("rocalRun", &rocalRun, py::return_value_policy::reference);
m.def("rocalRelease", &rocalRelease, py::return_value_policy::reference);
m.def("rocalSerialize", [](RocalContext context) {
size_t size;
RocalStatus status = rocalSerialize(context, &size);
if (status != ROCAL_OK) {
throw std::runtime_error("Failed to serialize pipeline");
}
// Allocate size+1 bytes to handle null terminator safely
std::vector<char> buffer(size + 1, '\0');
status = rocalGetSerializedString(context, buffer.data());
if (status != ROCAL_OK) {
throw std::runtime_error("Failed to get serialized string");
}

// Return only the first 'size' bytes as Python bytes object
return py::bytes(buffer.data(), size);
}, "Returns the serialized pipeline as string");
// rocal_api_types.h
py::class_<TimingInfo>(m, "TimingInfo")
.def_readwrite("load_time", &TimingInfo::load_time)
Expand Down
200 changes: 200 additions & 0 deletions tests/python_api/pipeline_serialize_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
# Copyright (c) 2024 - 2025 Advanced Micro Devices, Inc. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

import random
import sys
import os
import cv2
from amd.rocal.plugin.pytorch import ROCALClassificationIterator
from amd.rocal.pipeline import Pipeline
import amd.rocal.fn as fn
import amd.rocal.types as types

def save_output_images(img, idx, output_dir, device=True, layout="NCHW"):
"""Save output images for verification"""
if device is False:
image = img.cpu().numpy()
else:
image = img.numpy()
if layout == "NCHW":
image = image.transpose([1, 2, 0])
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
cv2.imwrite(os.path.join(output_dir, f"serialize_test_{idx}.png"), image)


def create_test_pipeline(data_path, rocal_cpu=True, batch_size=2):
"""Create a test pipeline with supported augmentations"""
num_threads = 1
device_id = 0
random_seed = random.SystemRandom().randint(0, 2**32 - 1)
local_rank = 0
world_size = 1

# Create pipeline
pipeline = Pipeline(
batch_size=batch_size,
num_threads=num_threads,
device_id=device_id,
seed=random_seed,
rocal_cpu=rocal_cpu
)

with pipeline:
# File reader
jpegs, labels = fn.readers.file(file_root=data_path)

# Image decoder
decode = fn.decoders.image(
jpegs,
output_type=types.RGB,
file_root=data_path,
shard_id=local_rank,
num_shards=world_size,
random_shuffle=True
)

# Brightness augmentation
brightness = fn.brightness(
decode,
brightness=0.5,
output_layout=types.NCHW,
output_dtype=types.UINT8
)

pipeline.set_outputs(brightness)

return pipeline


def test_serialization(data_path, rocal_cpu=True, batch_size=2):
"""Test pipeline serialization functionality and return serialized string"""
print(f">>> Testing Pipeline Serialization on {'CPU' if rocal_cpu else 'GPU'}")

# Create output directory
output_dir = "output_folder/serialize_test"
try:
os.makedirs(output_dir, exist_ok=True)
except OSError as error:
print(f"Error creating output directory: {error}")
return None

try:
# Create and build pipeline
print("Creating test pipeline...")
pipeline = create_test_pipeline(data_path, rocal_cpu, batch_size)
pipeline.build()

# Test serialization
print("\n=== Testing Pipeline Serialization ===")

# Test Serialize to string
print("Test 1: Serializing pipeline to string...")
serialized_string = pipeline.serialize()

if serialized_string is None or len(serialized_string) == 0:
print("ERROR: Failed to serialize pipeline - empty result")
return None

print(f"Serialized string size: {len(serialized_string)} bytes")
print("Serialization to string: SUCCESS")

# Display serialized content (first 500 chars for readability)
print("\n=== Serialized Pipeline Content (Preview) ===")
try:
# Try to decode as text for preview
preview_text = serialized_string.decode('utf-8', errors='ignore')[:500]
print(preview_text)
if len(serialized_string) > 500:
print("... (truncated)")
except Exception:
# If binary, show hex representation
print("Binary content (hex preview):")
print(serialized_string[:100].hex())
if len(serialized_string) > 100:
print("... (truncated)")
print("=== End of Serialized Content Preview ===")

# Test pipeline execution after serialization
print("\n=== Testing Pipeline Execution After Serialization ===")

imageIteratorPipeline = ROCALClassificationIterator(pipeline)
print(f"Available images: {pipeline.get_remaining_images()}")

iteration_count = 0
for i, batch_data in enumerate(imageIteratorPipeline):

print(f"\nIteration {iteration_count + 1}:")
images, labels = batch_data

print(f" Batch shape: {images[0].shape} images")
print(f" Labels: {labels}")

# Save output images
if len(images) > 0:
save_output_images(
images[0][0],
f"serialization_{iteration_count}",
output_dir,
device=rocal_cpu,
layout="NCHW"
)
print(f" Saved output image: serialization_{iteration_count}.png")

iteration_count += 1

imageIteratorPipeline.reset()
print("\n=== Serialization Test Completed Successfully ===")
return serialized_string

except Exception as e:
print(f"ERROR: Exception during serialization test: {str(e)}")
import traceback
traceback.print_exc()
return None


def main():
"""Main function to run serialization tests"""
if len(sys.argv) < 2:
print('Usage: python pipeline_serialize_test.py <image_folder> [cpu/gpu] [batch_size]')
sys.exit(1)

# Parse arguments
data_path = sys.argv[1]
rocal_cpu = (sys.argv[2].lower() == "cpu") if len(sys.argv) > 2 else True
batch_size = int(sys.argv[3]) if len(sys.argv) > 3 else 2

# Validate data path
if not os.path.exists(data_path):
print(f"ERROR: Data path does not exist: {data_path}")
sys.exit(1)

# Run the serialization test
serialized_string = test_serialization(data_path, rocal_cpu, batch_size)
success = serialized_string is not None

if success:
print("SERIALIZATION TESTS PASSED!")
else:
print("SERIALIZATION TESTS FAILED")


if __name__ == '__main__':
main()