KR101232535B1 - 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링 - Google Patents

가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링 Download PDF

Info

Publication number
KR101232535B1
KR101232535B1 KR1020100132752A KR20100132752A KR101232535B1 KR 101232535 B1 KR101232535 B1 KR 101232535B1 KR 1020100132752 A KR1020100132752 A KR 1020100132752A KR 20100132752 A KR20100132752 A KR 20100132752A KR 101232535 B1 KR101232535 B1 KR 101232535B1
Authority
KR
South Korea
Prior art keywords
task
duration
tasks
implicitly generated
relationship
Prior art date
Application number
KR1020100132752A
Other languages
English (en)
Other versions
KR20110073362A (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 인텔 코포레이션
Publication of KR20110073362A publication Critical patent/KR20110073362A/ko
Application granted granted Critical
Publication of KR101232535B1 publication Critical patent/KR101232535B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)

Abstract

관계 모델(relative model)이 멀티-코어 프로세서 내에서 다수의 스레드(threads)의 각각과 관련한 프리미티브(primitives)를 인코딩하는데 이용될 것이다. 이 프리미티브는 태스크와, 예컨대 버퍼같은 파라미터를 포함할 것이다. 세트 렌더 타겟(set render target)처럼 암시적으로 생성된 태스크는, 이 암시적으로 생성된 태스크와 실제 코딩된 태스크를 연관시킴으로써 시각화될 것이다.

Description

가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링{RELATIONAL MODELING FOR PERFORMANCE ANALYSIS OF MULTI-CORE PROCESSORS USING VIRTUAL TASKS}
본 원은 전반적으로 멀티-코어 프로세서(multi-core processors)에 관한 것으로, 특히 멀티-코어 머신의 성능 분석에 관한 것이다.
요즘의 범용 및 그래픽 프로세서는 하나 이상의 코어를 포함할 수 있다. 이 프로세서들은 대량의 스레드(threads)를 실행할 것이다. 그러므로 프로세서의 성능을 분석하는 것은, 실행될 수 있는 스레드의 수와 태스크의 수를 고려해볼 때 꽤 복잡한 작업일 것이다.
통상적으로, 트래이스(trace)는 프로세서상에서 실행중인 태스크들 간의 시간적 시퀀스를 도식적으로 그린 것이다. 소프트웨어 기반 트래이스 해석에 따르면 소프트웨어 설계자가 태스크들 간의 동작 시퀀스를 이해할 수 있다.
그러나, 멀티-코어 프로세서에는 보다 정교한 해석이 필요할 것이다.
도 1은 본 발명의 일 실시예를 개략적으로 나타낸 도면이다.
도 2는 도 1에 도시된 실시예에서 이용되는 시퀀스를 나타내는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 태스크 기반 관계 모델(task base relational model)을 시각화한 도면이다.
도 4는 본 발명의 일 실시예에 따라 발생된 부모(parent)/자식(child) 관계를 시각화한 도면이다.
도 5는 본 발명의 다른 실시예에 따른 종속 관계(dependencies relationships)들을 시각화한 도면이다.
도 6은 일 실시예에 따른 가상 태스크 시각화(virtual task visualization)를 나타낸 도면이다.
도 7은 일 실시예에 따른 다른 가상 태스크 시각화를 나타낸 도면이다.
도 8은 일 실시예와 관련한 흐름도이다.
본 발명의 몇몇 실시예에 따르면, 태스크라 불리우는 코드 청크들(chunks of code) 사이에 시간적 시퀀싱 이외의 관계들이 시각화될 수 있다. 태스크는 스케줄링(scheduling)과 실행(execution)을 위한 작업의 어떤 공통 단위이다. 이것은 시작과 끝을 갖는 코드의 어떤 부분일 수 있다. 그의 지속기간은 그 태스크를 실행하는 사이클의 수로 정의될 것이다.
트래이스는 태스크들 간의 링크이다. 관계 모델(a relational model)은 태스크들 간의 관계를 부모 대 자식, 형제자매, 종속성, 그리고 생산자와 소비자의 관점에서 제공한다. 다른 관계들이 이용될 수도 있다.
부모/자식 관계는 제 1 태스크와 제 1 태스크에 의해 만들어진 제 2 태스크 사이에 존재한다. 종속 관계는 제 1 태스크가 제 2 태스크의 실행에 의존하는 경우에 제 1 및 제 2 태스크 사이에 존재한다. 생산자/소비자 관계는 제 1 태스크가 데이터를 발생하여 이 데이터를 버퍼에 저장하면 제 2 태스크가 그 버퍼로부터 데이터를 소비함을 의미한다.
프리미티브(a primitive)는 관계에 관여한 어떤 엔티티(entity)이다. 태스크는 프리미티브의 한 유형이다. 다른 프리미티브는 파라미터라고 불린다. 파라미터는 버퍼, 이름-값 쌍(a name-value pair), 스트링(string), 혹은 태스크에 대해 관계를 갖는 어떤 종류의 정규 데이터 유형 또는 구조일 수 있을 것이다. 다른 프리미티브도 이용될 수 있을 것이다.
도 1을 참조하면, 성능 분석 툴(performance analysis tool)(10)은 콘트롤(12)을 포함할 수 있는데, 이것은 프로세서일 수 있다. 이 프로세서는 멀티-코어 프로세서일 수도 있다. 일 실시예로 이것은 그래픽 프로세서일 수도 있고, 일 실시예에서 단일 명령 다중 데이터(SIMD;single instruction multiple data) 멀티-코어 프로세서일 수도 있다. 콘트롤(12)은 메모리(14)에 접속되는데, 이 메모리는, 그래픽 사용자 인터페이스 혹은 툴(16)의 프론트 엔드(front end)와, 프리미티브 및 프리미티브와 라이브러리(20) 사이의 관계를 코딩한 다수의 시퀀스 혹은 애플리케이션 프로그램 인터페이스(APIs)(18)를 저장할 수 있는데, 라이브러리는 사용 가능한 특성(features)의 툴박스를 제공한다. 이 콘트롤은 입력/출력(22)에도 접속됨으로써 사용자가 정보를 입력하거나 출력을 수신할 수 있게 한다. 디스플레이(24)는 태스크를 포함한 프리미티브들 간의 관계를 시각화하는데 이용될 것이다.
성능 분석 툴(10)은 소프트웨어 개발자에 의해 이용되는데, 소프트웨어 내부의 태스크와 같은 프리미티브들 사이의 관계를 이해함으로써 소프트웨어의 성능을 증강하는데 이용된다. 이들 관계를 이해함으로써 소프트웨어 개발자는 소프트웨어 프로그램 개선 방법을 알 수 있다.
일반적으로, 소프트웨어 개발자는 두 가지 버전(version)의 코드를 개발한다. 첫 번째 버전의 코드는 예컨대 게임처럼 원하는 기능만을 실행하는 코드이다. 다른 버전의 코드는 몇몇 실시예에서 프리미티브 관계의 시각화를 생성하는 APIs(18)를 포함한다(반면에 다른 실시예에서는 추가 해석을 위한 시각화 없이 2진 출력이 이용될 수 있다). APIs를 갖는 버전의 코드는 측정 코드(instrumented code)로 불린다. 프론트 엔드 그래픽 사용자 인터페이스(16)에 대해 측정 코드를 스트리밍하는 것은 설계자가 코드에서 무슨 일이 진행중인지를 볼 수 있게 해준다. 이것은 코드에서 실행중인 스레드와, 이 스레드 내의 태스크와, 가장 중요하게는 이들 태스크들 간의 기능 관계를 보여준다.
도 2를 참조하면, 애플리케이션 프로그램 인터페이스(18)에 의해 구현된 시퀀스는 블록(22)으로 표시된 것처럼 스레드의 선택을 수신함으로써 시작한다. 다음, 도면 부호(24)로 표시된 것처럼 프리미티브 식별자가 선택된다. 이 식별자는 블록(26)에서 등록된다. 이 후, 식별자는 블록(28)에서 프리미티브에 할당된다.
이때, 설계자는 선택된 프리미티브와 다른 프리미티 사이의 관계를 입력한다. 선택된 프리미티브는 '해당(this)' 프리미티브라 부르고, 이 해당 프리미티브와 관계는 갖는 프리미티브를 '상응(that)' 프리미티브라고 부른다.
일부 실시예에서, 자동적으로 시퀀스(18)는 설계자가 입력한 것보다 더 많은 관계를 내포한다. 예를 들어, 만약 제 1 태스크가 제 2 태스크의 부모이라면, 이것은 제 2 태스크가 이 부모의 자식임을 의미한다. 유사하게, 만약 제 1 태스크가 제 2 태스크와 관계되고 제 2 태스크는 제 3 태스크와 관계된다면, 이것은 제 1 태스크와 제 3 태스크도 관계가 있음을 의미하고 그 관계의 본성도 암시될 수 있다. 이것을 다른 관계로부터 암시되는 관계 또는 이행성 관계(transitive relationships)라고 부를 수 있다. 일부 실시예에서, 이행성 관계를 이용하면, 사용자의 데이터 입력에 대한 부담이 줄어든다. 또한, 1 대 N의 관계, 혹은 전개형(fan out) 관계가 존재할 수도 있다. 예를 들면, 몇몇 실시예에서 단일 부모가 임의의 다수의 자식을 만들 수도 있고, 이들 자식들은 개별적으로 인코딩될 필요가 없다.
또한, 시퀀스(18)는 프리미티브 식별자의 각각에 대해 타임스탬프(time stamp)를 제공한다. 이것은 어떤 태스크가 시작하고 종료하는 시간을 출력으로 제공한다. 따라서, 일 실시예로, 일련의 스레드를 차트의 열(rows)로 디스플레이할 수 있다. 각 열은 그 스레드 내의 태스크의 시퀀스를 포함할 수 있을 것이다. 또한, 함유된(nested) 태스크도 시각화에 의해 표시될 수 있는데, 예를 들면 함유된 태스크를 그 태스크가 실행되는 태스크로부터 연장된 것으로 보여주는 것도 가능할 것이다. 사용자는 특정한 태스크를 클릭할 수 있고, 그 태스크의 선택에 응답하여 관계들이 그래픽으로 디스플레이될 수도 있다.
시간 기반형인 트래이싱 시스템과 반대로, 시스템(10)은 관계 기반형일 수 있다. 태스크들과 다른 버퍼들 간의 시간적 관계는 그들 사이의 관계보다 덜 중요하다. 몇몇 실시예에서, 태스크들 간의 관계가, 그들 간의 상대적 타이밍이 존재하지 않는 경우에도 보여진다. 따라서, 일부 실시예에서 스레드 내부에서의 태스크의 시간 시퀀스가 도시될 수는 있지만, 서로 다른 스레드 내의 태스크들의 시간적 시퀀스는 도시되지 않을 수도 있다. 몇몇 실시예로, 시간적 관계와 상반되는 기능적 관계가 시각화될 수 있을 것이다. 기능적 관계는 태스크들 사이의 시간적 시퀀스가 아닌 어떤 관계이다.
일 실시예에서, 각각의 태스크는 직사각형으로 표현될 수 있는데, 이 직사각형의 x 방향으로의 길이는 그 태스크를 실행하는데 걸리는 시간의 함수이다. 몇몇 실시예에서는, 마우스 클릭 및 드래그(drag) 기술이, 다수의 태스크를 선택하여 이 선택된 태스크와 다른 태스크 간의 관계를 디스플레이하도록 이용될 수 있다.
따라서, 간단한 예로서, 도 3을 참조하면, 세 개의 태스크(36, 38, 42)와 버퍼(40) 형태의 하나의 파라미터를 포함하는 4개의 프리미티브가 있다. 화살표(44, 52, 50, 48)는 이 태스크들 간의 관계를 보여준다. 예를 들어, 버텍스 태스크(vertex task)(38)는 자신의 결과를 버퍼(40)에 저장하고 이것을 태스크(42)가 이용할 수 있다. 따라서 태스크(38)은 생산자이고, 태스크(42)는 소비자이다. 버텍스 태스크(38)가 드로우 태스크(draw task)에 의해 생성되었기 때문에, 화살표(52)는 버텍스 태스크가 드로우 태스크(36)의 자식임을 표시한다. 유사하게, 픽셀 태스크(pixel task)(42)는 버텍스 태스크(38)에 실행이 종속되어 있고, 그러므로 그 종속성이 화살표(46)로 표시되었다. 결국, 경우에 따라서는 태스크들 사이에 다수의 관계가 존재할 수도 있을 것이다. 또한 다중 객체 유형이 존재할 수도 있다.
다시 도 2로 되돌아가서, 식별자를 프리미티브에 할당(28)한 후에, 블록(30)에 표시된 것처럼 이 프리미티브에 대한 관계가 입력된다. 비록 수동적인 방식이 본 원에 기술되었을지라도, 코드 해석이 사용자 개입 없이 자동으로 관계를 입력하게 하는 자동 방식이 고려될 수도 있다.
다음, 판정블록(32)에서, 인코딩할 프리미티브가 더 있는지를 검사한다. 만약 있다면, 흐름은 반복된다. 그렇지 않다면, 판정블록(34)에서 인코딩할 스레드가 더 있는지를 검사한다. 만약 있다면, 흐름은 반복된다. 그렇지 않다면 흐름은 종료한다.
도 4는 부모/자식 관계에 대한 시각화의 일 예를 보여준다. 일 실시예로, 시각화는 마우스 선택형 태스크 혹은 프리미티브 묘사를 갖는 GUI(graphical user interface)일 수도 있다. 이 예에서는, 단지 4개의 스레드만 도시되었다. 각각의 스레드와 관련하여 태스크들이 직사각형으로 표시된다.
이 경우, 사용자는 두 번째 스레드에서 부모 태스크 B를 선택했다. 그에 응답하여, 부모/자식 관계의 시각화가 자동적으로 만들어진다. 즉, 화살표는 태스크 B에서 이 태스크 B의 자식들인 세 번째 스레드 내의 일련의 태스크들 C로 뻗어있다. 더 나아가, 화살표는 세 번째 스레드내의 태스크 C로부터, 부모 태스크 B의 손자인 네 번째 스레드 내의 태스크 C로 뻗어있다.
도 5는 종속 관계의 시각화이다. 사용자 선택 태스크 B가 태스크들 A, C, D, E에 종속하는 것만 제외하면 이것은 도 4에 대응한다. 다시 말해서, 태스크 B는 "유입 종속(incoming dependencies)"으로 명명된 화살표로 표시된 바와 같이 태스크 A로부터의 입력에 종속한다. 태스크 C, D, E는 태스크 B의 출력에 대해 종속되며, "송출 종속(outcoming dependencies)"으로 명명된다. 결국, 시각화는 서로 다른 스레드 내의 태스크들 사이의 기능적 관계를 보여준다.
예컨대 렌더링 패스(rendering passes)같은 몇몇 그래픽 애플리케이션에서는, 전술한 기법으로 태스크 시각화를 할 수 없다. 그러나 렌더링 패스가 프로그램에 의해 수행되는 작업의 유용한 척도일 수 있고, 애플리케이션 개발자 레벨에서 프로파일링(profiling)을 위한 바람직한 툴일 수도 있다.
그래픽 애플리케이션 프로그램 인터페이스가 실제로 렌더링 패스를 나타내는 명시적 기능을 포함하지 않기 때문에, 렌더링 패스는 일련의 APIs 콜 동안 암시적으로 생성되므로, 전술한 방식으로 코딩가 이루어지지는 않을 것이다. 따라서, 이러한 암시적으로 생성되는 태스크는 가상 태스크를 이용해 시각화가 될 수 있다. 보다 구체적인 예로서, 다음에 예시된 콜이 다이렉트 X(Direct X) API에 만들어질 수 있을 것이다.
SetRenderTarget(1)
Draw(draw_args_1)
Draw(draw_args_2)
SetRenderTarget(2)
Draw(draw_args_3)
이 코드에서 일어나는 일은, 드로우(1, 2)가 제 1 렌더된 타겟의 작업(the first rendered target's work)의 일부가 되는 반면, 드로우(3)는 제 2 렌더된 타겟의 작업(the second rendered target's work)의 일부가 되는 것이다. 이 작업은 하드웨어에서 실행되고, 작업 자체를 일으키는 커맨드는 드로잉 커맨드뿐이다. 세트 렌더 타겟 커맨드(set render target commands)는 단순히 설정을 선언하고 그 자체로 아무런 작업도 생성하지 않는다. 이것을 해결하기 위해, 가상 태스크가 몇몇 실시예에서 이용될 수 있다. 가상 태스크는 세트 렌더 타겟 콜(the set render target call)에서 생성될 수 있다.
SetRenderTarget(x) {
TAL_BeginVirtualTask("RenderTarget");
TAL_SetCurrentTaskID(x->renderTargetID);
TAL_EndVirtualTask()
}
보통의 태스크에서는 태스크의 지속기간이 관심사일 수 있으므로 시작 및 종료 콜의 타임스탬프가 기록된다. 그러나 전술한 세트 렌더 타겟의 예에서는, 실제 태스크가 실행과 동시에 끝나고, 더 정확히 말하자면, 이것은 이후에 실행될 진짜 작업에 대한 위치 지정자(a place holder)이다.
가상 태스크에게 실제 지속기간을 제공하기 위해, 비암시적으로 생성되거나 혹은 실제 코딩된 다른 태스크가 가상 태스크와 연관될 수 있을 것이다. 예를 들어, 드로우 콜 태스크가 생성될 때, 그 드로우 콜 태스크는 실제 가상 태스크의 자식이다. 이러한 가상 태스크의 개념에 따르면, 세트 렌더 타겟의 지속기간은 주어진 지속기간이며, 사용자에게 렌더 타겟 가상 태스크의 리스트를 제공하고 그 관련 태스크 모두에 기초하여 그들의 지속기간을 계산한다.
다음, 가상 태스크는 도 6에 도시된 것처럼 그 자식 태스크 중 최소 태스크와 최대 태스크를 이용해 타임라인(timeline)에 시각화될 수 있다. 부모/자식 관계로부터, 도 6에 도시된 것과 같은 시각화가 발생할 수 있다. 예를 들어, 타겟1을 렌더링하는 하부(underlying) 태스크는 드로우(1)와 드로우(2)의 자식으로 그려질 수 있을 것이고, 렌더 타겟2는 드로우(3)의 자식으로 그려질 수 있을 것이다. 따라서, 렌더 타겟1과 렌더 타겟2는 어떤 지속기간을 갖되, 이 지속기간은 기본적으로 세트 렌더 타겟1인 경우에는 드로우(1)와 드로우(2), 세트 렌더 타겟2인 경우에는 드로우(2)처럼 그 관련 드로우 콜들의 지속기간이다.
가상 태스크는 또한 복합성 태스크에 대해 더 많은 정보를 보여주어 상세한 정보없이도 기본적인 프로파일링이 가능하게 한다는 점에서 유용할 수 있다. 렌더 타겟의 예에서, 도 7에 도시된 것처럼 가상 태스크(렌더 타겟2, 렌더 타겟3)만이 애플리케이션 실행에서 도시될 수 있을 것이다. 대량의 스레드라면, 어떤 경우에는 도 6에 도시된 것보다 이것이 더 명확할 수 있다. 예를 들어, 128개의 상이한 스레드라면(이 스레드의 각각은 수십만 개의 태스크를 포함한다), 세트 렌더 타겟2는 가장 긴 것을 실행하고, 세트 렌더 타겟3은 세트 렌더 타겟2의 완료에 따라 종속될 수 있다. 이러한 통찰에 의해, 시간 소비자라는 것을 알게 되면 설계자는, 아마도 세트 렌더 타겟(2 및 3)을 공동 실행될 수 있도록 하거나 혹은 세트 렌더 타겟(2)을 최적화함으로써 프로파일링을 멈추거나 즉시 조치를 취할 수 있게 된다.
도 8을 참조하면, 가상 태스크를 입력하는 시퀀스(60)는 도 2에 도시되었듯이 모듈이거나 혹은 API(18)의 일부일 수 있다. 초기에는, 블록(62)으로 표시되었듯이, 마치 진짜 태스크인 것처럼 가상 태스크가 시작된다. 그러면, 마찬가지로 마치 가상 태스크가 진짜 태스크인 것처럼 블록(64)에서 현재 태스크 식별자가 설정된다. 다음, 이 태스크는 블록(66)에서 다른 태스크와 연관된다. 예를 들어, 세트 렌더 타겟 가상 태스크는, 예를 들어, 도 6에 도시된 것처럼 하나 이상의 드로우 콜과 연관될 수 있다. 이러한 연관은 가상 태스크 지속기간을 제공한다. 마지막으로 가상 태스크가 종료된다(블록(68)).
요컨대, 가상 태스크는 복합성 고수준 병렬 소프트웨어(complex, highly parallel software)와 관련하여 프로파일링 툴(profiling tool)을 건설하는데 유용할 수 있다. 이들이 없다면 프로파일링 툴은 API를 실행하는 메커니즘 외에는 아무것도 보여줄 수 없을 것이고, 경우에 따라 이것은 간단하고 중요한 성능 통찰을 얻을 수 없게 할 것이다. 몇몇 실시예에서 가상 태스크를 이용하여, 그 시작부터 이러한 이슈를 보다 알아보기 쉽게 하는 추상화(abstraction)가 이루어질 수 있고, 이것은 더 생산적이고 효율적인 탑 다운 프로파일링(top down profiling)을 가능하게 한다.
본 원에서 설명한 그래픽 처리 기술은 다양한 하드웨어적 구조로 구현될 수 있을 것이다. 예를 들면, 그래픽 기능은 칩셋 내부에 집적될 수 있을 것이다. 다르게는, 개별 그래픽 프로세서가 이용될 수도 있을 것이다. 또 다른 실시예로서, 그래픽 기능이 멀티-코어 프로세서를 포함한 범용 프로세서로 구현될 수도 있을 것이다.
본 원에서 "일 실시예" 혹은 "실시예"로 언급한 것들은 그 실시예와 관련하여 설명된 특정한 특징이나 구조 혹은 특성이 본 발명의 범주에 포함된 적어도 하나의 구현에 포함됨을 의미한다. 따라서, "일 실시예" 혹은 "실시예로"라고 표현된 것이 반드시 동일한 실시예를 언급하는 것은 아니다. 더 나아가, 특정한 특징, 구조 혹은 특성들은 예시된 특별한 실시예가 아닌 다른 적절한 형태로 구성될 수 있을 것이고, 모든 이러한 형태들은 본 발명의 특허청구범위에 포함될 것이다.
비록 본 발명이 한정된 수의 실시예로 설명되었더라도, 해당 기술분야에서 통상의 지식을 가진 사람이라면 그것에 다양한 변경이나 변형이 가능함을 인지할 것이다. 첨부된 특허청구범위는 본 발명의 진정한 사상과 범주 내에서 이러한 모든 수정과 변형을 포함하도록 의도된 것이다.

Claims (29)

  1. 멀티-코어 프로세서 내에서 암시적으로 생성된 태스크의 ID(an identification)를 수신하는 단계와,
    상기 암시적으로 생성된 태스크를 실제 코딩된 태스크와 연관시키는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 실제 코딩된 태스크와 상기 암시적으로 생성된 태스크 사이의 관계에 대한 시각화(a visualization)를 제공하는 단계를 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 태스크들 사이의 관계를 표시하는 단계를 포함하는
    방법.

  4. 제 3 항에 있어서,
    상기 태스크들 사이의 관계를 표시하는 단계는, 상기 암시적으로 생성된 태스크에 대한 지속기간(duration)을 표시하는 단계를 포함하는
    방법.
  5. 제 3 항에 있어서,
    상기 관계의 시각화를 제공하는 단계를 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 상기 실제 코딩된 태스크의 지속기간을 이용하는 단계를 포함하는
    방법.
  7. 제 6 항에 있어서,
    상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 2 이상의 실제 코딩된 태스크들의 지속기간을 이용하는 단계를 포함하는
    방법.
  8. 제 1 항에 있어서,
    상기 암시적으로 생성된 태스크로서 세트 렌더 타겟(a set render target)의 ID를 수신하는 단계를 포함하는
    방법.
  9. 제 8 항에 있어서,
    상기 세트 렌더 타겟을 적어도 하나의 드로우 콜(draw call)과 연관시키는 단계를 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 세트 렌더 타겟을 상기 드로우 콜의 자식(a child)으로서 디스플레이하는 단계를 포함하는
    방법.
  11. 컴퓨터에 의해 실행되는 명령어를 저장하는 컴퓨터 판독 가능 매체로서,
    멀티-코어 프로세서 내에서 암시적으로 생성된 태스크의 ID(an identification)를 수신하는 명령어와,
    상기 암시적으로 생성된 태스크를 실제 코딩된 태스크와 연관시키는 명령어를 저장하는
    컴퓨터 판독 가능 매체.
  12. 제 11 항에 있어서,
    상기 실제 코딩된 태스크와 상기 암시적으로 생성된 태스크 사이의 관계에 대한 시각화(a visualization)를 제공하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  13. 제 11 항에 있어서,
    상기 태스크들 사이의 관계를 표시하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.

  14. 제 13 항에 있어서,
    상기 암시적으로 생성된 태스크에 대한 지속기간(duration)을 표시하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  15. 제 13 항에 있어서,
    상기 관계의 시각화를 제공하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  16. 제 11 항에 있어서,
    상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 상기 실제 코딩된 태스크의 지속기간을 이용하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  17. 제 16 항에 있어서,
    상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 2 이상의 실제 코딩된 태스크들의 지속기간을 이용하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  18. 제 11 항에 있어서,
    상기 암시적으로 생성된 태스크로서 세트 렌더 타겟(a set render target)의 ID를 수신하는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  19. 제 18 항에 있어서,
    상기 세트 렌더 타겟을 적어도 하나의 드로우 콜과 연관시키는 명령어를 더 저장하는
    컴퓨터 판독 가능 매체.
  20. 제 19 항에 있어서,
    상기 세트 렌더 타겟을 상기 드로우 콜의 자식으로서 디스플레이하는 명령어를 더 포함하는
    컴퓨터 판독 가능 매체.
  21. 멀티-코어 프로세서와,
    상기 멀티-코어 프로세서에 접속된 메모리를 포함하며,
    상기 메모리는 멀티-코어 프로세서 내에서 암시적으로 생성된 태스크의 ID(an identification)를 수신하고 상기 암시적으로 생성된 태스크와 실제 코딩된 태스크를 연관시키는 명령어를 저장하는
    장치.
  22. 제 21 항에 있어서,
    상기 메모리가, 상기 실제 코딩된 태스크와 상기 암시적으로 생성된 태스크 사이의 관계에 대한 시각화(a visualization)를 제공하는 명령어를 저장하는
    장치.
  23. 제 21 항에 있어서,
    상기 장치가 상기 태스크들 사이의 관계를 표시하는
    장치.
  24. 제 21 항에 있어서,
    상기 장치가 그래픽 프로세서인
    장치.
  25. 제 24 항에 있어서,
    상기 장치가 단일 명령어 다중 데이터 멀티-코어 프로세서(a single instruction multiple data multi-core processor)인
    장치.
  26. 제 21 항에 있어서,
    상기 장치가 상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하는
    장치.
  27. 제 26 항에 있어서,
    상기 장치가 상기 지속기간의 시각화를 제공하는
    장치.

  28. 제 27 항에 있어서,
    상기 장치가 상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 상기 실제 코딩된 태스크의 지속기간을 이용하는
    장치.
  29. 제 28 항에 있어서,
    상기 장치가 상기 암시적으로 생성된 태스크에 대한 지속기간을 표시하기 위해 2 이상의 실제 코딩된 태스크들의 지속기간을 이용하는
    장치.
KR1020100132752A 2009-12-23 2010-12-22 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링 KR101232535B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/645,568 US8850404B2 (en) 2009-12-23 2009-12-23 Relational modeling for performance analysis of multi-core processors using virtual tasks
US12/645,568 2009-12-23

Publications (2)

Publication Number Publication Date
KR20110073362A KR20110073362A (ko) 2011-06-29
KR101232535B1 true KR101232535B1 (ko) 2013-02-12

Family

ID=43531605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100132752A KR101232535B1 (ko) 2009-12-23 2010-12-22 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링

Country Status (7)

Country Link
US (1) US8850404B2 (ko)
JP (1) JP5421228B2 (ko)
KR (1) KR101232535B1 (ko)
CN (1) CN102110012B (ko)
DE (1) DE102010053558A1 (ko)
GB (1) GB2476548A (ko)
TW (1) TWI499980B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6258159B2 (ja) * 2014-08-26 2018-01-10 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
CN107003828B (zh) * 2014-12-15 2021-05-14 英特尔公司 图形指令的仪器化
US9836186B2 (en) 2015-11-19 2017-12-05 International Business Machines Corporation Visualization and control of application interactions
GB2555586B (en) * 2016-10-31 2019-01-02 Imagination Tech Ltd Performance profiling in a graphics unit
CN108647134B (zh) * 2018-05-04 2019-04-12 北京物资学院 一种面向多核架构的任务监测、跟踪及识别方法
US10990439B1 (en) * 2019-09-26 2021-04-27 Facebook Technologies, Llc Tracing task execution across services in microkernel-based operating systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
US20050177775A1 (en) * 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH064361A (ja) * 1992-06-18 1994-01-14 Hokuriku Nippon Denki Software Kk トレース情報収集方式
JP3224426B2 (ja) * 1992-09-04 2001-10-29 富士通株式会社 プログラム解析支援装置
JPH07325732A (ja) * 1994-05-31 1995-12-12 Mitsubishi Electric Corp マルチプロセスのデバッグ方法
US6074135A (en) * 1996-09-25 2000-06-13 Innovative Technologies, Inc. Coating or ablation applicator with debris recovery attachment
US6560722B1 (en) 1999-12-30 2003-05-06 Texas Instruments Incorporated Developing and deploying real-time high-performance applications with DSPs
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
JP2002318712A (ja) * 2001-04-20 2002-10-31 Matsushita Electric Ind Co Ltd プログラム実行履歴解析方法
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
JP2004318914A (ja) * 2004-08-02 2004-11-11 Hitachi Ltd プログラムの表示方法及び装置並びにその処理プログラムを格納した記録媒体
US7895431B2 (en) * 2004-09-10 2011-02-22 Cavium Networks, Inc. Packet queuing, scheduling and ordering
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US9070104B2 (en) 2004-11-12 2015-06-30 Sap Se Cross-context task management
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
CN101354693B (zh) * 2008-09-11 2010-06-09 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
US8484276B2 (en) * 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
US8581916B2 (en) * 2009-06-26 2013-11-12 Intel Corporation Graphics analysis techniques

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
US20050177775A1 (en) * 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis

Also Published As

Publication number Publication date
TWI499980B (zh) 2015-09-11
DE102010053558A1 (de) 2012-03-08
JP2011138494A (ja) 2011-07-14
GB201020734D0 (en) 2011-01-19
US20110154337A1 (en) 2011-06-23
GB2476548A (en) 2011-06-29
US8850404B2 (en) 2014-09-30
KR20110073362A (ko) 2011-06-29
TW201137752A (en) 2011-11-01
JP5421228B2 (ja) 2014-02-19
CN102110012B (zh) 2015-06-24
CN102110012A (zh) 2011-06-29

Similar Documents

Publication Publication Date Title
KR101232535B1 (ko) 가상 태스크를 이용한 멀티-코어의 성능 분석용 관계 모델링
US9047399B2 (en) Generating visualization from running executable code
US8726226B2 (en) Integrated work lists for engineering project change management
US8286135B2 (en) Performance visualization including hierarchical display of performance data
US10896112B2 (en) Visualization tool for parallel dependency graph evaluation
US9207935B2 (en) Early analysis of software design diagrams
KR100921514B1 (ko) 성능 예측 기능을 제공하는 소프트웨어 개발 장치 및 방법
JP2015043198A (ja) 解析システム、解析方法および解析プログラム
US10922779B2 (en) Techniques for multi-mode graphics processing unit profiling
US8959479B2 (en) Presenting a custom view in an integrated development environment based on a variable selection
US8826234B2 (en) Relational modeling for performance analysis of multi-core processors
Brinkmann et al. Task debugging with temanejo
US9342276B1 (en) Optimization tracing
US20160171640A1 (en) Frame Invalidation Control with Causality Attribution
CN112445855A (zh) 用于图形处理器芯片的可视化分析方法和可视化分析装置
US20120232880A1 (en) Performance assessment of a program model
US11989537B2 (en) Dataflow-based computer program visualization and refactoring
JP5287427B2 (ja) シンボリックデバッガ、方法およびプログラム
US20020062208A1 (en) Method and apparatus for visualization of microprocessor pipeline operation
Kita et al. Implementation and evaluation of an automatic visualization tool" PGT" for programming education
Blochinger et al. Visualization aided performance tuning of irregular task-parallel computations
Reiss et al. From the Concrete to the Abstract: Visual Representations of Program Execution.
Comba Visualization of Execution Traces of Dataflow Systems

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee