• 제목/요약/키워드: 컴파일러 개발

검색결과 183건 처리시간 0.027초

인공지능 프로세서 컴파일러 개발 동향 (Trends of Compiler Development for AI Processor)

  • 김진규;김혜지;조용철;김현미;여준기;한진호;권영수
    • 전자통신동향분석
    • /
    • 제36권2호
    • /
    • pp.32-42
    • /
    • 2021
  • The rapid growth of deep-learning applications has invoked the R&D of artificial intelligence (AI) processors. A dedicated software framework such as a compiler and runtime APIs is required to achieve maximum processor performance. There are various compilers and frameworks for AI training and inference. In this study, we present the features and characteristics of AI compilers, training frameworks, and inference engines. In addition, we focus on the internals of compiler frameworks, which are based on either basic linear algebra subprograms or intermediate representation. For an in-depth insight, we present the compiler infrastructure, internal components, and operation flow of ETRI's "AI-Ware." The software framework's significant role is evidenced from the optimized neural processing unit code produced by the compiler after various optimization passes, such as scheduling, architecture-considering optimization, schedule selection, and power optimization. We conclude the study with thoughts about the future of state-of-the-art AI compilers.

이기종 무선인터넷 플랫폼의 어플리케이션 상호 호환을 위한 변환 솔루션 개발 (Development of Conversion Solutions for Interoperability of Applications on Different Mobile Internet Platforms)

  • 강경보;강동현;홍창표;류종민;이중훈;윤정한;좌정우
    • 한국콘텐츠학회논문지
    • /
    • 제7권4호
    • /
    • pp.1-9
    • /
    • 2007
  • 이동통신사업자는 기존의 음성서비스에서 고속 무선인터넷 서비스를 기반으로 하는 신규 사업모델 개발을 위해 고속 무선인터넷 망을 구축하고 다기능 휴대폰을 개발하여 보급하고 있다. 국내 이동통신사업자는 무선인터넷 서비스의 활성화를 위해 cdma2000-1x, EvDo에서 HSDPA로 고속 무선인터넷망을 구축하고 MP3, MPEG, 3D 게임엔진, DMB 등 이동멀티미디어 솔루션과 팝업 창과 같이 새로운 UI를 갖는 다기능 휴대폰을 개발하여 보급하고 있다. 또한, 무선인터넷 서비스의 콘텐츠 개발을 위해 WAP, ME등의 모바일 브라우저와 WIPI, J2ME, BREW 등의 무선인터넷 플랫폼을 사용하고 있다. 그러나 이동통신 사업자별로 다른 무선인터넷 플랫폼을 사용하고 있어 콘텐츠 사업자가 무선인터넷 서비스를 사용자에게 제공하기 위해서는 서로 다른 무선인터넷 플랫폼으로 어플리케이션을 개발하여야 하는 문제가 있다. 본 논문에서는 무선인터넷 플랫폼에서 개발된 어플리케이션을 다른 무선인터넷 플랫폼에서 동작할 수 있도록 하는 어플리케이션 상호 호환을 위한 변환 솔루션을 제안한다. 제안하는 어플리케이션 상호 호환을 위한 변환 솔루션은 대표적 인 무선인터넷 플랫폼인 WIPI와 BREW 간 어플리케이션 변환을 위 해 단일패스(one-pass) 컴파일러 방식을 사용하여 개발되었다. 개발된 변환 솔루션의 성능은 무선인터넷 핵심 서비스인 게임 어플리케이션에 적용하여 API 변환율, 프로그램 성능, 변환 프로그램 크기, 변환 소요시간에 대해 확인하였다.

모바일 게임을 위한 번역 기법 (Translation Techniques for Mobile Games)

  • 박지우;오세만
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제16권9호
    • /
    • pp.936-947
    • /
    • 2010
  • 하나의 콘텐트를 다양한 플랫폼에서 서비스하는 것은 모바일 게임 시장에서 매우 중요한 사항이다. 서로 다른 플랫폼에서 서비스하기 위해서는 기존의 콘텐츠를 특정한 플랫폼에 적합한 형태로 재개발해야하는 추가 비용이 발생한다. 더욱이, 새로운 플랫폼이 등장하는 경우에 다수의 콘텐츠를 단기간에 개발하는 것은 많은 노력과 비용을 요구한다. 따라서 기존의 콘텐츠를 새로운 플랫폼에서 실행될 수 있도록 변환하는 기법에 관한 연구가 필요하다. 본 논문에서는 모바일 콘텐츠를 새로운 플랫폼에서 실행 가능한 형태로 변환하는 모바일 게임을 위한 번역 기법을 제안하고 이를 적용하여 안드로이드 플랫폼에 대한 소스 레벨 콘텐츠 변환기를 설계하고 구현한다. 컴파일러 이론을 적용하여 개발하였으며, 서로 다른 프로그래밍 언어 간의 변환 문제를 부분적으로 해결하였다. 또한 언어 간의 번역뿐만 아니라 커널 이식, 라이브러리 매핑 등 체계적으로 소스 레벨 콘텐츠 변환도구를 구현하였다. 이러한 연구는 기존 모바일 게임에 대한 활용도를 증대시키고 모바일 콘텐츠 산업 활성화에 기여할 수 있을 것으로 기대된다.

지연함수언어 Miranda의 G-기계 기반 번역기 개발 (Development of a G-machine Based Translator for a Lazy Functional Programming Language Miranda)

  • 이종희;최관덕;윤영우;강병욱
    • 한국정보처리학회논문지
    • /
    • 제2권5호
    • /
    • pp.733-745
    • /
    • 1995
  • 본 연구는 함수언어의 번역기 개발을 목적으로 한다. 이를 위하여 지연어의를 갖 는 원시함수 언어를 정의하고 그것의 번역기를 설계, 구현, 평가한다. 함수프로그램의 실행모형은 G-기계를 기반으로 한 컴비네이터 그래프축소이다. 번역기는 전체 4단계로 구성되며 원시프로그램을 C를 사용한 목적프로그램으로 번역한다. 번역기의 첫 번째 단계에서는 원시프로그램을 확장람다계산 그래프로 번역하고, 두 번째 단계에서 수 퍼컴비네이터그래프로 변환하고, 세 번째 단계에서 G-기계어 프로그램으로 번역하고, 마지막 단계에서 G-기계어 프로그램을 C로 번역한다. 생성된 목적 프로그램은 C 컴파 일러에 의해서 실행 프로그램은 번역한다. 번역기 구현은 UNIX환경에서 컴파일러 자동 화 도구인 YACC, Lex를 이용하여 구문분석기, 어휘분석기를 구현하고, 그 외의 루틴은 C로 구현한다. 본 논문에서는 번역기에 사용된 구현기법과 수행결과를 기술한다.

  • PDF

자바 클래스 파일에 대한 시각화 실행 분석기 (Visualized Execution Analyzer for the Java Class File)

  • 고광만
    • 정보처리학회논문지A
    • /
    • 제11A권5호
    • /
    • pp.319-324
    • /
    • 2004
  • 자바 언어는 빠른 속도로 인터넷 및 분산 응용 분야 등에서 활용되고 있으며 단순히 응용 소프트웨어를 개발할 수 있는 프로그래밍 언어이상으로 활용 범위가 확대되고 있다. 특히, 실행 환경인 자바 가상 기계에 연관되어 다양한 연구가 진행되고 있으며 자바 클래스 파일에 대한 분석 및 응용 분야에 적합한 형태로 정보를 활용할 수 있는 다양한 시도가 진행되고 있다. 자바 언어에 대한 클래스 파일은 소스 프로그램의 의미를 자바 가상 기계에서 실행 가능한 형식으로 변환된 형태이다. 이러한 클래스 파일의 구조 및 실질적인 실행 과정에 대한 분석은 디컴파일러 구성, 소스 프로그램의 디버깅 등에 편리성을 지원할 수 있다. 본 논문에서는 이러한 클래스 파일에 대한 분석을 비롯하여 실제로 실행되는 과정을 보다 시각적으로 표현하기 위한 실행 분석기 개발에 관한 연구이다 이를 위해 클래스 파일의 내용을 GUI 환경에서와 같이 접근 및 표현이 용이하도록 구현하였다. 클래스 파일이 포함하고 있는 정보들을 Constant_Pool 부분, Class_file 부분, Interface 부분, Field 부분, Method 부분, Attribute 부분으로 나뉘어서 나타내도록 해주었다. 또한 클래스 파일의 실행 과정에서 핵심 정보를 저장하고 있는 메소드 영역 정보, 오퍼란드 스택 정보, 지역 변수의 정보를 시각적으로 표현하였다.

그래픽 유저 인터페이스를 지원하는 웹 기반 프로그래밍 환경 '봄밭'의 설계 및 구현 (BomBart : Web-based Programming Environment Support to Graphic User Interface)

  • 천준석;송지원;우균
    • 한국콘텐츠학회논문지
    • /
    • 제17권5호
    • /
    • pp.317-325
    • /
    • 2017
  • 최근 전세계적으로 프로그래밍 교육에 대한 관심이 증가하고 있다. 하지만 대부분의 언어는 컴파일러와 통합 개발 환경을 컴퓨터에 설치하여야만 사용할 수 있는 문제가 있다. 이를 해결하기 위해 Eclipse Che나 JDOODLE과 같은 웹 기반 프로그래밍 환경이 다수 개발되었지만 대부분이 GUI 프로그래밍을 지원하지 않고, 특히 한글 프로그래밍 언어는 지원하지 않는다. 이 논문에서는 '봄밭'이라고 하는 웹 기반 프로그래밍 환경을 제안한다. 봄밭은 한글 프로그래밍 언어인 새싹을 지원하고, GUI 프로그래밍도 지원한다. 콘솔 기반의 입출력 또한 지원한다. 콘솔 및 GUI 인터페이스를 모두 지원하기 위해서 봄밭에는 두 개의 서브 컴파일 시스템을 설계하고 구현하였다. 우리는 봄밭의 GUI 지원의 성능을 측정하기 위해서 Java의 모든 GUI 튜토리얼 코드를 새싹으로 변환하여 봄밭에서 실행해 보았다. 그 결과, 81.42%의 코드를 정상적으로 실행할 수 있는 것을 확인하였다.

스마트 시설환경 환경변수 분석을 위한 Open source 기반 인공지능 활용법 분석 (A Benchmark of AI Application based on Open Source for Data Mining Environmental Variables in Smart Farm)

  • 민재기;이동훈
    • 한국농업기계학회:학술대회논문집
    • /
    • 한국농업기계학회 2017년도 춘계공동학술대회
    • /
    • pp.159-159
    • /
    • 2017
  • 스마트 시설환경은 대표적으로 원예, 축산 분야 등 여러 형태의 농업현장에 정보 통신 및 데이터 분석 기술을 도입하고 있는 시설화된 생산 환경이라 할 수 있다. 근래에 하드웨어적으로 급증한 스마트 시설환경에서 생산되는 방대한 생육/환경 데이터를 올바르고 적합하게 사용하기 위해서는 일반 산업 현장과는 차별화 된 분석기법이 요구된다고 할 수 있다. 소프트웨어 공학 분야에서 연구된 빅데이터 처리 기술을 기계적으로 농업 분야의 빅데이터에 적용하기에는 한계가 있을 수 있다. 시설환경 내/외부의 다양한 환경 변수는 시계열 데이터의 난해성, 비가역성, 불특정성, 비정형 패턴 등에 기인하여 예측 모델 연구가 매우 난해한 대상이기 때문이라 할 수 있다. 본 연구에서는 근래에 관심이 급증하고 있는 인공신경망 연구 소프트웨어인 Tensorflow (www.tensorflow.org)와 대표적인 Open source인 OpenNN (www.openn.net)을 스마트 시설환경 환경변수 상호간 상관성 분석에 응용하였다. 해당 소프트웨어 라이브러리의 운영환경을 살펴보면 Tensorflow 는 Linux(Ubuntu 16.04.4), Max OS X(EL capitan 10.11), Windows (x86 compatible)에서 활용가능하고, OpenNN은 별도의 운영환경에 대한 바이너리를 제공하지 않고 소스코드 전체를 제공하므로, 해당 운영환경에서 바이너리 컴파일 후 활용이 가능하다. 소프트웨어 개발 언어의 경우 Tensorflow는 python이 기본 언어이며 python(v2.7 or v3.N) 가상 환경 내에서 개발이 수행이 된다. 주의 깊게 살펴볼 부분은 이러한 개발 환경의 제약으로 인하여 Tensorflow의 주요한 장점 중에 하나인 고속 연산 기능 수행이 일부 운영 환경에 국한이 되어 제공이 된다는 점이다. GPU(Graphics Processing Unit)의 제공하는 하드웨어 가속기능은 Linux 운영체제에서 활용이 가능하다. 가상 개발 환경에 운영되는 한계로 인하여 실시간 정보 처리에는 한계가 따르므로 이에 대한 고려가 필요하다. 한편 근래(2017.03)에 공개된 Tensorflow API r1.0의 경우 python, C++, Java언어와 함께 Go라는 언어를 새로 지원하여 개발자의 활용 범위를 매우 높였다. OpenNN의 경우 C++ 언어를 기본으로 제공하며 C++ 컴파일러를 지원하는 임의의 개발 환경에서 모두 활용이 가능하다. 특징은 클러스터링 플랫폼과 연동을 통해 하드웨어 가속 기능의 부재를 일부 극복했다는 점이다. 상기 두 가지 패키지를 이용하여 2016년 2월부터 5월 까지 충북 음성군 소재 딸기 온실 내부에서 취득한 온도, 습도, 조도, CO2에 대하여 Large-scale linear model을 실험적(시간단위, 일단위, 주단위 분할)으로 적용하고, 인접한 세그먼트의 환경변수 예측 모델링을 수행하였다. 동일한 조건의 학습을 수행함에 있어, Tensorflow가 개발 소요 시간과 학습 실행 속도 측면에서 매우 우세하였다. OpenNN을 이용하여 대등한 성능을 보이기 위해선 병렬 클러스터링 기술을 활용해야 할 것이다. 오프라인 일괄(Offline batch)처리 방식의 한계가 있는 인공신경망 모델링 기법과 현장 보급이 불가능한 고성능 하드웨어 연산 장치에 대한 대안 마련을 위한 연구가 필요하다.

  • PDF

SEED 프로세스 중심 소프트웨어 개발 환경을 위한 프로세스 프로그래밍 언어 및 수행지원 시스템 (A Process Programming Language and Its Runtime Support System for the SEED Process-centered Software Engineering Environment)

  • 김영곤;최혁재;이명준;임채덕;한우용
    • 한국정보과학회논문지:컴퓨팅의 실제 및 레터
    • /
    • 제5권6호
    • /
    • pp.727-737
    • /
    • 1999
  • 프로세스 중심 소프트웨어 개발 환경(PSEE : Process-centered Software Engineering Environment)은 소프트웨어 개발자를 위한 여러가지 정보의 제공과 타스크의 수행, 소프트웨어 개발 도구의 수행 및 제어, 필수적인 규칙이나 업무의 수행등과 같은 다양한 행위를 제공하는 프로세스 모형의 수행을 통하여 소프트웨어 개발 행위를 지원한다. SEED(Software Engineering Environment for Development)는 효율적인 소프트웨어 개발과 프로세스 모형의 수행을 제어하기 위해 ETRI에서 개발된 PSEE이다.본 논문에서는 SEED에서 프로세스 모형을 설계하기 위해 사용되는 SimFlex 프로세스 프로그래밍 언어와, 수행지원시스템인 SEED Engine의 구현에 대하여 기술한다. SimFlex는 간단한 언어 구조를 가진 프로세스 프로그래밍 언어이며, 적절한 적합화를 통하여 다른 PSEE에서 사용될 수 있다. SimFlex 컴파일러는 SimFlex에 의해 기술된 프로세스 모형을 분석하고, 모형의 오류를 검사하며, SEED Engine에 의해 참조되는 중간 프로세스 모형을 생성한다. 중간 프로세스 모형을 사용하여 SEED Engine은 외부 모니터링 도구와 연관하여 사용자를 위한 유용한 정보뿐만 아니라 SimFlex에 의해 기술된 프로세스 모형의 자동적인 수행을 제공한다. SimFlex 언어와 수행지원 시스템의 지원을 통하여 소프트웨어 프로세스를 모형화하는데 드는 비용과 시간을 줄일 수 있으며, 편리하게 프로젝트를 관리하여 양질의 소프트웨어 생산물을 도출할 수 있다. Abstract Process-centered Software Engineering Environments(PSEEs) support software development activities through the enaction of process models, providing a variety of activities such as supply of various information for software developers, automation of routine tasks, invocation and control of software development tools, and enforcement of mandatory rules and practices. The SEED(Software Engineering Environment for Development) system is a PSEE which was developed for effective software process development and controlling the enactment of process models by ETRI.In this paper, we describe the implementation of the SimFlex process programming language used to design process models in SEED, and its runtime support system called by SEED Engine. SimFlex is a software process programming language to describe process models with simple language constructs, and it could be embedded into other PSEEs through appropriate customization. The SimFlex compiler analyzes process models described by SimFlex, check errors in the models, and produce intermediate process models referenced by the SEED Engine. Using the intermediate process models, the SEED Engine provides automatic enactment of the process models described by SimFlex as well as useful information for agents linked to the external monitoring tool. With the help of the SimFlex language and its runtime support system, we can reduce cost and time in modeling software processes and perform convenient project management, producing well-qualified software products.

FunRank: 함수 호출 관계 및 데이터 흐름 분석을 통한 공개된 취약점 식별 (FunRank: Finding 1-Day Vulnerability with Call-Site and Data-Flow Analysis)

  • 이재휴;백지훈;문현곤
    • 정보보호학회논문지
    • /
    • 제33권2호
    • /
    • pp.305-318
    • /
    • 2023
  • 최근 소프트웨어 제품의 복잡성 증가로 오픈소스 소프트웨어를 적극 활용하는 경우가 많아지고 있다. 이는 개발 기간 단축에 도움을 주지만, 동시에 사용된 오픈소스 소프트웨어간의 서로 다른 개발 생명 주기(SDLC)가 전체 제품의 버전 최신화를 어렵게 하기도 한다. 이로 인해 사용된 오픈소스 소프트웨어의 알려진 취약점에 대한 패치가 공개되었음에도 불구하고, 패치를 신속히 적용하지 못해 공개 취약점의 위협에 노출되는 경우가 많다. 특정 장치가 이런 위협에 노출되어있는지를 신속히 판별하기 위한 공개 취약점 식별 기법에 관한 여러 연구 들이수행되어 왔는데, 기존 기법들은 취약점이 발생하는 함수의 크기가 작거나 인라인되는 경우 취약점 발견에 어려움을 겪는 경우가 많다. 본 연구는 이런 문제를 해결하기 위해 함수 호출 관계 및 데이터 흐름 분석을 통한 바이너리 코드 유사성 비교 도구인 FunRank를 개발하였다. 개발된 도구는 기존 연구들과 달리, 컴파일러에 의해 인라인 될 수 있는 크기가 작은 함수의 코드를 식별해야만 발견할 수 있는 공개취약점 또한 찾아낼 수 있도록 설계되어 있다. 본 연구에서 인위적으로 만들어진 벤치마크 및 실제 펌웨어로부터 추출된 바이너리를 이용해 실험한 결과, FunRank가 바이너리 코드 내에서 인라인 된 함수를 잘 찾아내고, 이를 통해 공개된 취약점의 존재성을 빠르게 확인하는 데에 도움을 줌을 보일 수 있었다.

POSIX 쓰레드를 이용한 SR 실행지원시스템의 설계 및 구현 (Design and Implementation of SR Run-Time Support System Using POSIX ZThreads)

  • 김영곤;정영필;박양수;이명준
    • 한국정보처리학회논문지
    • /
    • 제4권4호
    • /
    • pp.1106-1120
    • /
    • 1997
  • 본 연구에서는 POSIX 쓰레드(Pthreads)를 사용하여 구현한 새로운 SR 실행지원 시스템인 SR/RTS+를 제시한다. SR은 다중의 병행 제어 프리미티브를 이용해서 다양한 병행 프로그래밍 기법을 제공한다. 윈 SR 실행지원시스템이 자신의 고유한 쓰레드 경영 기법을 사용하였기 때문에 다른 컴퓨터 시스템에서 동작하기 위해서는 실행지원 시스템의 수정이 필요하다. 더우기 실행지원시스템의 실행 효율성은 이런 각각의 상이한 시스템에 연관되어 개별적으로 고려되어야 한다. 따라서 이식성을 증가시키고 실행 효 율성을 예측 가능하도록 하기 위해서 SR/RTS+를 하나의 POSIX프로세스내에서 다중의 실행의 쓰레드를 제공하는 Pthreaes(POSIX쓰레드)상에서 설계되었다. 또한 ,SR 컴파일러 Ptherads 인터페이스를 위한 코드를 적절히 생성하도록 수정되었다. SR/RTS+는 Florida Sate Univerisity에서 제공하는 Pthreads 라이브러리를 사용하여 Spare Workstation 상에서 개발되었으며, University of Arizona에서 제공하는 SR 검증 도구로 테스트하였다.

  • PDF