Closed aqjune closed 8 years ago
관련된 이슈 : #38, #18, #23 입니다..!
수정되는 파일이 많아서 웹에서 잘 안 열리는 것 같네요. 일단은 본문에 적은 내용이 전체 변경사항의 요약입니다.
수정되는 파일이 많아서 직접 확인은 못하지만, 묘사대로라면 전 머지하는게 좋을 듯 하네요.
Vectorization 문제가 있는가 해서 lowerswitch를 한 다음 main.native에 생성된 .bc 파일들을 주고 돌려 보았고, 문제가 없음을 확인했습니다.
(ceval.bc에서 Fatal error: exception Failure("BlockAddress isnt Constant")
이 문장이 약간 혼동의 여지가 있어보이는데, 이 PR에서 새로 만든 .bc 파일들을 opt 돌려서 나온 트리플들 검산해보니 저런 에러가 떴다는 의미인가요? 그렇다면 opt 돌릴 때 인자는 어떻게 들어간건가요?
아하, 제가 새로 만든 파이썬 .ll 파일들이 vellvm에서 잘 읽히는지를 확인하고 싶었습니다.
그래서 각 파일들에 대해서
main.native a.bc a.bc empty.json
와 같이 해서 실행해 보았고, ceval.bc를 제외한 모든 파일들이 성공적으로 검산되는 것을 확인했다는 뜻이었습니다.
아아아, 이해했습니다.
머지해도 문제 없을 듯 합니다. 머지할게요
요약
디버깅 정보가 없는 파이썬 코드를 생성했습니다. -O0 옵션을 주어서 컴파일한 코드입니다. programs_new/Python-new-nodbg 에 저장했습니다.
이전에 윤승이형이 만드신 .bc.ll 파일은 228개였는데, 제가 만든 .bc.ll 파일은 227개입니다. 개수가 다른 이유를 확인해 본 결과, 윤승이형의 것엔 _hashopenssl.bc.ll 과 _ssl.bc.ll 파일이 있었는데 제가 만든 것에는 _bc2module.bc.ll 파일이 존재했기 때문입니다. 일단은 위 3개 파일을 모두 사용하는 것으로 해서 총 229개의 파일을 모아 두었습니다. (그래서 _hashopenssl.bc.ll, _ssl.bc.ll 에는 디버깅 정보가 존재할 수 있습니다)
Vectorization 문제가 있는가 해서 lowerswitch를 한 다음 main.native에 생성된 .bc 파일들을 주고 돌려 보았고, 문제가 없음을 확인했습니다. (ceval.bc에서 Fatal error: exception Failure("BlockAddress isnt Constant") 라는 에러가 발생했는데, 이것은 원래 ceval.bc에서도 발생했었다고 @kim-yoonseung 님께서 말씀하셨습니다)
전체 소스 용량이 52MB에서 21MB로 줄어든 것을 확인할 수 있었습니다.
생성에 사용한 방법
Makefile 에서 OPT 컴파일 옵션에 -save-temps 를 추가해서 컴파일 도중에 .bc 파일들을 생성하도록 했습니다. 자세한 내용은 BENCHMARK.md (및 본문 아래)에 적어 두었습니다. Python-3.4.1 폴더에서
find . | grep "\.bc$" | grep -v "\.tmp\.bc$"
명령어를 써서, 만들어진 .bc파일들 중 .tmp.bc로 끝나는 파일들을 제외한 것을 모두 모았습니다.(컴파일을 하면 getbuildinfo.tmp.bc 와 getbuildinfo.bc 와 같이, 두 버젼의 .bc 파일이 나옵니다. 그런데 이 두 파일들은 서로 내용이 동일하기 때문에 .tmp.bc파일들은 무시해도 괜찮은 것을 확인했습니다. 두 파일이 다른 케이스가 딱 하나 있었는데(getbuildinfo.bc/getbuildinfo.tmp.bc), 디스어셈블해서 확인해 본 결과 어떤 시간을 나타내는 string literal 내용 하나만이 서로 달랐던 것 같습니다.)