Publications

Detailed Information

Splash 응용의 런타임 오버헤드 완화를 위한 코드 생성 기법 : Splash Application Code Generation Method for Reducing Runtime Overhead

Cited 0 time in Web of Science Cited 0 time in Scopus
Authors

양범준

Advisor
홍성수
Issue Date
2020
Publisher
서울대학교 대학원
Description
학위논문(석사)--서울대학교 대학원 :공과대학 전기·정보공학부,2020. 2. 홍성수.
Abstract
최근 자율주행 자동차 응용은 딥러닝 기반 AI 기술을 적용하여 실제 도로 주행 환경에서 테스트 주행이 시행되고 있는 수준이다. 하지만 상용화를 위해서는 자율 주행 응용들이 예기치 못한 주행 환경에서도 정상 동작할 수 있도록 다양한 비기능적 요구사항을 만족시켜야 한다. Splash는 시각적 프로그래밍 언어로, 자율 주행 자동차에서 요구하는 대표적인 비기능적 요구사항인 실시간 요구사항과 신뢰성 요구사항을 응용 설계단계에서 명시할 수 있다. 응용 개발자는 Splash의 language construct를 사용하여 데이터 플로우로 알고리즘을 설계하고 Splash 프레임워크에 의해 생성된 뼈대 코드 내부에 세부 알고리즘을 구현하여 쉽게 응용을 개발할 수 있다.
Splash 응용의 핵심 수행 단위인 컴포넌트는 Splash 런타임이 기반하는 운영체제의 프로세스와 쓰레드에 의해 수행된다. 하나의 시스템에서 수행될 컴포넌트가 많아지게 되면 문맥 교환과 통신으로 발생하는 런타임 오버헤드가 커지게 되어 데이터 처리의 지연이 길어지게 된다. 본 논문에서는 문맥 교환 오버헤드를 완화하기 위해서 컴포넌트의 sthreads를 하나의 프로세스로 매핑하기 위한 할당 엔티티인 빌드 유닛을 제안하였다. 또한 통신 오버헤드를 줄이기 위해서 빌드 유닛 내의 데이터 송수신은 통신 미들웨어를 거치지 않게 코드 생성하는 방법을 도입하였다. 런타임 오버헤드 완화 효과를 검증하기 위해 합성 워크로드와 실제 워크로드를 Splash 응용으로 구현하여, 이들의 빌드 유닛 매핑에 따른 데이터 처리 지연시간을 비교하였다.
Recently, autonomous machines have adopted deep Learning-based AI technology for self-driving and have begun to carry out test runs in actual road driving environments. To commercialize autonomous machines, autonomous driving applications meet various non-functional requirements to operate normally even in unexpected driving environments. Splash is a graphical programming language that supports annotating real-time and reliability requirements that essential non-functional requirements of autonomous machines in the application design phase. Application developers can design algorithms as data flow graph using Splash's language construct and implement detailed algorithms inside skeleton codes created by the Splash framework to easily develop applications. By doing so, Splash is shielding users from difficulties of coordinating the multiple stream data processing and meeting non-functional requirements. Splash components as a key building block are performed by the processes and threads of the operating system which Splash runtime is based on. More components in Splash application will cause more context switching and communication overhead, which results in longer end-to-end latency of stream processing. In this paper, we propose a build unit which is an allocation entity that maps a group of sthreads into a single process for reducing context switching overhead. To reduce communication overhead also, we introduce different communication method for communication between sthreads within the same build unit. We demonstrate the effectiveness of our approach by implementing synthetic workloads and a real workload using Splash. As a result, the end-to-end latency are decreased according to build unit mapping.
Language
kor
URI
http://dcollection.snu.ac.kr/common/orgView/000000160892
Files in This Item:
Appears in Collections:

Altmetrics

Item View & Download Count

  • mendeley

Items in S-Space are protected by copyright, with all rights reserved, unless otherwise indicated.

Share