



이번학기에는 학교에서 많은 사람들이 과목은 좆이지만 좋지만 교수 때문에 힘들다는 CoC의 Monster 과목중에 하나인 6241 Compiler Design를 수강했는데, 오늘 부터 본격적인 여름 방학이니 한번 정리하려고 포스트 작성
사실 System을 전공하는 있어서 과연 이 과목이 필요할까? 의문은 있었지만 졸업하려면 들어야 하는 Section이니 컴파일러 backend쪽에 항상 지적(?) 호기심이 있어서 수청 신청을 하였음... (이것이 이번 학기 비극의 시작...)
과연 교수의 사람 좋은 아저씨 웃음 뒤에 숨어 있는 사악한 본성은 숙제, 프로젝트, 시험으로 분출되며 Ph.D. 학생의 정상적인 research를 방해했는데...
더 웃긴 것은 내 advisor가 한번은 "왜 연구가 늦?" 하고 물어 봤는데
"님아... 나 이번학기 6241 수강 ㅠ.ㅠ" 이렇게 대답하면
"아... 그래.. 이해 이해 토닥토닥"
수업은
(1) control flow -> data flow
(2) Scalar optimization -> SSA Form
(3) Dependence analysis -> Loop transformation
(4) Register allocation -> Instruction scheduling
이런 주제로 진행되었는데, 폭넓은 이해를 항상 강조하시라 교수라... 학기 말에는 주제의 구분이 큰 의미가 없었다능...
프로젝은 LLVM를 이용해서 filter를 만드는 것으로
하나는 source code에서 infeasible path를 제거하는 거였고
나머지 하나는 loop를 보고 dependence analysis(사실 교수는 GCD와 Banerjee Test중에 하나를 고르라고 했지만 누구도 Banerjee를 선택하지 않은 듯...) 해서 parallelism를 check하는 것이었는데...
프로젝 자체 보다는 LLVM을 이해하는게 더 어려웠음... 그런데 LLVM이 생각보다 재미있고 이것 저것 해 볼것이 꽤 있다능...
교재는 위에 있는 3권을 이용했는데, 사실 책 덕후인 나는 3권을 다 가지고 B를 맞았지만 같이 듣던 K형은 교재 한권도 없이 노트필기, handout 과 몇몇 paper로 A를 맞더라 ㅠ.ㅠ.
첫 번째 Engineering a Compiler는 Rice에 있는 Keith D. Cooper가 쓴 책인데 notation이 읽기 쉽고 algorithm 설명이 명확, 두 번째 Optimizing Compilers for Modern architectures는 Dependence 관점에서 쓴 책인데 그러다보니 parallelizable에 대한 내용이 많음 Loop carried dependence에 대해 쉽게 설명.. 마지막으로 많은 사람들이 보는 Advanced Compiler Design & Implementation은 뭐랄까... 하여간 내가 공부하기는 편하지 않았음.. 특히 notation이 아주 특이하고 (== 수업이나 paper들과 일치하지 않고..) algorithm 설명이 난잡하다고나..할까..
하여간 수업의 질(과 학점) 을 떠나서 Topic 자체는 대단히 재미있고, 또한 경험적으로나 책을 통해서 "이런 것이 좋은 코딩~!"이라고 하는 내용들이 Compiler 입장에서 "왜 좋은 지" 알 수 있는 계기가 됨. 특히 기말 고사에 나올까하여 따로 공부한 register allocation과 instruction scheduling의 phase order에 따른 optimization은 재미 있었음... ==> 이런 이야기를 하자 후배 한명이 "형, 그런 건 꼭 Letter grade로 안하고 audit으로 수강신청해도 정ㅋ벅ㅋ 가능..." ㅎㅎㅎㅎㅎ
무엇보다 내가 직장 생각을 딱 8년 8개월 하면서 내 자신과 후배들에게 이렇게 하는 것이 좋다능, 또는 이런 것은 컴파일러가 해 준다능.. 이렇게 말했던 것의 왜 그런지 (거의) 속 시원하게 알게 된것이 큰 보람...
하여간 학기는 끝났으니 다음학기에는 뭘 들어야 할까?
P.S)
또 하나 pruned SSA에 대한 paper를 보다가... 1st author가 Jong-Deok Choi ? 많이 익숙한 이름인데? 혹시..
역시나 내가 소프트웨어 연구소 시절에 DM연구소장이시던 최종덕 전무님... 이럴 때 마다 느끼는 건데 삼성전자에 임원급중에 정말 인재 많다... (우리 연구소장도 무려 이호수 부사장이셨으니..물론 두 분 다 IBM research 인재라고도 할 수 있지만..) 이런 분들이 더 능력을 발휘하시면 좋을 텐데..

덧글
LorD_Ken 2009/05/12 15:09 # 답글
첫번째 책.. 3학년때 들은 컴파일러구조론 책이네요...새로운 언어를 만들어오라고 해서 ㄷㄷ..
밸리에서 들렀습니다^^;
중년아무로 2009/05/12 22:35 #
들려주셔서 감사합니다. :)
sanxiyn 2009/05/15 19:42 # 답글
LLVM 개발에 참여하고 있는데요 (C 프론트엔드 쪽) LLVM에 관심 가진 한국분을 보니 반갑습니다.
중년아무로 2009/05/15 23:24 #
담당 교수가 LLVM을 좋아해서... 아마 제가 있던 연구소에서도 최근 LLVM 이용하여 뭔가 하고 있는듯.