# ViDi 서버를 이용한 GPU 모드

클라이언트/서버 기능을 이용하면 트레이닝 및 처리 두 가지 모두를 위해 8대까지의 클라이언트 PC가 단일 서버를 이용할 수 있습니다. 이렇게 하면, 클라이언트는 서버에 설치된 하나 이상의 GPU 사용을 공유할 수 있습니다.

ViDi Suite 서버는 다수 GPU 이용에 있어, 로컬로 실행되는 ViDi Suite GUI와 기능 및 구성 옵션이 완전히 동일합니다.

- 다수 GPU를 공유하려면, GPU는 모두 같은 유형이고 메모리 용량이 같아야 합니다.
- 서버 한 대가 사용할 수 있는 최대 GPU 수는 4입니다.
- 개별 클라이언트는 스트림 처리 시 특정 GPU 장치를 요청할 수 있습니다.
- 단일 ViDi 서버는 트레이닝 서비스 제공(ViDi Suite GUI를 실행하는 클라이언트 지원), 런타임 서비스 제공(런타임 인터페이스를 이용해 스트림을 통한 이미지를 처리하는 클라이언트 지원), 또는 트레이닝 및 런타임 서비스 모두를 위해 구성할 수 있습니다. 요청의 원천(트레이닝 또는 런타임 서비스)과 무관하게, 해당 요청은 단일의 FIFO 큐에 놓여지며 최초로 사용 가능해지는 GPU 장치를 이용해 순서대로 처리됩니다.

서버의 GPU 모드는 ViDi Suite Service가 시작되면 설정되며, 명령줄 인수를 이용해 GPU 모드를 지정할 수 있습니다.

SingleDevicePerTool GPU 모드

기본값으로, 서비스는 SingleDevicePerTool GPU 모드를 이용하도록 구성됩니다. 이 모드에서는, 도구가 처리될 때마다, 도구 처리 시간 동안 GPU가 잠깁니다. 도구 처리가 끝나면 GPU가 해제됩니다.

다수의 도구로 된 스트림을 처리할 때는, 각 도구가 연속으로 처리됩니다. 스트림의 다음 도구를 실행할 때 사용 가능한 GPU가 없다면, 사용 가능한 GPU가 생길 때까지 스트림이 정지합니다. 큐에 이미 다른 처리 요청이 있는 경우, 해당 도구는 큐의 마지막에 추가됩니다.

동일한 업스트림 도구를 입력으로 이용하는 도구 두 개로 스트림이 구성된 경우, 이 도구들은 병행 처리가 아니라 연속 처리되며, 두 개의 도구가 모두 처리될 때까지 스트림 처리가 다른 도구를 차단합니다.

MultipleDevicesPerTool GPU 모드

서버가 MultipleDevicesPerTool GPU 모드로 구성된 경우, 모든 GPU가 항상 단일 GPU로 간주됩니다. 따라서, 서버 전체적으로 매 시점마다 단 하나의 도구가 처리할 수 있습니다.

Red 분석 도구의 특수한 경우, MultipleDevicesPerTool 모드를 이용하면 도구 속도가 빨라질 수 있으며, 특히 이미지 대 형상 크기의 비율이 높은 경우에 빨라집니다. 하지만, 이러한 속도 증가에는 모든 클라이언트의 대기 시간 증가라는 희생이 따릅니다.