OpenCL 충돌 (SEGFAULT)
문제
Zivid SDK는 여러 OpenCL 플랫폼이 있는 환경에서 충돌하거나 불안정하게 작동합니다. 흔히 발생하는 문제는 지원되는 GPU 플랫폼 대신 CPU OpenCL 플랫폼이 의도치 않게 선택되는 것입니다.
참고
Zivid에서 CPU는 지원되지 않는 컴퓨팅 장치 모드입니다.
가능 원인
혼합 플랫폼 구성은 GPU 및 CPU OpenCL 플랫폼을 모두 포함합니다. 예를 들면 다음과 같습니다.
Intel GPU OpenCL 플랫폼
다른 설치형 클라이언트 드라이버(ICD) 제공업체의 CPU OpenCL 플랫폼
When ComputeDevice is explicitly pinned to CPU, this can cause unstable behavior, including crashes.
해결책
의도치 않은 CPU 사용
CPU 사용량이 의도적이지 않을 때 선호하는 해상도입니다.
OpenCL 플랫폼 및 장치 목록을 나열하십시오.
clinfo Windows 바이너리 파일을 다운로드하십시오.
키보드에서 Win + R 키를 눌러 명령 프롬프트를 실행한 다음
cmd를 입력하고 Enter 키를 누르십시오.다운로드한 파일 (clinfo.exe) 이 있는 디렉토리로 이동하여 다음 명령을 실행하십시오.
clinfo.exe -l
키보드에서 Ctrl + Alt + T 키를 눌러 터미널 창을 열고
clinfo설치하세요.sudo apt install -y clinfo
모든 OpenCL 플랫폼을 나열하려면
clinfo -l실행하세요.clinfo -l
CPU 플랫폼이 있는지, 그리고 설정에서 해당 플랫폼이 우선 순위를 가질 수 있는지 확인하십시오.
Inspect your Configuration file and check
ComputeDevicevalues.CPU를 사용할 의도가 아니라면, 구성 파일 에서 Zivid가 지원되는 GPU를 사용하도록 설정하세요.
__version__: serializer: 1 data: 19 Configuration: ComputeDevice: Type: GPU Vendor: Intel
Use
Vendor: Nvidiaif that is your intended GPU.사용 환경에 따라 충돌하는 CPU ICD를 제거하거나 비활성화하십시오.
clinfo -l를 다시 실행하고 결과로 나오는 플랫폼/장치 설정이 의도한 구성과 일치하는지 확인하십시오.
의도적인 CPU 사용
CPU 사용량이 의도적인 경우(지원되지 않는 모드) 컴퓨팅 장치의 Type , Vendor 및 AllowUnsupported 설정하여 이를 명시적으로 지정하십시오.
__version__:
serializer: 1
data: 19
Configuration:
ComputeDevice:
Type: CPU
Vendor: Intel
AllowUnsupported: yes
경고
CPU는 지원되지 않는 연산 장치(Compute Device) 모드입니다. CPU를 사용할 경우 캡처 시간이 크게 증가하므로 대부분의 애플리케이션에서는 이 설정을 권장하지 않습니다. 또한 여러 OpenCL 플랫폼이 혼재된 환경에서는 CPU를 연산 장치로 선택할 경우 프로그램이 충돌하는 등 시스템이 불안정하게 동작할 수 있습니다.