Программирование GPU, CUDA или OpenCL?

Я новичок в программировании на GPU. У меня есть ноутбук с картой NVIDIA GeForce GT 640. Я столкнулся с двумя дилеммами, предложения приветствуются.

  • Если я перехожу на CUDA - Ubuntu или Windows. Ясно, что CUDA более подходит для окон, хотя это может быть серьезная проблема для установки на Ubuntu. Я видел некоторые blogposts, которые утверждают, что установили CUDA 5 на Ubuntu 11.10 и Ubuntu 12.04. Однако я не смог заставить их работать. Кроме того, стандартные учебники CUDA предпочитают работать в домене Windows и более или менее молчаливы в отношении установки и работы Unix/Ubuntu.

  • CUDA или OpenCL. Теперь это, вероятно, более сложно, чем мой первый вопрос! Я в основном сталкиваюсь с проектами GPGPU с использованием CUDA/Nvidia, но OpenCL, вероятно, является следующим лучшим вариантом в open source и установка в Ubuntu, вероятно, не будет проблемой, хотя некоторые предложения здесь будут наиболее полезными. Могу ли я принести в жертву любую функциональность, если я пойду за OpenCL и NOT CUDA?

Любая помощь или предложения?

Ответ 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 настолько гибкий, вы сталкиваетесь с большим количеством опций и способов распределения памяти, передачи и т.д. в вашей программе. Поэтому, возможно, он может чувствовать себя более сложным.

Ответ 2

Я думаю, что не очень сложно настроить среду cuda на ubuntu, вы можете попробовать.

Как студент вычислительной архитектуры, я думаю, вам нужно изучить как OpenCL, так и CUDA. И вы должны сначала изучить cuda, потому что CUDA предоставляет больше аппаратных средств и информации о времени выполнения, а аппаратная осведомленность очень важна, когда вы хотите оптимизировать свои графические процессоры.