KR101671372B1 - 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법 - Google Patents

멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법 Download PDF

Info

Publication number
KR101671372B1
KR101671372B1 KR1020140005482A KR20140005482A KR101671372B1 KR 101671372 B1 KR101671372 B1 KR 101671372B1 KR 1020140005482 A KR1020140005482 A KR 1020140005482A KR 20140005482 A KR20140005482 A KR 20140005482A KR 101671372 B1 KR101671372 B1 KR 101671372B1
Authority
KR
South Korea
Prior art keywords
access event
thread
data structure
parallel program
power
Prior art date
Application number
KR1020140005482A
Other languages
English (en)
Other versions
KR20150085621A (ko
Inventor
김영주
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020140005482A priority Critical patent/KR101671372B1/ko
Priority to US14/466,396 priority patent/US9639136B2/en
Publication of KR20150085621A publication Critical patent/KR20150085621A/ko
Application granted granted Critical
Publication of KR101671372B1 publication Critical patent/KR101671372B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 멀티코어를 기반으로 하는 병렬 프로그램 수행 시 경합을 탐지하는 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법에 관한 것이다.
본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치는 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입부와, 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드의 자료구조를 생성하는 스레드 감시부와, 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택부와, 접근사건을 공유자료구조에 저장하는 접근사건 저장부와, 원시병렬프로그램 수행에 따른 전력 데이터를 측정 및 저장하는 전력 측정부 및 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단하는 전력 분석부를 포함한다.

Description

멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법{APPARATUS AND METHOD FOR RACE DETECTION IN PARALLEL PROGRAMS BASED ON MULTI-CORES}
본 발명은 멀티코어를 기반으로 하는 병렬 프로그램 실행 시의 경합을 탐지하는 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법에 관한 것이다.
멀티 코어(multi-core) CPU는 두 개 이상의 독립 코어를 단일 집적회로로 이루어진 하나의 패키지로 통합한 것으로서, 칩 레벨 멀티프로세서(CMP)라고도 하며, 이러한 멀티 코어는 전력요청 및 비효율적인 하드웨어 증대를 줄일 수 있고, 유지 보수 비용이 적게 드는 장점이 있다.
병렬 컴퓨팅(parallel computing) 또는 병렬 연산은 동시에 많은 양의 계산이 가능한 방법으로서, 크고 복잡한 문제를 나누어 동시에 병렬적으로 해결할 수 있는 방식이다.
병렬 컴퓨팅 환경은 하나의 태스크를 여러 개의 CPU가 나누어서 수행함으로써, CPU의 활용도와 업무 효율을 높이고, 빠른 처리 성능과 적은 전력 소모량 등 여러 이점이 있다.
병렬 컴퓨팅 환경은 센서 네트워크 기반의 감시 및 정찰 응용분야, 스마트기기의 응용 프로그램, 클라우딩 컴퓨팅 기반의 대규모 서비스 응용분야 등에 적용될 수 있다.
이러한 병렬 컴퓨팅 환경을 이용하여 사용자에게 고성능의 서비스를 제공하거나, 최대한 짧은 시간 내에 문제를 해결하기 위하여 순차코드들을 병렬코드로 전환하거나, 애초에 병렬코드로 시스템을 구축하는 것이 기술의 추세이다.
그러나 병렬 컴퓨팅 환경에서 수행하는 OpenMP(Open Multi-Processing, 공유 메모리 다중 처리 프로그래밍 API로서, C, C++, 포트란 언어, 유닉스 및 마이크로소프트 윈도우 플랫폼 등 지원), OpenCL(Open Computing Language, 개방형 범용 병렬 컴퓨팅 프레임워크), Pthread, C++0x와 같은 병렬 프로그램은 물리적 또는 논리적 병행성으로 인하여 프로그램의 수행양상이 의도하지 않는 순서로 동작되어, 프로그래머가 의도하지 않는 오류가 발생하는 문제점이 있다.
이러한 문제점들로 인하여 프로그램 상에서 의도하지 않은 에너지 버그가 발생할 수 있으므로, 프로그램 상에서 발생하는 오류를 효율적으로 탐지하는 기술 개발의 필요성이 있다.
병렬 컴퓨팅 환경에서 발생하는 오류들 가운데, 경합(Race)은 오류의 주된 원인 중 하나이다.
경합 조건(race condition)은 다중 프로그래밍 시스템이나 다중 처리기 시스템에서 병렬 스레드들의 적절한 동기화 없이 적어도 하나의 쓰기 사건을 포함한 공유변수에 발생한다. 이는 사용자가 의도하지 않은 수행 결과를 초래할 수 있다.
경합은 오류에 대한 예측이 어려우므로, 프로그램을 수천, 수만 번 수행하더라도 경합이 발생하지 않다가 아주 중요한 시점에서 경합이 발생하여 사용자의 의도와 부합하지 않는 수행 양상을 보일 수 있다.
이러한 사용자 의도와 부합하지 않는 수행 양상의 대표적인 경우는 프로그램이 무한 루프(loop)에 빠지거나 의도하지 않은 루틴의 수행이며, 경합에 의하여 예기치 않은 결과값이 도출되거나 심각한 경우 시스템 전체의 마비를 불러 올 수도 있다.
경합 중에서 시간적 순서 또는 논리적 순서에서 가장 먼저 발생하고, 다른 경합에 의하여 영향을 받지 않는 경합을 최초경합이라고 한다.
예를 들어, 미 해군 전함에서 동작하는 프로그램에서 의도하지 않은 오버플로우(overflow)가 발생하여 태평양 한가운데서 몇 시간 동안 운행이 정지된 사례도 있고, 스마트기기의 오동작으로 인하여 특정 어플리케이션이 무한 루프 상태가 되어 막대한 전력 소모가 발생할 수 있으며, 경합은 이러한 현상의 원인이 된다. 따라서, 경합을 반드시 탐지하여야 할 필요가 있다.
도 1은 앞서 설명한 경합의 예를 도시한 도면으로서, 도 1을 참조하면 두 개의 스레드(thread)가 병행하게 수행되며, account 값은 프로그램 수행 양상에 따라 50 또는 75가 될 것이다.
그러나 스레드1(Thread1)의 R(읽기 접근 사건)과 스레드2(Thread2)의 W(쓰기 접근 사건) 간의 경합이 발생함으로 인하여, 프로그래머가 의도하지 않는 150의 값이 발생할 수 있으며, 이로 인하여 프로그램이 비정상적으로 동작할 수 있다.
대표적인 경합 탐지 기법으로는 정적 탐지기법(static analysis), 사후추적 탐지기법(post-mortem detection), 수행 중 탐지기법(on-the-fly detection)이 있다.
정적 탐지기법은 프로그램의 원시 코드를 분석하여, 발생 가능성이 있는 모든 잠재적 경합까지 탐지하는 기법이고, 사후추적 탐지기법은 프로그램의 특정 수행 시 생성한 추적파일(trace file)을 수행 후 분석하는 기법이며, 수행 중 탐지기법은 프로그램 수행과 분석을 동시에 진행하여 경합을 탐지하는 기법이다.
수행 중 탐지기법은 기본적으로 특정 공유변수에 대한 매 접근사건을 검사하여, 접근역사(access history) 내에 유지되는 이전의 접근사건들과 비교하여 경합을 탐지한다.
그러나, 이러한 수행 중 탐지기법은 공유 자료구조인 접근역사에 접근하는 경우 심각한 병목 현상이 유발되어 성능저하가 초래되며, 이러한 병목 현상을 줄이기 위하여 종래 기술에 따른 접근사건 선택기법들은 경합의 가능성이 있는 접근사건들만을 접근역사에 접근시킨다.
도 2는 확장적 감시에 대한 개념도로서, 도 2를 참조하면, 도 2의 (A)라는 프로그램에서 발생하는 모든 접근 사건들이 접근역사에 순차적으로 접근하게 되고, 병목 현상이 발생하여 경합 탐지 성능이 저하되는 반면, 도 2의 (B)라는 프로그램에서 발생하는 접근사건들 중에서 경합의 가능성이 있는 접근사건들을 접근 필터의 접근 필터링(Access Filtering)을 통하여 선택적으로 접근역사로 접근시키므로, 경합 탐지의 성능이 증가된다.
도 3은 전술한 종래 기술에 따른 확장적 감시 기술 중 최신의 기술에 따른 확장적 감시 기법의 예를 도시하는 예시도로서, L1은 록 변수를 의미하고, R과 W는 각각 공유변수에 대한 읽기 및 쓰기 접근사건을 의미하며, 각 접근사건의 뒤에 기재된 숫자는 임의의 발생순서를 의미한다.
도 3의 (A)를 참조하면, 록(lock)이 있는 프로그램 모델에서 경합 탐지를 위하여 총 9개의 접근사건들 중 7개의 접근사건들만을 감시하고, 7개의 접근사건들만이 경합 탐지를 위해서 공유자료구조인 접근역사(access history)에 접근하므로, 공유자료구조에서 발생하는 병목 현상을 일부 줄일 수 있을 뿐만 아니라, 경합 탐지 시에 소모되는 전력도 절감할 수 있다.
이러한 기법의 핵심원리는 록이 발생할 때마다 적어도 한 쌍의 읽기/쓰기 접근 사건들을 선택하는 것으로서, 각 스레드에서 감시하는 접근사건의 수는 2(U+1)이 되며, 이 때 U는 각 스레드에서 발생한 unlock의 개수이다.
도 3의 (B)를 참조하면, 록과 동기화 명령어(post/wait 등)가 있는 프로그램 모델에서 경합 탐지를 위해서 총 9개의 접근사건들 중에서 6개의 접근사건들만을 감시한다.
이는 도 3의 (A)에 도시한 기법과 유사하지만, 도 3의 (A)에 도시한 기법과 비교하여 볼 때 선택되는 접근사건의 개수가 비교적 적은 장점이 있는 반면, 9개의 접근사건들이 공유자료구조에 접근한 후에 불필요한 접근사건들이 삭제되므로, 공유자료구조에서 발생하는 병목 현상의 해소 성능은 도 3의 (A)에 도시한 기법보다 떨어진다.
도 3의 (B)에 따른 기법의 핵심원리는 동기화 명령어인 post/wait 내에서 동일한 록 변수를 가진 록 영역 내의 접근사건들에 대해서는 중복하여 접근사건들을 감시하지 않는 것이며, 이 때 임의의 스레드에서 post()와 wait()사이의 영역은 블록으로 정의된다.
따라서, 각 스레드에서 감시하는 접근 사건의 수는
Figure 112014004529717-pat00001
로서, B는 2(Li+1)이고, Li는 i 블록에서의 록 변수이다.
전술한 종래 기술에 따른 확장적 감시 기법의 중요성은 병렬 프로그램의 경합 탐지의 경우, 경합 탐지 성능 저하의 주된 원인 중의 하나인 접근사건들의 개수를 최대한 적은 개수로 감시하며 프로그램에 발생하는 경합을 탐지하는 것이다.
도 3의 (A) 및 (B)의 예에 다르면 2개 또는 3개의 접근사건들을 감시 대상에서 제외시킬 뿐이나, 이는 병렬 프로그램 중 일부분에 불과한 것으로서, 실제적으로는 수많은 스레드와 접근사건들이 프로그램 수행 중에 발생하게 되므로, 실제적으로 경합 탐지 시에 감시하지 않을 수 있는 접근사건의 개수는 상당할 것으로 예상할 수 있다.
그러나, 전술한 종래 기술에 따른 확장적 감시 기법은 경합 탐지 시에 발생하는 병목 현상을 해소하지 못하는 문제점이 있다.
본 발명의 목적은 병렬 프로그램 수행 시 발생하는 접근사건들을 확장적으로 감시함으로써 접근역사에 발생하는 병목 현상을 줄이고, 효율적인 경합 탐지가 가능하며 디버깅 시 소모되는 컴퓨팅 파워를 줄이는 것이다.
아울러 본 발명의 목적은 에너지 버그를 회피할 수 있는 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법을 제공하는 것이다.
본 발명의 일면에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치는 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입부와, 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드의 자료구조를 생성하는 스레드 감시부와, 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택부와, 접근사건 선택부가 선택한 접근사건을 공유자료구조에 저장하는 접근사건 저장부와, 원시병렬프로그램 수행에 따른 전력 데이터를 측정하고, 측정한 전력 데이터를 저장하는 전력 측정부 및 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단하는 전력 분석부를 포함하는 것을 특징으로 한다.
본 발명의 다른 면에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법은 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입단계와, 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드 별로 자료구조를 생성하는 스레드 감시 단계와, 스레드 별로 생성된 자료구조를 이용하여 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택 단계와, 선택된 접근사건을 공유자료구조에 저장하는 접근사건 저장 단계와, 원시병렬프로그램 수행에 따른 전력 데이터를 측정 및 저장하는 전력 측정 단계 및 전력 데이터를 분석하여 에너지 버그 발생 여부를 탐지하는 전력 분석 단계를 포함하는 것을 특징으로 한다.
본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법은 병렬 컴퓨팅 환경에서 발생하는 경합을 효율적으로 탐지하는 동시에, 접근사건들에 대한 감시량의 감소로 인하여 오류를 효율적으로 탐지하는 효과가 있다.
특히, 전력 소모가 중요시되는 임베디드 시스템에서 적용되어 접근역사로 접근하는 접근사건의 수를 줄임으로써, 효율적으로 오류를 탐지하는 효과가 있다.
아울러, 프로그램에 발생할 수 있는 에너지 버그를 탐지하는 효과가 있다.
본 발명의 효과는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 병렬 프로그램의 수행 시 발생하는 경합의 예를 도시한 개념도.
도 2 및 도 3은 종래 기술에 따른 확장적 감시를 도시한 개념도.
도 4는 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치를 나타내는 블록도.
도 5 및 도 6은 병렬 프로그램에서 발생하는 공유변수에 대한 선택된 접근사건들을 나타내는 예시도.
도 7은 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법을 나타내는 순서도.
도 8 내지 도 10은 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법의 접근사건 선택 과정을 나타내는 순서도.
도 11은 본 발명에 따른 병렬 프로그램에서 발생하는 공유변수에 대한 접근사건 선택 과정 및 전력 측정을 통한 에너지 버그를 탐지하는 과정을 도시하는 개념도.
이하에서는 도면을 참조하면서, 본 발명의 바람직한 실시예들을 구체적으로 설명한다.
도 4는 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치를 나타내는 블록도이다.
도 4에 도시된 바와 같이, 멀티코어 기반 명렬 프로그램의 경합 탐지를 위한 확장적 감시 장치는 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입부(100)와, 변형된 원시병렬프로그램의 수행 중에 생성되는 스레드의 자료구조를 생성하는 스레드 감시부(200)와, 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택부(300)와, 접근사건을 공유자료구조에 저장하는 접근사건 저장부(400)와, 원시병렬프로그램 수행에 따른 전력 데이터를 측정 및 저장하는 전력 측정부(500) 및 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단하는 전력 분석부(600)를 포함한다.
감시코드 삽입부(100)는 멀티 프로세싱 및 멀티 스레딩이 가능한 프로그램인 원시병렬프로그램을 스캔하면서 병렬성을 생성하는 위치, 공유변수가 사용되는 위치, 동기화 명령의 위치 중 적어도 어느 하나의 위치에 확장적 감시를 위한 코드를 추가하여 변형된 원시병렬프로그램을 생성한다.
감시코드 삽입부(100)는 확장적 감시를 위한 코드로서 스레드 생성 코드, 스레드 소멸 코드, 공유변수의 읽기 접근사건 감시 코드, 공유변수의 쓰기 접근사건 감시 코드, 동기화 감시 코드 중 적어도 어느 하나의 코드를 원시병렬프로그램에 추가하며, 이러한 확장적 감시 코드들은 프로그램 수행 중에 동작되고, 각 코드에 의하여 스레드, 접근사건, 동기화 등이 감시된다.
스레드 감시부(200)는 감시코드 삽입부(100)가 원시병렬프로그램을 스캔하여 병렬성 생성 위치에 추가한 코드에 의하여 실행되고, 변형된 원시병렬프로그램의 수행 중에 생성되는 복수의 스레드에 대한 각각의 자료구조를 생성한다.
변형된 원시병렬프로그램 수행에 따라 생성되는 스레드는 논리적 또는 물리적 스레드로서, 물리적 스레드는 프로그램의 매 수행에 따라 시스템에서 할당하는 스레드의 수가 달라질 수 있으나, 프로그램에 의존적인 논리적 스레드의 수는 프로그램의 내용이 변경되지 않는 한 시스템에서 할당하는 스레드의 수는 고정적이므로, 스레드의 수가 물리적 스레드보다 항상 같거나 많게 되므로, 경합 탐지의 신뢰성 향상을 위하여 논리적 스레드 각각의 자료구조를 생성하는 것이 바람직하다.
접근사건 선택부(300)는 감시코드 삽입부(100)가 원시병렬프로그램에 추가한 확장적 감시 코드 중 공유변수가 사용되는 위치에 추가된 코드에 의하여 실행되고, 프로그램 수행에 따라 접근사건의 경합 참여 가능성을 검사하여, 공유변수에 대한 복수의 접근사건 중 경합에 참여할 가능성이 있는 접근사건을 선택한다.
접근사건 선택부(300)는 스레드의 개별 자료구조를 이용하여 접근사건을 선택하거나(심플 모드), 스레드의 개별 자료구조 및 스레드 간의 병행성을 이용하여 접근사건을 선택한다(디테일 모드).
심플 모드(simple mode) 감시는 스레드마다 독립적으로 접근사건을 선택하는 기법이고, 디테일 모드(detail mode) 감시는 스레드 간의 병행성 정보 및 각 스레드의 정보를 이용하여 접근사건을 선택하는 기법으로서, 디테일 모드 감시는 프로그램 상에 명시적 동기화(synchronization)가 존재하는 경우에 심플 모드 감시보다 적절한 접근사건 선택이 가능한 기법이다.
전력 측정부(500)는 원시병렬프로그램에 대해서 실시간으로 CPU 및 프로세스에 대한 전력을 측정하고, 접근사건 선택부(300)의 접근사건 선택 시점과 동기화하여 전력 데이터를 측정하므로, 소프트웨어적으로 통합된 소프트웨어 기반의 전력 측정을 하는 것이 바람직하다.
전력 분석부(600)는 측정 및 저장된 전력 데이터와 경합 탐지를 위한 확장적 감시 사이에 동기화를 유지하며 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단한다.
도 5 는 병렬 프로그램에서 발생하는 공유변수에 대한 접근사건 선택을 나타내는 예시도로서, 전술한 심플 모드 감시에 따른 접근사건 선택의 예시도이다.
도 5를 참조하면, 록 변수에 기반한 접근사건 선택부(300)의 심플 모드 감시는 종래의 기술와 비교하여 볼 때 선택하는 접근사건의 수가 적으므로, 확장적 감시 측면에서 더 우수하다.
도 5에 도시된 R은 읽기 접근사건, W는 쓰기 접근사건, Lx는 록 변수를 의미하고, R1, W5, W8 및 W15는 선택된 접근사건이고, R3, R6는 부분선택 중단사건, W11, W17은 완전선택 중단사건이다.
도 5의 스레드-1(THREAD-1)의 L1 록에서 R1과 R2는 순서화 관계로서, R1이 스레드-2(THREAD-2)와 연관이 있으면 R2도 반드시 스레드-2(THREAD-2)와 연관이 있으므로, R1은 선택된 접근사건이고, R2는 선택되지 않으며, R1이 L1 록에서 이미 선택되었으므로, R14는 선택되지 않는다.
도 5에 따른 심플 모드 감시는 프로그램상에 명시적 동기화(synchronization)가 존재하는 경우에는 최적의 접근사건 선택을 수행하지 못하는 문제점이 있다.
도 6은 병렬 프로그램에서 발생하는 공유변수에 대한 접근사건 선택을 나타내는 예시도로서, 전술한 디테일 모드 감시에 따른 접근사건 선택의 예시도이다.
디테일 모드 감시를 이용하면, 스레드 간의 병행성 정보와 각 스레드의 정보를 이용하여 프로그램 상에 명시적 동기화가 존재하는 경우에도 최적으로 접근사건을 선택하는 것이 가능하며, 접근사건 선택부(300)가 선택하는 접근사건의 수는 아래 [수식 1]과 같다.
[수식 1]
Figure 112014004529717-pat00002
N: 내포 레벨 T: 각 내포레벨의 최대 병렬성,
L: 록변수의 개수
도 7은 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법을 나타내는 순서도이다.
도 7을 참조하면, 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법은 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입단계(S10)와, 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드 별로 자료 구조를 생성하는 스레드 감시 단계(S20)와, 스레드 별로 생성된 자료구조를 이용하여 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택 단계(S30)와, 선택된 접근사건을 공유자료구조에 저장하는 접근사건 저장 단계(S40)와, 원시병렬프로그램 수행에 따른 전력 데이터를 측정 및 저장하는 전력 측정 단계(S50) 및 전력 데이터를 분석하여 에너지 버그 발생 여부를 탐지하는 전력 분석 단계(S60)를 포함한다.
감시코드 삽입 단계(S10)는 원시병렬프로그램(멀티 프로세싱 및 멀티 스레딩이 가능한 프로그램)을 스캔하면서 병렬성을 생성하는 위치, 공유변수가 사용되는 위치, 동기화 명령의 위치에 확장적 감시를 위한 코드를 추가하여 변형된 원시병렬프로그램을 생성하며, 확장적 감시 코드는 스레드 생성/소멸 코드, 공유변수의 읽기 접근사건(R) 감시 코드, 공유변수의 쓰기 접근사건(W) 감시 코드, 동기화 감시 코드 등으로서, 프로그램 수행 중에 동작되어 스레드, 접근사건, 동기화 등을 감시한다.
스레드 감시 단계(S20)는 병렬성을 생성하는 위치에 추가된 코드에 의하여 실행되어 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드 별로 자료구조를 생성하고, 접근사건 선택 단계(S30)는 공유변수가 사용되는 위치에 추가된 코드에 의하여 실행되어 공유변수에 대한 접근사건 중 경합 가능성을 검사하여 검사 결과에 따라 접근사건을 선택한다.
도 8 내지 도 10는 본 발명에 따른 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법의 접근사건 선택 과정을 나타내는 순서도로서, 도 8 내지 도 10을 참조하면, 개별스레드자료구조는 각 스레드에서 발생하는 접근사건들의 선택 여부를 결정할 수 있도록 읽기 접근사건(R)과 쓰기 접근사건(W)의 발생여부를 저장하는 일종의 캐쉬로서의 Boolean 타입의 자료구조이다.
NCS는 임계구역(CS, Critical Section) 외부의 영역이고, CS는 임계구역 내부의 영역이다.
접근사건 선택 단계는 프로그램 실행(S100)에 따라, 개별스레드자료구조의 외부 영역에서 완전선택중단사건(W) 선택 여부를 판단한다(S200).
완전선택중단사건이 이미 선택된 경우, 프로그램 실행 단계(S100)로 돌아가고, 완전선택중단사건이 선택되지 않은 경우에는 읽기 접근사건 또는 쓰기 접근사건의 발생 여부를 판단한다(S300).
읽기/쓰기 접근사건이 발생한 경우, 개별스레드자료구조의 NCS영역(임계영역 외부의 영역)에 읽기/쓰기 접근사건이 존재하는지 여부를 판단하여(S310, S410), NCS 영역에 읽기/쓰기 접근사건이 존재하지 않는 경우, CS 영역(임계영역 내부의 영역)의 읽기/쓰기 접근사건인지 여부를 판단한다(S320, S420).
CS 영역의 읽기/쓰기 접근사건이 아닌 경우 현재 접근사건을 개별스레드자료구조에 저장하고(S350, S450), CS 영역의 읽기/쓰기 접근사건인 경우에는 개별스레드자료구조에 이전의 읽기/쓰기 접근사건의 존재 여부를 판단한다(S330, S430).
개별스레드자료구조에 이전의 읽기/쓰기 접근사건이 존재한다면, 현재 접근사건을 개별스레드자료구조에 저장하고(S350, S450), 개별스레드자료구조에 이전의 읽기/쓰기 접근사건이 존재하지 않는다면, 이전의 읽기/쓰기 접근사건과 선택여부를 조사하여(S340, S440), 현재접근사건을 개별스레드자료구조에 저장(S350, S450) 또는 이전접근사건을 유지한다(S500).
이전의 읽기/쓰기 접근사건과 선택여부를 조사하는 단계(S340, S440)의 기본적인 알고리즘은 이전의 접근사건과 현재의 접근사건 간의 순서화 관계, 동일 변수, 록 변수의 포함관계를 고려하여, 경합이 먼저 발생할 가능성이 있는 접근사건을 선택한다.
이전의 읽기/쓰기 접근사건과 선택여부를 조사하는 단계(S340, S440)는 접근사건 선택이 심플 모드(Simple Mode) 감시인 경우 각 스레드에서 발생하는 접근사건들에 대해서 조사하고, 디테일 모드(Detail Mode) 감시인 경우 각 스레드에서 발생하는 접근사건뿐 아니라 임의의 다른 스레드에서 발생하는 접근사건들에 대해서도 조사하고, 개별자료구조와 스레드 간의 병행성을 이용하여 접근사건을 선택한다.
디테일 모드는 선택하는 접근사건의 개수의 측면에서 볼 때 심플 모드보다 확장적 감시 기법의 성능이 뛰어난 장점이 있으나, 시간적 공간적 복잡도가 증가할 수 있다.
도 11은 본 발명에 따른 병렬 프로그램에서 발생하는 공유변수에 대한 접근사건 선택 과정을 도시하는 개념도로서, 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형한 원시병렬프로그램에서 접근사건들에 대한 확장적 감시를 하고, 그와 동시에 전력을 측정 및 분석하는 과정을 도시한다.
접근사건 선택부(300)와 전력 측정 및 분석부(500, 600)는 프로그램 수행 중에 발생하는 모든 전력 데이터를 기록하고, 기록한 전력 데이터는 경합의 가능성이 있는 접근사건들과 발생 시점 간의 동기화가 이루어진다.
이러한 동기화로 인하여 전력을 많이 소비하는 시점이 발견되는 경우, 해당 시점에서 접근사건 선택부(300)가 어떠한 접근사건을 감시하고 있는지 파악하는 것이 가능하다.
접근사건으로 인하여 경합이 발생하고, 경합으로 인하여 프로그램에 예기치 않은 과전력 소비가 발생할 수 있으나, 본 발명에 따르면 병렬 컴퓨팅 환경에서 발생하는 경합을 효율적으로 감시하며, 접근사건에 대한 감시량의 감소로 인하여 전력 소모가 중요시되는 시스템에서 효율적으로 에너지 버그를 탐지하는 효과가 있다.
이제까지 본 발명의 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
100: 감시코드 삽입부 200: 스레드 감시부
300: 접근사건 선택부 400: 접근사건 저장부
500: 전력 측정부 600: 전력 분석부

Claims (20)

  1. 원시병렬프로그램에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입부;
    상기 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드의 자료구조를 생성하는 스레드 감시부;
    상기 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택부;
    상기 접근사건 선택부가 선택한 접근사건을 공유자료구조에 저장하는 접근사건 저장부;
    상기 변형된 원시병렬프로그램 수행에 따른 전력 데이터를 측정하고, 상기 측정한 전력 데이터를 저장하는 전력 측정부; 및
    상기 전력 측정부가 저장한 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단하는 전력 분석부를 포함하고,
    상기 접근사건 선택부는 개별스레드자료구조의 임계구역의 외부 영역에서 완전선택중단사건의 선택 여부, 상기 개별스레드자료구조의 임계구역의 외부 영역에서 접근사건 존재 여부, 현재 접근사건이 임계구역의 내부 영역의 접근사건인지 여부 및 상기 개별스레드자료구조에 이전의 접근사건이 존재하는지 여부를 고려하여, 상기 현재 접근사건을 상기 개별스레드자료구조에 저장시키는 것
    을 특징으로 하는 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  2. 제1항에 있어서, 상기 감시코드 삽입부는
    멀티 프로세싱 및 멀티 스레딩이 가능한 상기 원시병렬프로그램을 스캔하여 병렬성 생성 위치, 공유변수가 사용되는 위치, 동기화 명령의 위치 중 적어도 어느 하나의 위치에 확장적 감시 코드를 추가하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  3. 제2항에 있어서, 상기 감시코드 삽입부는
    스레드 생성 코드, 스레드 소멸 코드, 공유변수의 읽기 접근사건 감시 코드, 공유변수의 쓰기 접근사건 감시 코드, 동기화 감시 코드 중 적어도 어느 하나의 코드를 상기 원시병렬프로그램에 추가하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  4. 제2항에 있어서, 상기 스레드 감시부는
    상기 감시코드 삽입부가 원시병렬프로그램을 스캔하여 병렬성 생성 위치에 추가한 코드에 의하여 실행되어, 상기 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드의 자료구조를 생성하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  5. 제2항에 있어서, 상기 접근사건 선택부는
    상기 감시코드 삽입부가 공유변수가 사용되는 위치에 추가한 코드에 의하여 실행되어, 상기 공유변수에 대한 경합 가능성을 검사하여 상기 접근사건을 선택하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  6. 제5항에 있어서, 상기 접근사건 선택부는
    상기 스레드의 개별 자료구조를 이용하여 상기 접근사건을 선택하거나, 상기 스레드의 개별 자료구조와 상기 스레드 간의 병행성을 이용하여 상기 접근사건을 선택하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  7. 제1항에 있어서, 상기 전력 측정부는
    상기 접근사건 선택부의 접근사건 선택 시점과 동기화하여 상기 전력 데이터를 측정하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  8. 제7항에 있어서, 상기 전력 분석부는
    상기 접근사건 선택부의 경합 가능성 검사와 상기 전력 데이터 측정의 동기화를 유지하며 상기 전력 데이터를 분석하여 에너지 버그 발생 여부를 판단하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치.
  9. 원시병렬프로그램을 스캔하여 병렬성을 생성하는 위치, 공유변수가 사용되는 위치, 동기화 명령의 위치 중 적어도 어느 하나의 위치에 확장적 감시 코드를 추가하여 변형된 원시병렬프로그램을 생성하는 감시코드 삽입단계;
    상기 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드 별로 자료구조를 생성하는 스레드 감시 단계;
    상기 스레드 별로 생성된 자료구조를 이용하여 변형된 원시병렬 프로그램의 수행에 따른 경합 가능성을 검사하여 접근사건을 선택하는 접근사건 선택 단계;
    상기 선택된 접근사건을 공유자료구조에 저장하는 접근사건 저장 단계;
    상기 변형된 원시병렬프로그램 수행에 따른 전력 데이터를 측정 및 저장하는 전력 측정 단계; 및
    상기 전력 데이터를 분석하여 에너지 버그 발생 여부를 탐지하는 전력 분석 단계를 포함하고,
    상기 접근사건 선택 단계는,
    상기 공유변수가 사용되는 위치에 추가된 확장적 감시 코드에 의하여 실행되고, 상기 공유변수에 대한 경합 가능성을 검사하여 접근사건을 선택하고,
    개별스레드자료구조의 임계구역의 외부 영역에서 완전선택중단사건 선택 여부를 판단하는 단계;
    상기 완전선택중단사건이 선택되지 않은 경우, 상기 개별스레드자료구조의 임계구역의 외부 영역에서 접근 사건 존재 여부를 판단하는 단계;
    상기 접근사건이 존재하지 않는 경우, 현재 접근사건이 임계구역의 내부 영역의 접근사건인지 판단하는 단계;
    상기 현재 접근사건이 임계구역의 내부 영역의 접근사건이 아닌 경우, 상기 현재 접근사건을 상기 개별스레드자료구조에 저장하는 단계; 및
    상기 현재 접근사건이 임계구역의 내부 영역의 접근사건인 경우, 상기 개별스레드자료구조에 이전의 접근사건이 존재하는지 판단하여, 상기 개별스레드자료구조에 이전의 접근사건이 존재하는 경우 상기 현재 접근사건을 상기 개별스레드자료구조에 저장하는 단계를 포함하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  10. 삭제
  11. 제9항에 있어서, 상기 스레드 감시 단계는
    상기 병렬성을 생성하는 위치에 추가된 확장적 감시 코드에 의하여 실행되고, 상기 변형된 원시병렬프로그램의 수행에 따라 생성되는 스레드 별로 자료구조를 생성하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  12. 삭제
  13. 삭제
  14. 제9항에 있어서,
    상기 개별스레드자료구조에 이전의 접근사건이 존재하지 않는 경우, 이전 접근사건과의 선택여부를 조사하는 단계를 더 포함하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  15. 제14항에 있어서, 상기 이전 접근사건과의 선택여부를 조사하는 단계는 상기 개별스레드자료구조를 이용하여 스레드 별로 독립적으로 접근사건을 선택하거나, 상기 개별스레드자료구조 및 스레드 간의 병행성 정보를 이용하여 접근사건을 선택하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  16. 제9항에 있어서, 상기 전력 측정 단계는
    상기 접근사건 선택 단계에서 상기 접근사건이 선택되는 시점과 동기화하여 상기 전력 데이터를 측정하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  17. 제16항에 있어서, 상기 전력 분석 단계는
    상기 접근사건 선택 단계의 경합 가능성 검사 시점과 상기 전력 데이터 측정 시점의 동기화를 유지하며 상기 전력 데이터를 분석하여 에너지 버그 발생 여부를 탐지하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 방법.
  18. 병렬프로그램에서 발생하는 공유변수에 대한 접근사건의 경합 가능성을 검사하여 상기 경합 가능성이 있는 접근사건을 선택하는 확장적 경합 탐지 모듈; 및
    상기 병렬프로그램 수행 시의 소비 전력을 측정하여 에너지 버그 발생 여부를 분석하는 전력 측정 모듈을 포함하고,
    상기 확장적 경합 탐지 모듈은 상기 공유변수가 사용되는 위치에 추가된 확장적 감시 코드에 의하여 실행되고, 상기 공유변수에 대한 경합 가능성을 검사하여 접근사건을 선택하며, 개별스레드자료구조의 임계구역의 외부 영역에서 완전선택중단사건의 선택 여부, 상기 개별스레드자료구조의 임계구역의 외부 영역에서 접근사건 존재 여부, 현재 접근사건이 임계구역의 내부 영역의 접근사건인지 여부 및 상기 개별스레드자료구조에 이전의 접근사건이 존재하는지 여부를 고려하여, 상기 현재 접근사건을 상기 개별스레드자료구조에 저장시키는 것
    을 특징으로 하는 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 시스템.
  19. 제18항에 있어서, 상기 확장적 경합 탐지 모듈은
    상기 병렬프로그램에 감시코드를 추가하여 변형하고, 변형된 병렬프로그램의 수행에 따라 스레드의 자료구조를 생성하고, 상기 공유변수에 대한 접근사건의 경합 가능성을 검사하고, 상기 스레드의 개별 자료구조를 이용하여 상기 접근사건을 선택하거나 상기 스레드의 개별 자료구조와 상기 스레드 간의 병행성을 이용하여 상기 접근사건을 선택하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 시스템.
  20. 제19항에 있어서, 상기 전력 측정 모듈은
    상기 확장적 경합 탐지 모듈의 접근사건 선택 시점과 동기화하여 상기 소비 전력을 측정하고, 상기 경합 가능성의 검사와 상기 소비 전력 측정의 동기화를 유지하며 상기 소비 전력을 분석하여 에너지 버그 발생 여부를 판단하는 것
    인 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 시스템.
KR1020140005482A 2014-01-16 2014-01-16 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법 KR101671372B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140005482A KR101671372B1 (ko) 2014-01-16 2014-01-16 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법
US14/466,396 US9639136B2 (en) 2014-01-16 2014-08-22 Apparatus and method for scalable monitoring of race detection in parallel programs based on multi-cores

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140005482A KR101671372B1 (ko) 2014-01-16 2014-01-16 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150085621A KR20150085621A (ko) 2015-07-24
KR101671372B1 true KR101671372B1 (ko) 2016-11-16

Family

ID=53521337

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140005482A KR101671372B1 (ko) 2014-01-16 2014-01-16 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법

Country Status (2)

Country Link
US (1) US9639136B2 (ko)
KR (1) KR101671372B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2626786B1 (en) * 2010-10-05 2016-04-20 Fujitsu Limited Multicore processor system, method of monitoring control, and monitoring control program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250858A (ja) * 2005-04-27 2010-11-04 Panasonic Corp 電力制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030042319A (ko) 2001-11-22 2003-05-28 한국전자통신연구원 병렬 프로그램 수행중 경합 탐지를 위한 병렬 루프 변형방법
US20070198864A1 (en) * 2006-02-21 2007-08-23 Toshiba America Electronic Components Systems and methods for determining and using power profiles for software programs executing on data processors
KR101108431B1 (ko) * 2009-10-19 2012-01-31 한국과학기술원 OpenMP프로그램에서 자료 경합을 탐지하기 위한 시스템, 방법, 및 방법을 저장하는 저장 매체
US9619364B2 (en) * 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010250858A (ja) * 2005-04-27 2010-11-04 Panasonic Corp 電力制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"내부적 비결정성을 가진 공유 메모리 병렬 프로그램에서 잠재적 경합탐지를 위한 전처리기", 김영주 외 2명, 정보처리학회논문지A 제17-A권 제1호(2010.02)*

Also Published As

Publication number Publication date
US9639136B2 (en) 2017-05-02
US20150198993A1 (en) 2015-07-16
KR20150085621A (ko) 2015-07-24

Similar Documents

Publication Publication Date Title
KR102527423B1 (ko) 트랜잭션 실행에 응답하여 트레이스 데이터를 생성하는 장치 및 방법
US10241894B2 (en) Data-scoped dynamic data race detection
Atzeni et al. Sword: A bounded memory-overhead detector of openmp data races in production runs
Guerraoui et al. Lock–unlock: Is that all? a pragmatic analysis of locking in software systems
US10318261B2 (en) Execution of complex recursive algorithms
US8141082B2 (en) Node-based representation of multi-threaded computing environment tasks, and node-based data race evaluation
Huang et al. Lean: Simplifying concurrency bug reproduction via replay-supported execution reduction
Arulraj et al. Leveraging the short-term memory of hardware to diagnose production-run software failures
Izadpanah et al. A methodology for performance analysis of non-blocking algorithms using hardware and software metrics
Liu et al. Speculative execution on GPU: An exploratory study
US8392891B2 (en) Technique for finding relaxed memory model vulnerabilities
Chen et al. Benchmarking Harp-DAAL: High performance hadoop on KNL clusters
Atachiants et al. Parallel performance problems on shared-memory multicore systems: taxonomy and observation
Li et al. LDetector: A low overhead race detector for GPU programs
CN109885489B (zh) 驱动程序中数据竞争检测方法及装置
Xiang et al. Conflict reduction in hardware transactions using advisory locks
Kamath et al. ScoRD: a scoped race detector for GPUs
KR101671372B1 (ko) 멀티코어 기반 병렬 프로그램의 경합 탐지를 위한 확장적 감시 장치 및 방법
KR102141620B1 (ko) 멀티 프로세스/멀티 스레드에서 사용하는 공유 메모리에 대한 원자성 위반 결함 탐지 방법 및 장치
Kirkham et al. Foundations of empirical memory consistency testing
Yuan et al. Synchronization identification through on-the-fly test
Jiang et al. Online shared memory dependence reduction via bisectional coordination
Dai et al. Parallelized Race Detection Based on GPU Architecture
Jiang et al. Optimistic shared memory dependence tracing (T)
Sen et al. Hybrid data race detection for multicore software

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 4