• 제목/요약/키워드: JIT 컴파일

검색결과 14건 처리시간 0.021초

Just-In-Time 컴파일러를 이용한 파이썬 기반 지구동역학 코드 가속화 연구 (Boosting the Performance of Python-based Geodynamic Code using the Just-In-Time Compiler)

  • 박상진;안수정;소병달
    • 지구물리와물리탐사
    • /
    • 제24권2호
    • /
    • pp.35-44
    • /
    • 2021
  • 파이썬은 다른 정적 언어(예, C, C++, FORTRAN 등)에 비해 실행 속도가 느리기 때문에 대규모 반복이 필요한 지구동역학 코드를 작성하는데 적합하지 않은 것으로 인식되어 왔다. 그러나 파이썬의 계산 속도를 향상시키기 위해 Just-In-Time (JIT) 컴파일 등과 같은 많은 고속화 수단이 개발되었다. 우리는 파이썬을 기반으로 JIT 컴파일러에 최적화된 맨틀 유동 지구동역학 코드를 개발했다. 코드는 지구동역학 분야에서 널리 사용되는 PIC (Particle-In-Cell) 방법과 유한요소법을 결합하여 맨틀 대류를 수치 모사하며, 코드의 신뢰성을 정량적으로 평가하기 위해 잘 알려진 2차원 맨틀 대류 문제를 벤치마킹했다. 수치 모사 결과, 제곱근 평균 제곱 속도와 넛셀 수가 이전 연구와 거의 일치함을 확인했다. JIT 컴파일러를 적용한 코드는 적용하지 않았을 경우와 대비해 계산 속도가 PIC 방법에서 최대 258배, 전체 행렬 조립 과정에서 최대 30배 향상했다. 따라서, 이번 연구는 파이썬의 계산 성능이 JIT 등의 가속기를 이용하여 충분히 향상되며, 많은 지구 동역학 문제를 해결하는데 활용될 수 있음을 제시하였다.

안드로이드 달빅과 자바 가상머신의 성능비교 (Performance Comparison of Android Dalvik and Java Virtual Machines)

  • 이종혁;김형신
    • 한국산학기술학회논문지
    • /
    • 제12권1호
    • /
    • pp.486-492
    • /
    • 2011
  • 본 논문에서는 안드로이드에 탑재되는 가상머신인 달빅(Dalvik) 가상머신의 성능을 벤치마크를 구현하여 측정하고 기존 임베디드 자바 가상머신과의 성능을 비교한다. 달빅 가상머신의 성능 측정을 위하여 가상머신 성능 측정에 널리 사용되는 SPECJVM 벤치마크를 사용하였다. 달빅과의 성능 비교를 위하여 임베디드 자바 가상머신인 SUN Java 임베디드 버전을 비교 대상으로 선정하여 동일한 벤치마크를 사용하여 실행시간을 비교하였다. 성능 측정은 스마트폰 개발 하드웨어인 오드로이드(Odroid)에 가상머신과 벤치마크 프로그램들을 포팅하여 이루어 졌다. 또한, 달빅 가상머신의 최근 버전에서 구현되지 않은 적시(Just-In-Time) 컴파일 기능을 달빅에 추가하여 성능 개선 정도를 분석하였다. 분석 결과 안드로이드 달빅 가상머신은 SUN 가상머신 성능의 15% 수준을 보였으며, 적시 컴파일 기법을 적용한 달빅은 63% 수준에 도달함을 보였다.

자바 적시 컴파일에서의 조건 수행을 이용한 비어 있는 포인터의 조기검사 (Early Null Pointer Check using Predication in Java Just-In-Time Compilation)

  • 이상규;최형규;문수묵
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제32권7호
    • /
    • pp.683-692
    • /
    • 2005
  • 자바에서는 어떤 객체에 접근하는 작업을 할 때마다 항상 해당 객체에 대한 레퍼런스가 널 (Null)인지 여부를 먼저 검사하도록 규정하고 있다. 자바 언어는 객체 중심 언어이기 때문에 객체 접근이 빈번하며 이러한 널 포인터 검사는 자바 프로그램의 성능을 크게 저하시킬 수 있다. 이러한 성능 저하를 줄이기 위한 방법으로 불필요하게 반복되는 널 포인터 검사를 제거하는 기법이 사용되고 있다. 즉, 적시 (Just-in-Time, JIT) 컴파일러가 사용되는 자바 수행 환경에서 코드 분석을 통해 불필요한 널 포인터 검사 코드를 제거하는 최적화를 한다. 본 논문은 JIT 컴파일러 수행 환경에서 조건 수행(predication)이라는 최근 마이크로프로세서의 특징을 이용하여, 기존의 최적화로는 제거할 수 없는 널 포인터 검사 코드를 추가로 없애는 방법을 제시한다. 일반적으로 널 포인터 검사 코드는 비교와 분기 두 명령어로 이루어져 있는데, 그 중에 비교 명령어를 객체를 사용하기 전에 수행하는 것이 아니라 객체가 정의된 직후에 미리 수행하도록 함으로써 널 포인터 검사를 위해 수행되는 총 비교 명령어 수를 줄이는 것이 이 방법의 주된 내용이다. 실험 결과 기존의 널 포인터 제거로 최적화된 코드에 비해 수행된 비교 명령어의 수는 SPECjvm98에서 평균 3.21$\%$줄었고, 생성된 비교 명령어 수는 1.98$\%$ 줄었다. 이는 인텔 IA-64 아이테니엄(Itanium) 컴퓨터에서 평균 0.32$\%$의 성능 향상을 가져왔다.

최적화 컴파일된 자바스크립트 함수에 대한 최적화 해제 회피를 이용하는 런타임 가드 커버리지 유도 퍼저 (Runtime-Guard Coverage Guided Fuzzer Avoiding Deoptimization for Optimized Javascript Functions)

  • 김홍교;문종섭
    • 정보보호학회논문지
    • /
    • 제30권3호
    • /
    • pp.443-454
    • /
    • 2020
  • 자바스크립트 엔진은 주로 웹 브라우저에 적재되어 웹 페이지를 표시하는 여러 기능 중 자바스크립트 코드를 입력으로 받아 처리하는 모듈이다. 자바스크립트 엔진 내 취약점은 종단 사용자의 시스템 보안을 위협할 수 있어 많은 퍼징 테스트 연구가 수행되었다. 그중 일부 연구는 자바스크립트 엔진 내 테스트 커버리지를 유도하는 방식으로 퍼징 효율을 높였으나, 최적화되어 동적으로 생성된 기계어 코드에 대한 커버리지 유도 퍼징은 시도되지 않았다. 최적화된 자바스크립트 코드는 예외적인 흐름 발생 시 코드를 해제하는 런타임 가드의 기능으로 인해 퍼징을 통한 충분한 반복 테스트가 어렵다. 본 논문은 이러한 문제점을 해결하기 위해 최적화 해제를 회피하여 최적화된 기계어 코드에 대해 퍼징 테스트를 수행하는 방법을 제안한다. 또한, 동적 바이너리 계측 방식으로 수행된 런타임 가드의 커버리지를 계측하고 커버리지 증가를 유도하는 방식을 제안한다. 실험을 통해, 본 연구가 제안하는 방식이 런타임 가드 커버리지, 시간당 테스트 횟수의 두가지 척도에서 기존의 방식보다 뛰어남을 보인다.