Ответ 1
1) Программирование графического процессора Smartphone и программирование другого графического процессора (Nvidia GeForce 9, например) равны?
Не всегда. Например, в зависимости от того, какие API-интерфейсы и аппаратная платформа вы используете, некоторые мобильные устройства позволяют вам разработать точно такую же программу, как и для настольных графических процессоров.
Например, если вы выполняете программу CUDA на устройствах Tegra K1/X1, это будет почти так же, как и на GeForce 9.
Но если вы используете OpenCL, вам нужно быть осторожным. Некоторые мобильные устройства поддерживают только OpenCL Embedded Profile, что означает, что функции ограничены по сравнению с настольным графическим процессором. Даже если некоторые мобильные устройства поддерживают полный профиль OpenCL, у вас все еще меньше ресурсов для работы, поэтому для адаптации к мобильным платформам все еще необходимо изменить программу.
2) Я стадо о вычислении или графическом программировании для GPU: что разница? Являются ли они равными?
Графическое программирование больше фокусируется на графическом рендеринге. Цель состоит в том, чтобы нарисовать что-то на экране. Основными API-интерфейсами, которые вам понадобятся для телефона, будет OpenGL ES для Android или Metal for iOS или DX для Windows.
Вычисление для GPU означает, что вы хотите завершить некоторые задачи, не связанные с графическим рендерингом, вместо этого вам нужно вычислить какое-то уравнение или вычислить некоторые значения из входных чисел. Например, вы можете захотеть отфильтровать изображение или обработать некоторое видео и так далее. Основными API для вычисления являются OpenCL, CUDA и Metal.
3) Я уже настроил Eclipse для разработки приложений для Android: что еще инструменты, которые мне нужны?
Конечно, вам нужен Android NDK. Вам нужны библиотеки OpenCL или SDK для вашего мобильного устройства.
4) Программирование на смартфоне GPU (для Android) не зависит от устройства? Это' s то же самое для Samsung S4, LG G3 и других устройств Android?
Конечно, возможности устройства имеют огромную разницу в том, что вы можете сделать. Основное отличие в чипсете, используемом в телефоне. Это определит, какой SDK вы должны использовать, а аппаратные функции будут совсем другими.
Еще одна вещь, которую следует отметить, заключается в том, что программирование GPU обычно не переносится по производительности из-за огромной разницы в оборудовании. Поэтому очень хорошо оптимизированный исходный код на одном телефоне может оказаться не лучшим на другом телефоне.
5) Какая библиотека мне нужна? Я стадо о OpenCV и пакете Tegra от Nvidia.
OpenCV - библиотека компьютерного зрения. Нужно ли это вам или нет, зависит от того, какие типы алгоритмов вы работаете. Если ваши приложения сильно зависят от некоторых алгоритмов обработки изображений и компьютерного зрения, вы можете найти полезную информацию OepnCV. Но определенно вы всегда можете начать с ваших собственных простых библиотек.
Tegra NVPack ничего особенного. Это всего лишь пакет программного обеспечения /SDK, содержащий Android SDK, NDK, IDE и инструменты, а также SDK NVidia. Вы всегда можете настроить свою собственную среду, установив отдельные SDK и инструменты. Но если вы разрабатываете платформы NVidia, вам может быть проще начать с NVPack.