To cut down initialization time, I would like to initialize both CPU and GPU devices concurrently.
Is this safe?
What do you mean by concurrent initialization? Actual initialization is done during platform load and Context creation.
I mean: launch one thread per device: each thread initializes one device.
I guess I mean: are the platform load and context creation methods thread safe?
Yes, OpenCL Runtime is thread safe.
What do you want to achieve by using multiple threads for initialization? Do you want to create different contexts for CPU and GPU? Is is because you want to avoid data sharing between GPU and CPU?
Thanks, Dmitry. My target system is intel CPU and AMD GPU, so data sharing
is not possible.
For more complete information about compiler optimizations, see our Optimization Notice.