Можете ли вы начать программирование OpenCL без загрузки SDK?

Я пытаюсь получить программу, которая будет работать как на ATI, так и на NVidia, и поэтому я хочу избежать использования SDK. Можно ли сделать это без SDK, используя только VS2010 и Windows (XP или 7)?

Если да, то как я могу настроить конфигурацию VS2010 Linker, чтобы он работал?

Ответ 1

Строго говоря, SDK не требуется. На самом деле SDK не требуется, так как SDI NVIDIA и AMD/ATI связывают код с их средами и, в свою очередь, своим оборудованием. Что вам нужно:

1) Графический процессор, который будет запускать код OpenCL. Смотрите этот вопрос: Список совместимого с OpenCl CPU/графического процессора

2) Библиотека OpenCL (libOpenCL.so в Linux); это обычно включается и устанавливается вместе с графическим драйвером, который может быть загружен из AMD или NVIDIA.

3) Файлы заголовков OpenCL. Они могут быть получены из Khronos.org, но включены во все SDK OpenCL, о которых я знаю. В системе Linux они обычно входят в каталог /usr/include/CL

NVIDIA и AMD SDK предоставляют ряд утилит и оболочек, которые упрощают использование OpenCL API, но они не требуются для написания кода OpenCL или для вызова API. Эти обертки и утилиты не обходятся. Если вы заинтересованы в написании портативного кода, придерживайтесь спецификации OpenCL, также доступной на Khronos.org.

Чтобы написать код, все, что вам нужно сделать, это включить opencl.h в вашу хост-программу, а затем сделать вызовы API, необходимые для настройки среды OpenCL и запустить вашу программу OpenCL. Кроме того, не забудьте связать библиотеку OpenCL (дайте gcc флаг -lOpenCL под Linux).

Ответ 2

OpenCL - это стандарт. Он определяет только условные обозначения. Чтобы использовать его, вам нужен драйвер для вашей графической карты. Такие драйверы предоставляют NVidia, AMD (ATI) и Apple. Вам определенно нужен SDK.

Ответ 3

@virtuallinux ссылается на правильный ответ: если вы беспокоитесь о том, что случайно используете некоторые расширения для конкретного поставщика, получите Khronos SDK.