I am using OpenCL with success on M1, however there is an interesting issue which is that (unless rosetta is used), it appears there is no way to target the CPU. My application uses OpenCL heavily, and normally targets the CPU for some operations and the GPU for others. This pattern does appear to be broken on M1, from what I can tell. If anyone has an explanation of what is going on here I'd love to hear it.