-
Notifications
You must be signed in to change notification settings - Fork 1
Description
안녕하세요. 1주차 모임에 참석한 오대환(DAEHWAN OH) 입니다.
모임 중 "torch.jit.trace에서 granularity를 조절하는 방법이 있을까요?" 라는 질문을 드렸었고 해당 내용을 기록하고자 issue로 남깁니다.
우선 granularity(세분성) 단어를 어떤 맥락에서 사용하였는지, 말씀드리면 좋겠습니다.
컴파일 결과물이 작은 단위로 구분된다면 -> Fine-grained
반대로 큰 단위로 구분된다면 -> Coarse-grained
라고 여기며 granularity 단어를 말씀드렸습니다.
Granularity를 조절하고 싶었던 가장 큰 목적은 하드웨어(A,B,C)를 감안한 최적화를 할때 유용하지 않을까? 싶어서 였습니다.
A. Fused_ops(AI 모델에 사용되는 Operator들을 하나의 동작으로 통합한 경우)를 효율적으로 지원하는 하드웨어가 존재
B. 기본 Operator(Matmul, Conv, Batchnorm 등등)들만 지원하는 하드웨어
C. 정말 기본적인 scalar 덧셈, 곱셈 등 연산만 지원하는 하드웨어만 존재
torch 컴파일러가 스마트해서 PC/서버에 있는 하드웨어 상황을 파악하고 그에 맞는 결과물을 내놓는 다면 더 좋을거라 생각했습니다 :)
Fused_ops를 지원하는 하드웨어가 있는데(A 경우) 굳이 B,C의 granularity에 맞는 결과물을 내놓을 필요가 없지 않을까요?
이런 의문에서 torch의 매뉴얼을 살펴봤고 아쉽게도, granularity 관련 옵션들이 없었습니다.

마지막으로 Sunghyun Jun님께서 남겨주신 답변을 공유드리고 마무리 하겠습니다.
(답변 주신 Sunghyun Jun님, 감사드립니다.)
CPU granularity의 경우, torch.jit.trace의 경우 openmp를 사용합니다. 아래를 참고하실 수 있습니다.
https://pytorch.org/docs/stable/torch.compiler_profiling_torch_compile.html
CPU에서 동작시키는 경우, Torch 컴파일러가 openmp를 타겟으로 최적화를 진행하는 것으로 이해했고 좀 더 자세히 들어가면 GNU openmp / Intel openmp의 선택지가 더 있는 것으로 보입니다.
이상으로 모임에서 드렸던 질문 내용을 정리하였습니다.
제가 컴파일러 전문가가 아니라서 용어나 설명이 틀렸을 수도 있습니다 >.< 너그럽게 생각해주시고 편하게 의견이나 보충 설명 부탁드립니다.
모임에서 같이 공부하고 배우면서 성장할 수 있었으면 좋겠습니다. 감사합니다.