OpenCL:为什么 clCreateContext 创建线程?

OpenCL: Why does clCreateContext creates threads?

我正在调试与 OpenCL 相关的分段错误。使用 gdb 我注意到由于 clCreateContext

创建了几个线程

GDB output:

print Before clCreateContext

[New Thread 0x7ffff299b700 (LWP 10807)]

[New Thread 0x7ffff219a700 (LWP 10808)]

[New Thread 0x7ffff1999700 (LWP 10809)]

[New Thread 0x7ffff1198700 (LWP 10810)]

[New Thread 0x7ffff0997700 (LWP 10811)]

[New Thread 0x7fffebfff700 (LWP 10812)]

[New Thread 0x7fffeb7fe700 (LWP 10813)]

print After clCreateContext

有人知道这是什么原因吗?

[我在 Ubuntu]

上使用 OpenCl 1.2 和 NVIDIA GPU

OpenCL 实现需要在内部生成线程以支持不同的功能,例如监视设备内核执行或内存传输,或执行用户回调。此行为是实现定义的,因此不同的实现可能会产生不同数量的线程。