-
Set Alive2 GitHub Actions and BenchmarkingExperience/Writting 2026. 6. 12. 11:37

SoftWare Practice and Principle: SWPP 수업의 일환으로 GitHub Actions 세팅을 진행하였다.
Official repository for swpp2026 class
Our team repository
실제로 세팅한 action 은 여섯 가지인데,- alive2 test
- (official) benchmark result comparison
- unofficial benchmark result comparison
- integrated test
- format check
- build test
이 중 alive2 test, benchmark 이 두 가지 Action 세팅법들을 다루고자 한다.

alive2 는 llvm ir representation (.ll) 간의 정합성을 보장하는 테스트 툴이다.
두 .ll 파일을 받아서, 컴퓨터에서 동일한 동작을 수행하는지를 정적 테스트할 수 있다.
alive2_veryfying_existing_optimizations_presentation.pdf0.44MBalive2_bounded_translation_validation_for_llvm.pdf0.78MB
https://alive2.llvm.org/ce/ 에서 GUI 프로그램을 제공 중이다
GitHub Action 세팅은 .github 폴더 세팅으로 이루어진다.

루트/.github/workflows 폴더에 alive2.yml 파일을 만든다.
여기다가 yml 을 적당히 잘 써서 올리면 GitHub 가 알아서 인식해서 Actions 로 만들어준다.
다음과 같이 작성한다.
여기서 Alive2 빌드 결과가 나오면 캐시를 해놓는게 정신건강에 좋다.
GitHub 에서 주는 기계로 alive2 빌드를 돌리면 60분 정도 걸리게 되는데, 매 push 마다 그 시간을 기다릴 수는 없으므로 빌드 결과물을 캐시해놓는다.
빌드를 미리 해놓고 내가 이미지 떠서 올리고 싶었지만 TA 가 가끔씩 alive2 코드랑 도커 이미지 스펙을 바꿔서 그게 안 됐다.
Benckmark 는 특이점이 Base와 Head 의 성능을 비교해야 하므로 checkout 을 해야한다. Actions/checkout 레포지토리를 보면 어떻게 하는지 나온다.
이 Benchmark CI 는 내 개발력의 증가에 상당한 기여를 한 Yorkie 프로젝트의 영향을 받아서 만들어졌다. 있으면 편하더라고.
bench.yml0.00MBbenchmark.sh0.01MBcompare-benchmark.py0.00MB
이렇게 세팅하면 된다.
이 글 볼 사람 대부분이 소개원실 들을 사람일 것 같아서 첨언하자면 매 PR 마다 정확성 증명 반드시 해라 나중에 hidden 테케에서 컴파일 오류 나면 그 테케가 통째로 0점 처리 당하는 안타까운 상황이 펼쳐진다.
'Experience > Writting' 카테고리의 다른 글
Known attack for RSA (0) 2026.01.27 컴파일러보다 최적화 잘 하기: Constant Division Strength Reduction (0) 2025.12.04 ASCII art로 3d 공간 구현하기 (5) 2024.09.26 MySQL .frm .MYD .MYI 파일로 데이터 가져오기 (3) 2024.09.05
