Ответ 1
-
Если вы используете OpenCL, вы можете легко использовать его как в Windows, так и в Linux, потому что достаточно отображать драйверы для запуска программ OpenCL, и для программирования вам просто нужно будет установить SDK. У CUDA больше требований к конкретным версиям GCC и т.д. Но установить его на Linux тоже не так сложно.
-
В Linux CUDA имеет странные требования, такие как использование GCC 4.6 или 4.7. Если вы используете другую версию GCC, вы больше не сможете ее компилировать. Если вы используете OpenCL, вы можете использовать любой компилятор, потому что вам просто нужно связать с общей библиотекой OpenCL. Таким образом, OpenCL проще настроить, использовать и компилировать. Как только вы скомпилируете программу OpenCL, ее можно запустить на любом оборудовании (если она закодирована для этого), даже если она была скомпилирована с использованием другого бренда OpenCL SDK.
Вы можете писать программы OpenCL, которые будут работать на устройствах Nvidia, AMD и Intel, на графических процессорах, процессорах и ускорителях. Более того, Altera работает над поддержкой OpenCL на FPGA! Если вы используете CUDA, вам придется использовать только графические процессоры Nvidia и повторно написать свой код снова в OpenCL или на другом языке для других платформ. Серьезное ограничение использования CUDA и серьезная трата времени в долгосрочной перспективе.
Я вижу, что кто-то отправил несколько старых ссылок между CUDA и OpenCL, но они старые! Когда эти документы отсутствовали, только AMD правильно поддерживала OpenCL. С 2013 года OpenCL поддерживается ARM, Altera, Intel и т.д., И стал отраслевым стандартом.
Единственным недостатком является то, что, поскольку OpenCL настолько гибкий, вы сталкиваетесь с большим количеством опций и способов распределения памяти, передачи и т.д. в вашей программе. Поэтому, возможно, он может чувствовать себя более сложным.