1 |
1
GPU 커널함수와 관련된 소스 코드로부터 WAR(Write After Read) 패턴 정보를 생성하는 단계; 및상기 WAR 패턴 정보에 기초하여 제1 메모리 변수에 대한 WAR 위험이 발생하는 읽기 접근 후 쓰기 접근이 확인된 경우, 상기 쓰기 접근에 대한 코드 전에, 상기 제1 메모리 영역 변수를 제2 메모리 변수로 치환하는 코드를 삽입하는 것을 특징으로 하는 멱등 커널 생성 방법
|
2 |
2
제1항에 있어서,상기 WAR 패턴 정보를 생성하는 단계는,상기 소스 코드에서 GPU 커널함수를 확인하는 단계;상기 GPU 커널함수에 전달되는 글로벌 메모리 변수를 확인하는 단계; 및상기 GPU 커널함수 및 상기 글로벌 메모리 변수에 기초하여 상기 WAR 패턴 정보를 생성하는 단계를 포함하는 멱등 커널 생성 방법
|
3 |
3
제2항에 있어서,상기 GPU 커널함수는 특정 지시자에 의해 디바이스 함수와 구분되는 멱등 커널 생성 방법
|
4 |
4
제2항에 있어서,상기 GPU 커널함수 및 상기 글로벌 메모리 변수에 기초하여 상기 WAR 패턴 정보를 생성하는 단계는,상기 GPU 커널함수 및 상기 글로벌 메모리 변수와 관련된 연산자를 통해 읽기 접근 및 쓰기 접근을 확인하는 단계; 및상기 글로벌 메모리 변수에 대한 상기 읽기 접근과 상기 쓰기 접근에 의해 WAR 패턴 정보를 생성하는 단계를 포함하는 멱등 커널 생성 방법
|
5 |
5
제1항에 있어서,상기 제1 메모리 변수 및 상기 제2 메모리 변수는 글로벌 메모리 변수인 멱등 커널 생성 방법
|
6 |
6
GPU 커널함수와 관련된 소스 코드 내 정적으로 결정되지 않는 WAR(Write After Read) 위험과 관련된 제1 메모리 변수를 확인하는 단계;상기 제1 메모리 변수에 대한 읽기 접근 또는 쓰기 접근을 추적하기 위한 접근 플래그 비트맵을 설정하는 코드를 삽입하는 단계;상기 GPU 커널함수 내 임시 포인터 변수를 지역 변수로 선언하고, 상기 제1 메모리 변수로 초기화하는 단계; 및상기 임시 포인터 변수에 대한 읽기 접근 후, 쓰기 접근 발생 전에 동적으로 상기 임시 포인터 변수를 제1 메모리 변수로 할지, 제2 메모리 변수로 할지 결정하는 코드를 삽입하는 단계를 포함하는 것을 특징으로 하는 멱등 커널 생성 방법
|
7 |
7
제6항에 있어서,상기 정적으로 결정되지 않는 WAR(Write After Read) 위험과 관련된 변수들은 조건문 또는 동적으로 결정되는 인덱스와 관련된 변수들인 멱등 커널 생성 방법
|
8 |
8
제6항에 있어서,상기 접근 플래그 비트맵은 글로벌 메모리에 포함되는 영역들 각각에 대한 쓰기 접근 또는 읽기 접근을 나타내는 비트(bit) 집합인 멱등 커널 생성 방법
|
9 |
9
제8항에 있어서,상기 접근 플래그 비트맵을 설정하는 코드는 상기 글로벌 메모리에 포함되는 특정 영역에 대한 읽기 접근 또는 쓰기 접근이 발생한 경우, 상기 특정 영역에 매핑되는 비트가 1의 값을 갖도록 하는 멱등 커널 생성 방법
|
10 |
10
제6항에 있어서,상기 제1 메모리 변수 및 상기 제2 메모리 변수는 글로벌 메모리 변수인 멱등 커널 생성 방법
|
11 |
11
GPU 커널함수와 관련된 소스 코드로부터 WAR(Write After Read) 패턴 정보를 생성하는 패턴 생성부; 및상기 WAR 패턴 정보에 기초하여 제1 메모리 변수에 대한 WAR 위험이 발생하는 읽기 접근 후 쓰기 접근이 확인되는 경우, 상기 쓰기 접근에 대한 코드 전에, 상기 제1 메모리 변수를 제2 메모리 변수로 치환하는 코드를 삽입하는 리다이렉션부를 포함하는 것을 특징으로 하는 멱등 커널 생성 장치
|
12 |
12
제11항에 있어서,상기 패턴 생성부는, 상기 소스 코드에서 GPU 커널함수를 확인하고, 상기 GPU 커널함수에 전달되는 글로벌 메모리 변수를 확인하며, 상기 GPU 커널함수 및 상기 글로벌 메모리 변수에 기초하여 상기 WAR 패턴 정보를 생성하는 멱등 커널 생성 장치
|
13 |
13
제12항에 있어서,상기 GPU 커널함수는 특정 지시자에 의해 디바이스 함수와 구분되는 멱등 커널 생성 장치
|
14 |
14
제12항에 있어서,상기 패턴 생성부는,상기 GPU 커널함수 및 상기 글로벌 메모리 변수와 관련된 연산자를 통해 읽기 접근 및 쓰기 접근을 확인하고, 상기 글로벌 메모리 변수에 대한 상기 읽기 접근과 상기 쓰기 접근에 의해 WAR 패턴 정보를 생성하는 멱등 커널 생성 장치
|
15 |
15
제11항에 있어서,상기 제1 메모리 변수 및 상기 제2 메모리 변수는 글로벌 메모리 변수인 커널 생성 장치
|
16 |
16
GPU 커널함수와 관련된 소스 코드 내 정적으로 결정되지 않는 WAR(Write After Read) 위험과 관련된 제1 메모리 변수를 확인하는 분석부;상기 제1 메모리 변수에 대한 읽기 접근 또는 쓰기 접근을 추적하기 위한 접근 플래그 비트맵을 설정하는 코드를 삽입하는 플래그 코드 삽입부;상기 GPU 커널함수 내 임시 포인터 변수를 지역 변수로 선언하고, 상기 제1 메모리 변수로 초기화하는 변수 선언부; 및상기 임시 포인터 변수에 대한 읽기 접근 후, 쓰기 접근 발생 전에 동적으로 상기 임시 포인터 변수를 제1 메모리 변수로 할지, 제2 메모리 변수로 할지 결정하는 코드를 삽입하는 결정 코드 삽입부를 포함하는 것을 특징으로 하는 멱등 커널 생성 장치
|
17 |
17
제16항에 있어서,상기 정적으로 결정되지 않는 WAR(Write After Read) 위험과 관련된 변수들은 조건문 또는 동적으로 결정되는 인덱스와 관련된 변수들인 멱등 커널 생성 장치
|
18 |
18
제16항에 있어서,상기 접근 플래그 비트맵은 글로벌 메모리에 포함되는 영역들 각각에 대한 쓰기 접근 또는 읽기 접근을 나타내는 비트(bit) 집합인 멱등 커널 생성 장치
|
19 |
19
제18항에 있어서,상기 접근 플래그 비트맵을 설정하는 코드는 상기 글로벌 메모리에 포함되는 특정 영역에 읽기 접근 또는 쓰기 접근이 발생한 경우, 상기 특정 영역에 매핑되는 비트가 1의 값을 갖도록 하는 멱등 커널 생성 장치
|
20 |
20
제16항에 있어서,상기 제1 메모리 변수 및 상기 제2 메모리 변수는 글로벌 메모리 변수인 멱등 커널 생성 장치
|