처음 블로그를 만든 날짜를 보니 포항에서 열심히 대학원을 다닐떄 였군요 아마 첫논문을 작성할 때 쯤부터 너무 정신이 없어서 간간히 작성하던 블로그가 멈춰있었던것 같습니다.
자주쓰는 파이썬 스크립트 패턴
개인적으로 shell보다는 python를 자주 사용하기 때문에 자주 사용하는 패턴들을 간단하게 정리
glob,os
glob는 유닉스 스타일 경로명 패턴 확장 라이브러입니다. 이것과 os 라이브러리를 이용하면 간단하게 파일을 찾거나 바꿀수 있습니다. 개인적으로 실험 결과를 파싱할때 많이 사용하는 라이브러리 입니다.
간단논문 정리 TVM An Automated End-to-End Optimizing Compiler for Deep Learning (OSDI 18)
논문 정리 LLVM A Compilation Framework for Lifelong Program Analysis & Transformation(CGO 04)
논문 정리 Chameleon Adaptive Code Optimization for Expedited Deep Neural Network Compilation(ICLR 2020)
논문 정리 NeuroVectorizer End-to-End Vectorization with Deep Reinforcement Learning (CGO 20)
간단논문 정리 Fast and Effective Orchestration of Compiler Optimizations(Zhelong Pan,Rudolf Eigenmann;Purdue University ;CGO’06)
간단논문 정리 End-to-End Deep Learning of Optimization Heuristics (PACT 17)
간단논문 정리 DARTS DIFFERENTIABLE ARCHITECTURE SEARCH (ICLR 2019)
LLVM loop unroll and jam pass and view-cfg
대학원 컴파일러 수업에서 ML을 이용하여 unroll and jam을 판별하는 모델을 학습을 하는 term project를 진행하였다.
unroll and jam pass는 이름에서 알 수 있듯이 loop 최적화에 관련된 pass로 unroll 과 jam을 수행하여 innermost loop body의 병렬성을 증가시켜서 제한된 resource의 utilization을 증가시키는 최적화이다.
내 기억이 맞다면 O2 이상의 최적화 부터 적용되는데 opt의 debug를 통하여 볼때 생각보다 잘? 사용이 안된다.
LLVM code를 보면 대부분 loop unroll과 loop fusion pass를 재활용하며 검사 정도만 하는데 이 때문에 da,lcssa,loop simplify가 조건을 만족하여도 unroll and jam pass가 동작되지 않는 경우가 많다.