Two suggestions for supporting a multi-process environment

1. Devices of each platform should be numbered.

When two different processes call “clGetDeviceIDs()”, the OpenCL standard does not (currently) guarantee that the physical devices will be listed in the same order for both.

What if a computer has two (or more) identical devices and a process specifically wants to use either the same physical device as another process did, or perhaps it wants to use a different device (for example due to heating, power-supply issues or a suspected hardware fault)? Currently there is no way to tell the difference.

Something as simple as:
[ul] clGetDeviceInfo(param_name=CL_DEVICE_INDEX)[/ul]
could solve this problem.

2. Allow use of OpenCL by both parent and child processes.

Currently in most implementations, if a parent process uses OpenCL in any way before calling “fork()”, then its son processes cannot use OpenCL at all. This is because the OpenCL initialization by the parent usually involves opening files in “/dev”, which are not inherited by son processes, leaving a mess in the OpenCL library’s internal data-structures!

Suggesting as a solution either:
[ul] clFork()[/ul]
to be called by the son-process; and/or
[ul] clCleanup()[/ul]
to be called by the parent-process once it no longer needs to use the OpenCL library.