2019.03.21

컴파일러 프레임워크 'LLVM 8' 발표··· 웹어셈블리 코드 생성 기능 기본 적용

Serdar Yegulalp | InfoWorld
LLVM 프로젝트가 LLVM 8을 정식 공개했다. LLVM은 클랭(Clang) C/C++ 컴파일러를 강화하는 컴파일러 프레임워크이자 러스트(Rust)와 스위프트(Swift) 같은 언어를 위한 컴파일러다.
 
이번 최신 버전의 가장 큰 특징은 웹어셈블리(WebAssembly) 코드 생성 기능이 테스트 상태에서 벗어나 기본으로 적용된 것이다. 이 컴파일러는 이미 LLVM의 웹어셈블리 코드 생성 툴을 임시로 사용해 왔다. 예를 들어 (일부 추가 작업이 필요하긴 하지만) 러스트를 웹어셈블리로 컴파일할 수 있었다. 그러나 이번에 웹어셈블리용 LLVM을 실제 기업 시스템에서 사용할 수 있음을 공식화했다. 물론 웹어셈블리 자체는 아직 초기 단계의 기술이다. 그러나 이번 발표는 자바스크립트 외에 다른 언어로 만든 코드를 자유롭게 컴파일해 브라우저에서 실행하는 단계로 나아가는 중요한 이정표가 될 전망이다.
 
이밖에 LLVM 8에서는 인텔 캐스케이드 레이크 칩셋으로 컴파일할 수 있고, 명령줄 플래그 방식을 추가로 지원한다. 이는 근본적으로 기존의 인텔 스카이레이크 칩셋에 대한 지원과 같다. 그러나 인텔 제온 파이와 제온 스케일어블 프로세서에서 사용할 수 있는 새로운 AVX-512 명령 세트의 일부인 VNNI(Vector Neural Network Instructions) 출력을 지원하는 것에 차이가 있다. VNNI는 그 이름에서 알 수 있는 것처럼 GPU 가속이 불가능한 인텔 시스템 환경에서 딥러닝 워크로드 처리 속도를 높이기 위한 명령어다.
 
LLVM 코드 생성은 CPU에 제한되지 않는다. LLVM 8은 AMDGPU 백엔드용 코드 생성 기능도 강화했다. 이를 이용하면 LLVM 코드를 오픈소스 라데온(Radeon) 그래픽 스택용으로 생성할 수 있다. 베가(Vega) 시리즈 같은 새 AMD GPU는 AMDGPU 지원이 가장 큰 혜택이 될 것으로 보인다. IBM 파워 프로세서, 특히 파워9에 맞춘 코드 생성도 개선됐다. LLVM의 MIPS/MIP64 프로세서용 JIT(just-in-time) 컴파일러를 지원하고, 소프트웨어 프로필에서 수집한 디버그 정보 형태의 캐시 프리패칭이 가능하다. 클랭(C/C++ 컴파일러) 프로젝트 내 오픈CL와 오픈MP 5.0에 대한 지원도 개선됐다. ciokr@idg.co.kr



2019.03.21

컴파일러 프레임워크 'LLVM 8' 발표··· 웹어셈블리 코드 생성 기능 기본 적용

Serdar Yegulalp | InfoWorld
LLVM 프로젝트가 LLVM 8을 정식 공개했다. LLVM은 클랭(Clang) C/C++ 컴파일러를 강화하는 컴파일러 프레임워크이자 러스트(Rust)와 스위프트(Swift) 같은 언어를 위한 컴파일러다.
 
이번 최신 버전의 가장 큰 특징은 웹어셈블리(WebAssembly) 코드 생성 기능이 테스트 상태에서 벗어나 기본으로 적용된 것이다. 이 컴파일러는 이미 LLVM의 웹어셈블리 코드 생성 툴을 임시로 사용해 왔다. 예를 들어 (일부 추가 작업이 필요하긴 하지만) 러스트를 웹어셈블리로 컴파일할 수 있었다. 그러나 이번에 웹어셈블리용 LLVM을 실제 기업 시스템에서 사용할 수 있음을 공식화했다. 물론 웹어셈블리 자체는 아직 초기 단계의 기술이다. 그러나 이번 발표는 자바스크립트 외에 다른 언어로 만든 코드를 자유롭게 컴파일해 브라우저에서 실행하는 단계로 나아가는 중요한 이정표가 될 전망이다.
 
이밖에 LLVM 8에서는 인텔 캐스케이드 레이크 칩셋으로 컴파일할 수 있고, 명령줄 플래그 방식을 추가로 지원한다. 이는 근본적으로 기존의 인텔 스카이레이크 칩셋에 대한 지원과 같다. 그러나 인텔 제온 파이와 제온 스케일어블 프로세서에서 사용할 수 있는 새로운 AVX-512 명령 세트의 일부인 VNNI(Vector Neural Network Instructions) 출력을 지원하는 것에 차이가 있다. VNNI는 그 이름에서 알 수 있는 것처럼 GPU 가속이 불가능한 인텔 시스템 환경에서 딥러닝 워크로드 처리 속도를 높이기 위한 명령어다.
 
LLVM 코드 생성은 CPU에 제한되지 않는다. LLVM 8은 AMDGPU 백엔드용 코드 생성 기능도 강화했다. 이를 이용하면 LLVM 코드를 오픈소스 라데온(Radeon) 그래픽 스택용으로 생성할 수 있다. 베가(Vega) 시리즈 같은 새 AMD GPU는 AMDGPU 지원이 가장 큰 혜택이 될 것으로 보인다. IBM 파워 프로세서, 특히 파워9에 맞춘 코드 생성도 개선됐다. LLVM의 MIPS/MIP64 프로세서용 JIT(just-in-time) 컴파일러를 지원하고, 소프트웨어 프로필에서 수집한 디버그 정보 형태의 캐시 프리패칭이 가능하다. 클랭(C/C++ 컴파일러) 프로젝트 내 오픈CL와 오픈MP 5.0에 대한 지원도 개선됐다. ciokr@idg.co.kr

X