You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by GitBox <gi...@apache.org> on 2022/09/16 11:10:44 UTC
[GitHub] [tvm] Mousius commented on a diff in pull request #12789: Added macro generation in MLF export
Mousius commented on code in PR #12789:
URL: https://github.com/apache/tvm/pull/12789#discussion_r972909757
##########
src/target/source/interface_c.cc:
##########
@@ -46,20 +46,46 @@ class InterfaceCNode : public runtime::ModuleNode {
InterfaceCNode(std::string module_name, Array<String> inputs, Array<String> outputs,
Array<tir::usmp::AllocatedPoolInfo> pools,
Map<String, tir::usmp::PoolAllocation> io_pool_allocations, Array<String> devices,
- int workspace_size)
+ int workspace_size, Map<String, IntImm> input_sizes,
+ Map<String, IntImm> output_sizes)
: module_name_(module_name),
inputs_(inputs),
outputs_(outputs),
devices_(devices),
pools_(FilterExternalPools(pools)),
io_pool_allocations_(io_pool_allocations),
- workspace_size_(workspace_size) {}
+ workspace_size_(workspace_size),
+ input_sizes_(input_sizes),
+ output_sizes_(output_sizes) {}
const char* type_key() const final { return "h"; }
std::string GetSource(const std::string& format) final {
std::stringstream code;
EmitUpperHeaderGuard(code);
+
+ // Emit macros for input sizes
+ for (auto const& it : input_sizes_) {
+ auto input_name = std::string(it.first);
+ std::replace(input_name.begin(), input_name.end(), ':', '_');
+ std::replace(input_name.begin(), input_name.end(), '+', '_');
+ std::replace(input_name.begin(), input_name.end(), '-', '_');
Review Comment:
We can use the existing name sanitisation logic here:
```suggestion
std::string input_name = SanitizeName(it.first);
```
##########
python/tvm/micro/model_library_format.py:
##########
@@ -519,7 +570,7 @@ def _export_operator_model_library_format(mod: build_module.OperatorModule, temp
"""
targets = []
for target in mod.ir_module_by_target.keys():
- if str(target.kind) not in ("llvm", "c"):
+ if str(target.kind) not in ("llvm", "c", "gemmini"):
Review Comment:
This seems like an unrelated change?
##########
src/target/source/interface_c.cc:
##########
@@ -46,20 +46,46 @@ class InterfaceCNode : public runtime::ModuleNode {
InterfaceCNode(std::string module_name, Array<String> inputs, Array<String> outputs,
Array<tir::usmp::AllocatedPoolInfo> pools,
Map<String, tir::usmp::PoolAllocation> io_pool_allocations, Array<String> devices,
- int workspace_size)
+ int workspace_size, Map<String, IntImm> input_sizes,
+ Map<String, IntImm> output_sizes)
: module_name_(module_name),
inputs_(inputs),
outputs_(outputs),
devices_(devices),
pools_(FilterExternalPools(pools)),
io_pool_allocations_(io_pool_allocations),
- workspace_size_(workspace_size) {}
+ workspace_size_(workspace_size),
+ input_sizes_(input_sizes),
+ output_sizes_(output_sizes) {}
const char* type_key() const final { return "h"; }
std::string GetSource(const std::string& format) final {
std::stringstream code;
EmitUpperHeaderGuard(code);
+
+ // Emit macros for input sizes
+ for (auto const& it : input_sizes_) {
+ auto input_name = std::string(it.first);
+ std::replace(input_name.begin(), input_name.end(), ':', '_');
+ std::replace(input_name.begin(), input_name.end(), '+', '_');
+ std::replace(input_name.begin(), input_name.end(), '-', '_');
+ auto input_size = it.second->value;
Review Comment:
Where possible, we should avoid `auto` types:
```suggestion
int input_size = it.second->value;
```
##########
src/target/source/interface_c.cc:
##########
@@ -46,20 +46,46 @@ class InterfaceCNode : public runtime::ModuleNode {
InterfaceCNode(std::string module_name, Array<String> inputs, Array<String> outputs,
Array<tir::usmp::AllocatedPoolInfo> pools,
Map<String, tir::usmp::PoolAllocation> io_pool_allocations, Array<String> devices,
- int workspace_size)
+ int workspace_size, Map<String, IntImm> input_sizes,
+ Map<String, IntImm> output_sizes)
: module_name_(module_name),
inputs_(inputs),
outputs_(outputs),
devices_(devices),
pools_(FilterExternalPools(pools)),
io_pool_allocations_(io_pool_allocations),
- workspace_size_(workspace_size) {}
+ workspace_size_(workspace_size),
+ input_sizes_(input_sizes),
+ output_sizes_(output_sizes) {}
const char* type_key() const final { return "h"; }
std::string GetSource(const std::string& format) final {
std::stringstream code;
EmitUpperHeaderGuard(code);
+
+ // Emit macros for input sizes
+ for (auto const& it : input_sizes_) {
+ auto input_name = std::string(it.first);
+ std::replace(input_name.begin(), input_name.end(), ':', '_');
+ std::replace(input_name.begin(), input_name.end(), '+', '_');
+ std::replace(input_name.begin(), input_name.end(), '-', '_');
+ auto input_size = it.second->value;
+ EmitIntegerValueMacro(code, "Input tensor " + input_name + " size (in bytes)", input_name,
+ input_size);
+ }
+
+ // Emit macros for output sizes
+ for (auto const& it : output_sizes_) {
+ auto output_name = std::string(it.first);
+ std::replace(output_name.begin(), output_name.end(), ':', '_');
+ std::replace(output_name.begin(), output_name.end(), '+', '_');
+ std::replace(output_name.begin(), output_name.end(), '-', '_');
+ auto output_size = it.second->value;
Review Comment:
```suggestion
std::string output_name = SanitizeName(it.first);
int output_size = it.second->value;
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@tvm.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org