OpenCL 崩溃(SEGFAULT)
问题
在存在多个 OpenCL 平台的环境中,Zivid SDK 会崩溃或表现不稳定。一种常见情况是无意中选择了 CPU OpenCL 平台,而不是受支持的 GPU 平台。
备注
在 Zivid 中,CPU 是不受支持的计算设备模式。
可能原因
混合平台配置中同时包含 GPU 和 CPU OpenCL 平台,例如:
Intel GPU OpenCL 平台
来自其他可安装客户端驱动程序(ICD)提供商的 CPU OpenCL 平台
当 ComputeDevice 被明确固定为 CPU 时,可能导致不稳定行为,包括崩溃。
解决方案
无意使用 CPU
当并非有意使用 CPU 时的首选解决方法。
列出 OpenCL 平台和设备:
Windows
下载 clinfo 的 Windows 二进制文件。
在键盘上按 Win + R 键启动命令提示符,然后输入
cmd并按 Enter 键。导航到包含下载文件(clinfo.exe)的目录,并执行以下命令:
clinfo.exe -l
Ubuntu
在键盘上按 Ctrl + Alt + T 键打开终端窗口,然后安装
clinfo。sudo apt install -y clinfo
运行
clinfo -l以列出所有 OpenCL 平台。clinfo -l
检查是否存在 CPU 平台,以及它们是否可能在您的配置中被优先选用。
检查您的 配置文件 并检查
ComputeDevice的值。如果使用 CPU 并非有意为之,请在 配置文件 中将 Zivid 固定到受支持的 GPU:
__version__: serializer: 1 data: 19 Configuration: ComputeDevice: Type: GPU Vendor: Intel
如果这是您预期使用的 GPU,请使用
Vendor: Nvidia。在适合您环境的情况下,移除或禁用冲突的 CPU ICD。
重新运行
clinfo -l,并验证生成的平台/设备配置是否符合您预期的配置。
有意使用 CPU
如果有意使用 CPU(不受支持的模式),请通过设置计算设备的 Type、Vendor 和 AllowUnsupported 来明确指定这一点。
__version__:
serializer: 1
data: 19
Configuration:
ComputeDevice:
Type: CPU
Vendor: Intel
AllowUnsupported: yes
警告
CPU 是不受支持的计算设备模式。使用 CPU 会大幅增加捕获时间,因此不建议在大多数应用中采用此配置。在混合 OpenCL 平台配置中,选择 CPU 还可能导致不稳定行为,包括崩溃。