DOI QR코드

DOI QR Code

Study on LLVM application in Parallel Computing System

병렬 컴퓨팅 시스템에서 LLVM 응용 연구

  • 조중석 (국립순천대학교 전기전자공학부) ;
  • 조두산 (국립순천대학교 전기전자공학부) ;
  • 김용연 (ETRI 연구소)
  • Received : 2018.10.07
  • Accepted : 2018.12.26
  • Published : 2019.02.28

Abstract

In order to support various parallel computing systems, it is necessary to extend LLVM IR to more efficiently support vector / matrix and to design LLVM IR to machine code as a new algorithm. As shown in the IR example, RISC instruction generation is naturally generated because the RISC instruction is basically composed of the RISC instruction, and the vector instruction is also not supported. There is a need for new IR structures, command generation algorithms and related extensions to support vector / matrix more robustly. To do this, it is important to map each instruction in the LLVM IR to the appropriate instruction in the target architecture (vector / matrix) (instruction selection algorithm). It is necessary to understand the meaning of LLVM IR command, to compare the meaning of each instruction of the target architecture with syntax, and to select the instruction that matches the pattern to make mapping efficient.

다양한 병렬 컴퓨팅 시스템을 지원하기 위해서는 LLVM IR을 벡터/행렬을 보다 효과적으로 지원할 수 있도록 확장하는 것과 LLVM IR을 machine code로 바꾸어 주는 부분을 새로운 알고리즘으로 설계하여 구현하면 된다. IR 예제에서 보았듯이 기본적으로 RISC 명령어로 구성되어 있기 때문에 RISC 명령어 생성은 자연스럽게 생성되며, 벡터 또한 현재 지원가능한데 행렬 명령어는 지원되지 못하고 있다. 벡터/행렬을 보다 강력하게 지원하기 위한 새로운 IR 구조, 명령어 생성 알고리즘 및 관련 부분의 확장이 필요하다. 이를 위해 LLVM IR의 각 명령어를 (벡터/행렬을 위한) target architecture의 적당한 명령어로 mapping을 해주는 부분 (instruction selection 알고리즘)이 중요하다. LLVM IR 명령어의 의미를 파악하고, target architecture의 각 명령어 의미와 syntax를 비교하여, 패턴이 일치하는 명령어를 선택하여 mapping을 효율적으로 해줘야 한다.

Keywords

GJMGCK_2019_v5n1_395_f0001.png 이미지

그림 1. DAG 예제 Figure 1. DAG example

GJMGCK_2019_v5n1_395_f0002.png 이미지

그림 2. 명령어 생성 예제 Figure 2. An example of instruction generation

References

  1. The LLVM Compiler Infrastructure, online : https://llvm.org/
  2. Compiler Construction/Introduction, online : https://en.wikibooks.org/wiki/Compiler_Construction/Introduction
  3. Clang: a C language family frontend for LLVM, online : https://clang.llvm.org/
  4. Static single assignment form, online : https://en.wikipedia.org/wiki/Static_single_assignment_form
  5. NP-completeness, online : https://en.wikipedia.org/wiki/NP-completeness
  6. Jong-Youel Park, Young-Hyun Chang, "Study on Arduino Kit VR contents modularization based on virtualization technology in software education field," The Journal of the Convergence on Culture Technology (JCCT), Vol. 4, No. 3, pp.293-298, August 31, 2018. http://dx.doi.org/10.17703/JCCT.2018.4.3.293