1 |
1
사용자 정의된 nvidia-도커(docker)에 명령이 전송되면, 사용자 정의된 nvidia-도커를 통해 NVIDIA GPU 사용 옵션을 갖는 오리지널 도커에 명령이 리디렉션되는 단계; ConVGPU를 통해 상기 NVIDIA GPU 와 통신 및 제어하여 CUDA 래퍼(wrapper) API 모듈을 컨테이너에 삽입하는 단계; 컨테이너 런타임 중에 CUDA 래퍼 API 모듈을 통해 일부 API를 캡처하여 GPU 메모리 스케줄러로 전송하는 단계; 및 GPU 메모리 스케줄러를 통해 컨테이너와 GPU 메모리 사용을 스케줄링하는 단계 를 포함하고,상기 사용자 정의된 nvidia-도커(docker)에 명령이 전송되면, NVIDIA GPU 사용 옵션을 갖는 오리지널 도커에 명령이 리디렉션되는 단계는, 컨테이너가 사용할 수 있는 최대의 GPU 메모리를 설정하기 위해 nvidia-도커를 사용자 정의하고, 컨테이너 내부의 호스트와 프로그램간 통신을 위해 ConVGPU에 UNIX 소켓을 적용하고, 공유 메모리 및 일반 파일 공유를 위한 옵션들을 제공하는GPU 메모리 자원 관리 및 스케줄링 방법
|
2 |
2
삭제
|
3 |
3
제1항에 있어서, 상기 ConVGPU가 상기 NVIDIA GPU 와 통신하고 제어하여 CUDA 래퍼(wrapper) API 모듈을 컨테이너에 삽입하는 단계는, ConVGPU를 사용할 때 각 사용자 프로그램이 완전히 격리되도록 하고, 컨테이너의 정지 상태를 감지하기 위해, nvidia-도커를 사용하여 nvidia-도커-플러그인에 연결된 컨테이너에 더미 볼륨을 추가하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
4 |
4
제3항에 있어서, 컨테이너의 실행이 종료되는 경우, 도커는 볼륨을 마운트 해제하여, nvidia-도커-플러그인이 컨테이너가 종료되었음을 확인하고, nvidia-도커-플러그인은 해당 컨테이너에 대한 스케줄러로 종료 신호를 전송하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
5 |
5
제1항에 있어서, 컨테이너 런타임 중에 CUDA 래퍼 API 모듈이 일부 API를 캡처하여 GPU 메모리 스케줄러로 전송하는 단계는, CUDA 래퍼 API 모듈은 요청된 메모리 크기가 사용 가능한 경우에만 오리지널 CUDA API를 사용하여 메모리를 할당하고, 할당 후 CUDA 래퍼 API 모듈은 할당된 메모리 주소, 현재 pid 및 크기 정보를 GPU 메모리 스케줄러로 전송하여 GPU 메모리 사용을 추적하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
6 |
6
제1항에 있어서, 상기 GPU 메모리 스케줄러가 컨테이너와 GPU 메모리 사용을 스케줄링하는 단계는, GPU 메모리 스케줄러는 컨테이너로부터 모든 GPU 메모리 할당을 수락, 일시 중지 또는 거부하도록 결정하고, 각 컨테이너에 UNIX 소켓을 생성하고 컨테이너에 삽입된 CUDA 래퍼 API 모듈과 통신하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
7 |
7
제6항에 있어서, 사용자에 의해 컨테이너가 실행되기 전에, nvidia-도커는 해당 컨테이너의 고유 디렉토리 경로를 스케줄러에 요청하고, 스케줄러는 컨테이너와 볼륨을 공유하기 위한 디렉토리를 생성하여, 디렉토리 내에 UNIX 소켓을 구축하고, CUDA 래퍼 API 모듈을 디렉토리에 복사하는GPU 메모리 자원 관리 및 스케줄링 방법
|
8 |
8
제6항에 있어서, 사용자 프로그램이 메모리 할당 API를 호출하면, CUDA 래퍼 API 모듈은 컨테이너에 준비된 UNIX 소켓을 통해 메모리 크기 정보를 GPU 메모리 스케줄러로 전송하고, GPU 메모리 스케줄러는 컨테이너에서 모든 메모리 할당 호출을 추적하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
9 |
9
제6항에 있어서, 실행중인 컨테이너에서 GPU 메모리 크기가 충분하지 않은 경우, 요구되는 메모리 크기를 사용할 수 있을 때까지 GPU 메모리 스케줄러의 응답이 일시 중단되고, 해당 컨테이너에서 요청된 모든 메모리 할당은 스케줄러가 컨테이너에 GPU 메모리를 더 할당할 때까지 일시 중단되며, 일부 컨테이너의 실행이 완료되면 GPU 메모리 스케줄러가 점유된 GPU 메모리를 다른 컨테이너에 할당하는 GPU 메모리 자원 관리 및 스케줄링 방법
|
10 |
10
명령이 전송되면, NVIDIA GPU 사용 옵션을 갖는 오리지널 도커에 명령을 리디렉션하는 사용자 정의된 nvidia-도커(docker); 상기 NVIDIA GPU 와 통신 및 제어하여 CUDA 래퍼(wrapper) API 모듈을 컨테이너에 삽입하는 ConVGPU; 컨테이너 런타임 중에 일부 API를 캡처하여 GPU 메모리 스케줄러로 전송하는 CUDA 래퍼 API 모듈; 및 컨테이너와 GPU 메모리 사용을 스케줄링하는 GPU 메모리 스케줄러 를 포함하고,사용자 정의된 nvidia-도커는, 컨테이너가 사용할 수 있는 최대의 GPU 메모리를 설정하기 위해 nvidia-도커를 사용자 정의하고, 컨테이너 내부의 호스트와 프로그램간 통신을 위해 ConVGPU에 UNIX 소켓을 적용하고, 공유 메모리 및 일반 파일 공유를 위한 옵션들을 제공하는GPU 메모리 자원 관리 및 스케줄링 시스템
|