1 |
1
OpenCL 커널과 관련한 워크 그룹의 크기를 임의로 설정하는 단계;상기 설정된 워크 그룹의 워킹세트와 캐시 미스를 계산하는 함수를 생성하는 단계; 및상기 함수를 통해 최적의 워크 그룹의 크기를 결정하는 단계를 포함하며,상기 함수를 생성하는 단계는, 상기 설정된 워크 그룹의 워킹 세트와 캐시 미스가 다면체(polyhedron)의 정수 포인트(integer point)가 되도록 상기 설정된 워크 그룹에 따르는 다면체를 생성함으로써 상기 함수를 생성하는, 워크 그룹의 크기를 결정하는 방법
|
2 |
2
제 1 항에 있어서, 상기 워킹세트는, 각각의 워크 그룹이 사용하는 서로 다른 캐시 라인의 집합으로 정의되며, 상기 캐시 미스는, 캐패시티 미스(capacity miss)와 컨플릭트 미스(conflict miss)를 포함하는, 워크 그룹의 크기를 결정하는 방법
|
3 |
3
삭제
|
4 |
4
제 1 항에 있어서, 상기 함수를 생성하는 단계는, 각 메모리 액세스의 주소를 상기 워크 그룹의 크기에 대한 어드레스 수식으로 표현하는 단계;상기 어드레스 수식을 캐시 라인 인덱스로 변환하는 단계;상기 캐시 라인 인덱스를 통해 상기 워킹세트와 상기 캐시 미스를 결정하는 단계;상기 결정된 워킹세트와 상기 캐시 미스를 상기 다면체로 나타내어 상기 함수를 생성하는 단계;를 포함하는, 워크 그룹의 크기를 결정하는 방법
|
5 |
5
제 4 항에 있어서,상기 각 메모리 액세스의 주소를 상기 워크 그룹의 크기에 대한 어드레스 수식으로 표현하는 단계는, 상기 OpenCL 커널에 대한 커널 코드를 상기 설정된 워크 그룹의 크기의 루프(loop)로 변환하는 단계;상기 변환된 커널 코드로부터 이터레이션(iteration)에 대한 인덱스 도메인을 추출하는 단계; 및상기 인덱스 도메인으로부터 메모리 액세스에 대한 주소를 추출하기 위한 어드레스 수식을 결정하는 단계;를 포함하는, 워크 그룹의 크기를 결정하는 방법
|
6 |
6
제 4 항에 있어서, 상기 캐시 라인 인덱스를 통해 상기 워킹세트와 상기 캐시 미스를 결정하는 단계는, 상기 워킹세트를 상기 캐시 라인 인덱스의 집합으로 나타내고, 상기 캐시 라인 인덱스의 세트 번호와 캐시 태그를 이용하여 상기 캐시 미스에 대한 수식을 결정하는 것인, 워크 그룹의 크기를 결정하는 방법
|
7 |
7
제 1 항에 있어서, 상기 최적의 워크 그룹의 크기는 상기 워킹세트를 메모리 용량 내의 최대로 하면서 상기 캐시 미스를 유발하지 않는 워크 그룹의 크기인, 워크 그룹의 크기를 결정하는 방법
|
8 |
8
제 7 항에 있어서, 상기 함수를 통해 최적의 워크 그룹의 크기를 결정하는 단계는, 상기 함수에 상기 OpenCL 커널의 파리미터를 입력하여, 상기 OpenCL 커널에 대한 워킹세트와 캐시 미스를 획득하는 단계;상기 획득된 워킹세트와 캐시미스를 통해 선형회귀식을 구하는 단계; 및상기 선형회귀식을 통해 상기 최적의 워크 그룹의 크기를 결정하는 단계; 를 포함하는, 워크 그룹의 크기를 결정하는 방법
|
9 |
9
제 1 항에 있어서, 상기 워크 그룹의 크기를 결정하는 방법은, 상기 함수를 통해 결정된 최적의 워크 그룹의 크기를 상기 OpenCL 커널의 파라미터와 대응하여 저장하는 단계; 및추후에 임의의 커널에 대해서 워크 그룹의 크기를 결정할 때, 상기 임의의 커널의 파라미터를 통해 상기 저장된 워크 그룹의 크기를 검색하고, 상기 검색된 워크 그룹의 크기를 최적의 워크 그룹의 크기로 결정하는 단계;를 더 포함하는, 워크 그룹의 크기를 결정하는 방법
|
10 |
10
OpenCL 커널과 관련한 워크 그룹의 크기를 임의로 설정하고, 상기 설정된 워크 그룹의 워킹세트와 캐시 미스를 계산하는 함수를 생성하는 컴파일러 실행부; 및상기 함수를 통해 최적의 워크 그룹의 크기를 결정하는 런타임 실행부를 포함하고,상기 컴파일러 실행부는, 상기 설정된 워크 그룹의 워킹 세트와 캐시 미스가 다면체(polyhedron)의 정수 포인트(integer point)가 되도록 상기 설정된 워크 그룹에 따르는 다면체를 생성함으로써 상기 함수를 생성하는, 워크 그룹의 크기를 결정하는 시스템
|
11 |
11
제 10 항에 있어서, 상기 워킹세트는, 각각의 워크 그룹이 사용하는 서로 다른 캐시 라인의 집합으로 정의되며, 상기 캐시 미스는, 캐패시티 미스(capacity miss)와 컨플릭트 미스(conflict miss)를 포함하는, 워크 그룹의 크기를 결정하는 시스템
|
12 |
12
삭제
|
13 |
13
제 10 항에 있어서, 상기 컴파일러 실행부는, 각 메모리 액세스의 주소를 상기 워크 그룹의 크기에 대한 어드레스 수식으로 표현하고, 상기 어드레스 수식을 캐시 라인 인덱스로 변환하며,상기 캐시 라인 인덱스를 통해 상기 워킹세트와 상기 캐시 미스를 결정하고,상기 결정된 워킹세트와 상기 캐시 미스를 상기 다면체로 나타내어 상기 함수를 생성하는, 워크 그룹의 크기를 결정하는 시스템
|
14 |
14
제 13 항에 있어서, 상기 컴파일러 실행부는, 상기 워킹세트를 상기 캐시 라인 인덱스의 집합으로 나타내고, 상기 캐시 라인 인덱스의 세트 번호와 캐시 태그를 이용하여 상기 캐시 미스에 대한 수식을 결정하는 것인, 워크 그룹의 크기를 결정하는 시스템
|
15 |
15
제 10 항에 있어서, 상기 최적의 워크 그룹의 크기는, 상기 워킹세트를 메모리 용량 내의 최대로 하면서 상기 캐시 미스를 유발하지 않는 워크 그룹의 크기인, 워크 그룹의 크기를 결정하는 시스템
|
16 |
16
제 15 항에 있어서, 상기 런타임 실행부는, 상기 함수에 상기 OpenCL 커널의 파리미터를 입력하여, 상기 OpenCL 커널에 대한 워킹세트와 캐시 미스를 획득하고,상기 획득된 워킹세트와 캐시미스를 통해 선형회귀식을 구하며,상기 선형회귀식을 통해 상기 최적의 워크 그룹의 크기를 결정하는, 워크 그룹의 크기를 결정하는 시스템
|
17 |
17
제 10 항에 있어서, 상기 워크 그룹의 크기를 결정하는 시스템은, 상기 함수를 통해 결정된 최적의 워크 그룹의 크기를 상기 OpenCL 커널의 파라미터와 대응하여 저장하는 저장부; 및추후에 임의의 커널에 대해서 워크 그룹의 크기를 결정할 때, 상기 임의의 커널의 파라미터를 통해 상기 저장된 워크 그룹의 크기를 검색하는 검색부; 를 더 포함하는, 워크 그룹의 크기를 결정하는 시스템
|
18 |
18
OpenCL 커널을 통해 실행되는 컴퓨터에서 워크 그룹의 크기를 결정하는 방법을 수행하는 컴퓨터 판독가능 기록 매체에 있어서, 상기 워크 그룹의 크기를 결정하는 방법은,OpenCL 커널과 관련한 워크 그룹의 크기를 임의로 설정하는 단계;상기 설정된 워크 그룹의 워킹세트와 캐시 미스를 계산하는 함수를 생성하는 단계; 및상기 함수를 통해 최적의 워크 그룹의 크기를 결정하는 단계를 포함하고,상기 함수를 생성하는 단계는, 상기 설정된 워크 그룹의 워킹 세트와 캐시 미스가 다면체(polyhedron)의 정수 포인트(integer point)가 되도록 상기 설정된 워크 그룹에 따르는 다면체를 생성함으로써 상기 함수를 생성하는, 컴퓨터 판독 가능 기록 매체
|