Skip to content

Commit

Permalink
fix bug of std::move
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed May 26, 2024
1 parent ac7d29a commit 16daa1e
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 29 deletions.
8 changes: 4 additions & 4 deletions tools/pnnx/pass_level7/Stack2UnsqueezewithCatPass.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ def check_pass():
v_2 = torch.rand(1,3,224,224, dtype = torch.float)
v = [v_0, v_1, v_2]
#finish your check pass code
from tools.serializer import *
def export_pnnx(pt_path_str, input_shape_str):
parser = PnnxParser()
# from tools.serializer import *
# def export_pnnx(pt_path_str, input_shape_str):
# parser = PnnxParser()

operators, operands, input_ops, output_ops = parser.getNvpPnnxModel(pt_path_str, input_shape_str)
# operators, operands, input_ops, output_ops = parser.getNvpPnnxModel(pt_path_str, input_shape_str)

if __name__ == "__main__":
export = 'pt'
Expand Down
4 changes: 2 additions & 2 deletions tools/pnnx/src/parse/pnnx_graph_parse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ bool PnnxGraph::loadModel(const std::string& param_path, const std::string& bin_

std::unique_ptr<Graph> graph_;
graph_ = std::make_unique<Graph>();
this->graph_map_[key] = std::move(graph_);

int32_t load_result = graph_->load(param_path, bin_path);
if (load_result != 0)
{
Expand Down Expand Up @@ -154,7 +154,7 @@ bool PnnxGraph::loadModel(const std::string& param_path, const std::string& bin_
this->operands_map_[key] = operands_;
this->input_ops_map_[key] = input_ops_;
this->output_ops_map_[key] = output_ops_;

this->graph_map_[key] = std::move(graph_);
return true;
}

Expand Down
1 change: 1 addition & 0 deletions tools/pnnx/src/parse/pnnx_graph_parse.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class PnnxGraph
*
* @param param_path pnnx.param path
* @param bin_path pnnx.bin path
* @param key model name
* @return true
* @return false
*/
Expand Down
3 changes: 2 additions & 1 deletion tools/pnnx/src/py_proj.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ PYBIND11_MODULE(ptx, m)
.def("getNvpPnnxModel", &PnnxGraph::getNvpPnnxModel)
.def("loadModel", &PnnxGraph::loadModel)
.def("saveModel", &PnnxGraph::saveModel)
.def("getOperators", (std::vector<Operator>(PnnxGraph::*)()) & PnnxGraph::getOperators)
// .def("getOperators", (std::vector<Operator>(PnnxGraph::*)()) & PnnxGraph::getOperators)
.def("getOperators", &PnnxGraph::getOperators, py::return_value_policy::reference_internal)
.def("getOperands", &PnnxGraph::getOperands, py::return_value_policy::reference_internal)
.def("getInputOps", &PnnxGraph::getInputOps, py::return_value_policy::reference_internal)
.def("getOutputOps", &PnnxGraph::getOutputOps, py::return_value_policy::reference_internal);
Expand Down
31 changes: 20 additions & 11 deletions tools/pnnx/tools/export.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,32 @@
import json
import importlib
import numpy as np
import platform
try:
import torch
import torchvision.models as models
import torch.nn as nn
import torch.nn.functional as F
# sys.path.append('/workspace/trans_onnx/project/new_project/nvppnnx/python/build/temp.linux-x86_64-cpython-311/src')
sys.path.append('D:/project/programs/ncnn_project/nvppnnx/python/build/lib.win-amd64-cpython-38/pnnx')
import ptx
graph = ptx.PnnxGraph()
import torch
import torchvision.models as models
import torch.nn as nn
import torch.nn.functional as F
if platform.system() == "Windows":
sys.path.append('D:/project/programs/ncnn_project/nvppnnx/python/build/lib.win-amd64-cpython-38/pnnx')
elif platform.system() == "Linux":
sys.path.append('/workspace/trans_onnx/project/new_project/nvppnnx/python/build/temp.linux-x86_64-cpython-311/src')
else:
assert False, "noly support win and linux"
import ptx
graph = ptx.PnnxGraph()
except ImportError as e:
sys.exit(str(e))
import onnx
from onnxsim import simplify


save_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/model_zoo'


if platform.system() == "Windows":
save_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/model_zoo'
elif platform.system() == "Linux":
save_path = '/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/model_zoo'
else:
assert False, "noly support win and linux"


#-------------------------------------------
Expand Down
16 changes: 14 additions & 2 deletions tools/pnnx/tools/pass_level7_dict.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,18 +302,30 @@ def run_pass(op,operator_dict, operand_dict):
# multi stack
example_name = 'multi_stack'
pt_path_str = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/model_zoo/stack/stack.pt'
pt_path_str = '/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/model_zoo/stack/stack.pt'
input_shape_str = '[1,3,224],[1,3,224]'

# custom_op_path_str =
# infer_py_path =
pass_level7_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/pass_level7'
# pass_level7_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/pass_level7'
if platform.system() == "Windows":
pass_level7_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/pass_level7'
elif platform.system() == "Linux":
pass_level7_path = '/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/pass_level7'


# gen pnnx model
operators, operands, input_ops, output_ops = parser.getNvpPnnxModel(pt_path_str, input_shape_str, 'None', 'None', 'src')
# trans list to dict for pass
operator_dict, operand_dict = trans_list_to_dict(operators, operands)


pass_level7_tmp_output_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/output/tmp'
if platform.system() == "Windows":
pass_level7_tmp_output_path = 'D:/project/programs/ncnn_project/ncnn/tools/pnnx/output/tmp'
elif platform.system() == "Linux":
pass_level7_tmp_output_path = '/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/output/tmp'


pass_level7_tmp_output_path = os.path.join(pass_level7_tmp_output_path, example_name)
os.makedirs(pass_level7_tmp_output_path, exist_ok= True)
# loop all pass level7
Expand Down
22 changes: 13 additions & 9 deletions tools/pnnx/tools/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,20 @@
import json
import importlib
import re
import platform
try:
import torch
import torchvision.models as models
import torch.nn as nn
import torch.nn.functional as F
sys.path.append('D:/project/programs/ncnn_project/ncnn/tools/pnnx/python/build/lib.win-amd64-cpython-38/pnnx')
# sys.path.append('D:/project/programs/ncnn_project/ncnn/tools/pnnx/python/build_release/lib.win-amd64-cpython-38/pnnx')
# sys.path.append('/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/python/build/temp.linux-x86_64-cpython-311/src')
import ptx

import torch
import torchvision.models as models
import torch.nn as nn
import torch.nn.functional as F
if platform.system() == "Windows":
sys.path.append('D:/project/programs/ncnn_project/nvppnnx/python/build/lib.win-amd64-cpython-38/pnnx')
elif platform.system() == "Linux":
sys.path.append('/workspace/trans_onnx/project/new_project/ncnn/tools/pnnx/python/build/temp.linux-x86_64-cpython-311/src')
else:
assert False, "noly support win and linux"
import ptx
graph = ptx.PnnxGraph()
except ImportError as e:
sys.exit(str(e))

Expand Down

0 comments on commit 16daa1e

Please sign in to comment.