тебе же нужно кросс-платформенно, выбирай Boost.Compute, допиливай для Metal. Пинай, коммить
Там тогда нужно свои макросы для синхронизации потоков, записи в local/shared mem и прочая внутренняя шелуха — обёртку над OpenCL и Metal. Наверняка работа с текстурами там по-разному делается, атомики другие. Короче надо будет делать OpenCL поверх Metal. Это боль.