Notice
Recent Posts
Recent Comments
Link
yusukaid's IT note
Python 병렬 라이브러리 개발 프로젝트 - 코드 분할: pyconnx_Types.py 본문
※본 포스팅은 22년 9월~22년 11에 진행된 프로젝트의 연구노트입니다.
pyconnx_Types.py
- 로직: C 구조체들을 모은 파이썬 파일
- 파일 'pyconnx_Types'로 통합한 구조체 및 클래스 목록
- DataType
- Operator
- Tensor
- Node
- Graph
- Model
import ctypes
import sys
path =f'./libconnx.so'
connx = ctypes.cdll.LoadLibrary(path)
args = sys.argv
#datatype
class DataType(ctypes.Structure) :
pass
#operator
class Operator (ctypes.Structure):
pass
#tensor
class Tensor(ctypes.Structure) :
pass
Tensor._fields_ = [
("dtype", ctypes.c_int8), # c로 말하자면 int 8bit를 받는다
("ndim", ctypes.c_int32),
("shape", ctypes.POINTER(ctypes.c_int32)),
("buffer", ctypes.c_void_p),
("size", ctypes.c_uint32),
("parent", ctypes.POINTER(Tensor)),
("ref_count", ctypes.c_int32),
]
#node
class Node(ctypes.Structure):
_fields_ = [
('output_count', ctypes.c_uint32),
('outputs', ctypes.POINTER(ctypes.c_uint32)),
('input_count', ctypes.c_uint32),
('inputs', ctypes.POINTER(ctypes.c_uint32)),
('attribute_count', ctypes.c_uint32),
('attributes', ctypes.POINTER((ctypes.c_void_p))),
('attribute_type', ctypes.POINTER(ctypes.c_uint32)),
('op_type', ctypes.c_char_p),
('op', ctypes.POINTER(Operator))
]
#model & graph
class Graph(ctypes.Structure):
pass
class Model(ctypes.Structure):
_fields_ = [
('version', ctypes.c_int32),
('opset_count', ctypes.c_uint32),
('opset_names', ctypes.POINTER(ctypes.POINTER(ctypes.c_char))),
('opset_versions', ctypes.POINTER(ctypes.c_uint32)),
('graph_count', ctypes.c_uint32),
('graphs', ctypes.POINTER(ctypes.POINTER(Graph))),
]
Graph._fields_ = [
('model', ctypes.POINTER(Model)),
('id', ctypes.c_uint32),
('initializer_count', ctypes.c_uint32),
('initializers', ctypes.POINTER(ctypes.POINTER(Tensor))),
('input_count', ctypes.c_uint32),
('inputs', ctypes.POINTER(ctypes.c_uint32)),
('output_count', ctypes.c_uint32),
('outputs', ctypes.POINTER(ctypes.c_uint32)),
('value_info_count', ctypes.c_uint32),
('value_infos', ctypes.POINTER(ctypes.POINTER(Tensor))),
('node_count', ctypes.c_uint32),
('nodes', ctypes.POINTER(ctypes.POINTER(Node))),
]
'python' 카테고리의 다른 글
Python 병렬 라이브러리 개발 프로젝트 - 코드 분할: 실행 결과 및 리뷰 (0) | 2023.01.12 |
---|---|
Python 병렬 라이브러리 개발 프로젝트 - 코드 분할: pyconnx_test.py (0) | 2023.01.12 |
Python 병렬 라이브러리 개발 프로젝트 - 코드 분할: pyconnx.py (0) | 2023.01.12 |
Python 병렬 라이브러리 개발 프로젝트 - 순환 참조 오류 (0) | 2023.01.12 |
Python 병렬 라이브러리 개발 프로젝트 - demo 코드 분석 (0) | 2023.01.05 |