When multiple ICDs are installed, libopencl1 needs to dlopen() them all to find out which one works on the available hardware. If they are dynamically linked, this leads to them sharing a libllvm, which has enough global state that this is likely to error out. (This is a known LLVM bug, https://bugs.llvm.org/show_bug.cgi?id=22952 , but currently has no real fix.) I'm regularly using multiple ICDs (pocl, nvidia-binary, intel-binary) and never had any issues and I do not really like the idea allowing only one ICD installed at once. Afaik we're actually shipping three ICDs in Tubleweed that make use of libllvm: * beignet * pocl * mesa A workaround that is used by the debian packaging team is to statically link all these packages to avoid sharing a libllvm. Imo we should do the same. Any objections ?