Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- python
- ctypes
- V3
- 논문
- 욜로
- 프로그래머
- Detectron2
- C언어
- CycleGAN
- 딥러닝
- 언리얼엔진
- 파워셀
- 리뷰
- 개발자
- 헬스케어
- TensorFlow
- 이터널리턴
- 논문리뷰
- pyqt5
- NPY
- 호흡분석
- 파이썬
- 설치
- connx
- 텐서플로우
- yolo
- 딜러닝
- 게임개발
- ChatGPT
- 언어모델
Archives
- Today
- Total
사냥꾼의 IT 노트
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 |