1 |
1
GPU 메모리 스케줄러의 후킹 모듈이 GPU 메모리를 선점하는 방법으로서,사용자 어플리케이션에서 공유 라이브러리를 호출하는 함수를 확인하는 단계,상기 사용자 어플리케이션이 호출한 호출 함수가 GPU 메모리 할당 요청 함수이면, 상기 호출 함수를 가로채는(hooking) 단계,가로챈 상기 호출 함수의 변수로부터 GPU 메모리 요청 용량을 확인하고, 확인한 요청 용량을 포함하여 노드 스케줄러로 상기 사용자 어플리케이션으로의 GPU 메모리 할당 가능 여부를 질의하는 단계, 그리고상기 노드 스케줄러로부터 GPU 메모리 할당 승인을 수신하면, 상기 가로챈 호출 함수의 또 다른 변수인 제1 메모리 주소를 제2 메모리 주소로 변경하고, 상기 제2 메모리 주소에서부터 요청 용량만큼 GPU 메모리를 할당 받도록 제2 메모리 주소와 요청 용량을 변수로 하는 GPU 메모리 할당 요청 함수를 상기 공유 라이브러리로 전달하는 단계를 포함하고,상기 후킹 모듈은 상기 사용자 어플리케이션과 상기 공유 라이브러리와 함께 가상화 환경에 위치하는 복수의 컨테이너에 각각 삽입되어 있는 후킹 모듈들 중 어느 하나이고,상기 가로챈 호출 함수는 상기 GPU 메모리 할당 요청 함수, 데이터 복사 함수, GPU 메모리 해제 함수, 커널 실행을 위한 라이브러리 설정 함수 그리고 커널 실행 함수 중 어느 하나인 GPU 메모리 선점 방법
|
2 |
2
제1항에 있어서,상기 공유 라이브러리로 전달하는 단계 이후에,할당 받은 GPU 메모리를 이용한 작업 실행 정지 명령을 상기 노드 스케줄러로부터 수신하는 단계,상기 GPU 메모리에서 작업하는 데이터를 복사하기 위하여, 상기 GPU 메모리에서 사용하는 용량만큼을 메인 메모리에서 할당 받기 위한 메인 메모리 할당 API를 호출하는 단계,메인 메모리가 할당되면, 상기 GPU 메모리 상의 데이터를 상기 메인 메모리로 복사하는 단계, 그리고상기 GPU 메모리의 반환을 상기 노드 스케줄러로 알리는 단계를 포함하는 GPU 메모리 선점 방법
|
3 |
3
제2항에 있어서,상기 제1 메모리 주소는 상기 사용자 어플리케이션이 상기 GPU 메모리 할당 요청 함수를 처음 호출하였을 때 상기 사용자 어플리케이션에 반환된 메모리 주소이고, 상기 제2 메모리 주소는 상기 데이터가 위치할 메모리의 주소이며,상기 제2 메모리 주소는 GPU 메모리 주소 또는 메인 메모리 주소 중 어느 하나인 GPU 메모리 선점 방법
|
4 |
4
제2항에 있어서,상기 GPU 메모리의 반환을 상기 노드 스케줄러로 알리는 단계 이후에,상기 노드 스케줄러로부터 작업 실행 재개 명령을 수신하는 단계,상기 GPU 메모리를 할당 받기 위한 GPU 메모리 할당 요청 함수를 호출하는 단계, 그리고GPU 메모리가 할당되면, 상기 메인 메모리에 복사되어 있는 상기 데이터를 할당된 GPU 메모리로 복사하는 단계를 더 포함하는 GPU 메모리 선점 방법
|
5 |
5
삭제
|
6 |
6
제1항에 있어서,상기 GPU 메모리 할당 함수인지 확인하는 단계 이전에,상기 노드 스케줄러로 상기 후킹 모듈이 탑재되는 컨테이너를 등록하는 단계, 그리고상기 노드 스케줄러로부터 상기 컨테이너의 컨테이너 식별 정보를 수신하는 단계를 더 포함하는 GPU 메모리 선점 방법
|
7 |
7
GPU 메모리 스케줄러의 노드 스케줄러가 GPU 메모리를 선점하는 방법으로서,상기 GPU 메모리의 일부를 제1 GPU 컨테이너의 제1 사용자 어플리케이션에서 사용하고 있으며,제2 GPU 컨테이너의 후킹부로부터, 상기 제2 GPU 컨테이너에 포함된 제2 사용자 어플리케이션이 요청한 GPU 메모리의 할당 가능 질의를 수신하는 단계,상기 GPU 메모리의 가용 용량이 상기 제2 사용자 어플리케이션에서 요청한 GPU 메모리 요청 용량보다 적으면, 상기 제1 GPU 컨테이너의 후킹부로 상기 GPU 메모리에서의 작업 실행 정지 명령을 전송하는 단계,상기 제1 GPU 컨테이너의 후킹부로부터 GPU 메모리 반환 알림을 수신하면, 상기 제2 GPU 컨테이너의 후킹부로 메모리 할당 허가 신호를 전송하는 단계, 그리고상기 제1 GPU 컨테이너와 제2 GPU 컨테이너의 정보를 포함하는 컨테이너 리스트 테이블을 갱신하는 단계를 포함하고, 상기 GPU 메모리 스케줄러는 하나의 상기 노드 스케줄러와 복수의 GPU 컨테이너들 각각에 삽입된 후킹부들을 포함하며,상기 제1 GPU 컨테이너는 상기 제1 사용자 어플리케이션과 상기 제1 GPU 컨테이너의 후킹부를 포함하여 가상화 환경에 위치하고, 상기 제2 GPU 컨테이너는 상기 제2 사용자 어플리케이션과 상기 제2 GPU 컨테이너의 후킹부를 포함하여 가상화 환경에 위치하는 GPU 메모리 선점 방법
|
8 |
8
제7항에 있어서,상기 작업 실행 정지 명령을 전송하는 단계는,상기 제1 사용자 어플리케이션이 상기 GPU 메모리에서 처리하는 작업과 상기 제2 사용자 어플리케이션이 상기 GPU 메모리에서 처리할 작업의 우선 순위를 비교하는 단계, 그리고상기 처리할 작업의 우선 순위가 높으면, 상기 제1 GPU 컨테이너의 후킹부로 상기 실행 정지 명령을 전송하는 단계를 포함하는 GPU 메모리 선점 방법
|
9 |
9
제7항에 있어서,상기 컨테이너 리스트 테이블은 상기 제1 GPU 컨테이너와 제2 GPU 컨테이너 각각의 컨테이너 식별 정보, 컨테이너들 각각의 사용자 어플리케이션이 GPU 메모리 할당을 시도한 총 메모리 용량, 현재 GPU 메모리를 할당 받아 사용하고 있는 메모리 용량, 그리고 상기 GPU 메모리에서 작업이 실행중인지 여부를 나타내는 상태 정보를 포함하는 GPU 메모리 선점 방법
|
10 |
10
대상 사용자 어플리케이션에서 물리적인 GPU 메모리를 사용하기 위해 공유 라이브러리를 호출하는 호출 함수를 가로채고, 가로챈 호출 함수에 따라 상기 대상 사용자 어플리케이션에서 출력된 데이터가 향할 메모리 주소를 변경하여 상기 공유 라이브러리로 호출 함수를 전달하는 후킹부, 그리고상기 후킹부에서 전달되는 호출 함수들 중 GPU 메모리 할당 가능 질의를 수신하면, 상기 대상 사용자 어플리케이션이 상기 물리적인 GPU 메모리를 선점하도록 상기 물리적인 GPU 메모리를 공유하는 복수의 사용자 어플리케이션들 중 GPU 메모리 사용 정지 명령 대상 사용자 어플리케이션을 선택하고, 선택된 사용 정지 명령 대상 사용자 어플리케이션과 연결되어 있는 후킹부로 사용 정지 명령을 전송하는 노드 스케줄러를 포함하고,상기 후킹부는 상기 사용자 어플리케이션 및 공유 라이브러리와 함께 컨테이너에 포함되어 가상화 환경에 각각 위치하고, 상기 노드 스케줄러는 가상화 환경에 위치한 각 후킹부들과 연동하는 GPU 메모리 스케줄러
|
11 |
11
제10항에 있어서,상기 후킹부는,상기 공유 라이브러리를 호출하는 함수가 GPU 메모리 할당을 위한 함수, GPU 메모리 해제를 위한 함수, GPU 메모리와 메인 메모리 사이에 데이터 복사를 위한 함수, 그리고 커널 실행 관련 호출 함수 중 어느 하나이면, 상기 공유 라이브러리로 향하는 호출 함수를 가로채는 GPU 메모리 스케줄러
|
12 |
12
제11항에 있어서,상기 후킹부는,상기 노드 스케줄러로부터 사용 정지 명령을 수신하면, 상기 GPU 메모리에서 작업중인 데이터를 메인 메모리로 복사하기 위하여, 상기 GPU 메모리에서 사용하는 용량만큼의 메인 메모리 할당 함수를 호출하는 GPU 메모리 스케줄러
|
13 |
13
제12항에 있어서,상기 후킹부는,상기 호출 함수에 포함된 사용자 메모리 주소(ptrUser)를 실제 메모리 주소(ptrReal)로 변환하고, 상기 사용자 메모리 주소는 상기 GPU 메모리 할당 요청 함수가 처음 호출될 때 상기 대상 사용자 어플리케이션에 반환된 메모리 주소이고, 상기 실제 메모리 주소는 상기 데이터가 위치한 메모리의 메모리 주소이며, 상기 실제 메모리 주소는 GPU 메모리 주소 또는 메인 메모리 주소 중 어느 하나인 GPU 메모리 스케줄러
|
14 |
14
제13항에 있어서,상기 노드 스케줄러는,상기 대상 사용자 어플리케이션이 상기 GPU 메모리에서 처리할 작업과 상기 GPU 메모리를 공유하고 있는 복수의 사용자 어플리케이션들 각각의 작업의 우선순위를 비교하고, 비교한 우선순위에 따라 상기 사용 정지 명령을 수신할 사용자 어플리케이션을 결정하는 GPU 메모리 스케줄러
|
15 |
15
제14항에 있어서,상기 노드 스케줄러는,상기 GPU 메모리를 공유하거나 공유하고자 하는 복수의 컨테이너들 각각의 컨테이너 식별자를 생성하여 상기 후킹부로 전달하고, 상기 복수의 컨테이너들 각각에 대한 컨테이너 식별자, 각각의 컨테이너들에서 GPU 메모리 할당을 시도한 메모리 용량, 현재 GPU 메모리를 할당 받아 사용하고 있는 메모리 용량, 상기 GPU 메모리에서 작업이 실행중인지 여부를 나타내는 상태 정보를 포함하는 컨테이너 리스트 테이블을 관리하는 GPU 메모리 스케줄러
|