2013-08-19 5 views
-1

Я пишу код OpenCL на Windows7 + Cygwin + AMD APP (скачан несколько недель назад). Мой код работает, но - некоторые из ядра доступных функций отсутствуют файлы заголовков, например .:AMD APP содержит файлы, отсутствующие в функциях и типах, доступных в ядрах

void barrier(cl_mem_fence_flags flags) 

event_t async_work_group_copy(
    __local gentype *dst, 
    const __global gentype *src, 
    size_t num_gentypes, 
    event_t event) 

, а также тип event_t данных. Как я уже сказал, это не предотвращает компиляцию, поскольку ядра не компилируются моим компилятором C, а библиотекой OpenCL. Почему это так, и что мне с этим делать?

+1

Поскольку эти функции доступны только в коде ядра, почему вы ожидаете найти их в файлах заголовков, используемых хост-кодом? Код не является стандартным C, поэтому компилятор хоста не сможет скомпилировать код с использованием такого заголовка. – chippies

+0

@chippies: Я надеюсь найти их, потому что я нахожу все остальное; и поскольку в среде IDE требуется «предварительная компиляция», чтобы лучше проверить синтаксис и семантику вызова; и потому что сигнатуры функций необходимы для автоматического завершения и намека; и т. д. – einpoklum

+0

Возможно, вам потребуется загрузить плагин из AMD для вашей IDE, чтобы правильно обрабатывать эти функции для кода ядра OpenCL (нет гарантии, что есть плагин). Поскольку вы используете AMD APP SDK, вы также можете редактировать свои ядра в своем KernelAnalyzer, который предоставляет эти функции. – chippies

ответ

2

Резюмируя:

ОП искал файлы заголовков, которые определяют функции OpenCL C, используемые внутри ядра, поскольку эти файлы заголовков могут быть использованы Иды для подсветку кода, автоматическое завершение, подбирая на наличие синтаксических ошибок и т. д. Это не является частью стандарта OpenCL, так что тот факт, что AMD APP SDK предоставил некоторые функции в файлах заголовков, просто удачлив для OP.

Ответ:

Правильный способ для решения этого требования IDE либо через специально построенном OpenCL C IDE или с помощью плагинов к вашей любимой IDE. Я не знаю никаких хороших плагинов, поэтому все, что осталось, это специальные IDE. Для графических процессоров AMD и процессоров вы можете использовать KernelAnalyzer, который входит в состав пакета AMD APP SDK. Однако это не работает на системах без AMD GPU (отсутствует конкретная .dll). В таких случаях вы можете попробовать OpenCL Studio. Обратите внимание, что это не работает на графических процессорах AMD из-за несовместимости с драйверами Catalyst после 11.9. Наконец, Notepad ++ имеет пользовательский языковой файл для OpenCL 1.0 (хотя и не пробовал его).