Я пишу код 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. Почему это так, и что мне с этим делать?
Поскольку эти функции доступны только в коде ядра, почему вы ожидаете найти их в файлах заголовков, используемых хост-кодом? Код не является стандартным C, поэтому компилятор хоста не сможет скомпилировать код с использованием такого заголовка. – chippies
@chippies: Я надеюсь найти их, потому что я нахожу все остальное; и поскольку в среде IDE требуется «предварительная компиляция», чтобы лучше проверить синтаксис и семантику вызова; и потому что сигнатуры функций необходимы для автоматического завершения и намека; и т. д. – einpoklum
Возможно, вам потребуется загрузить плагин из AMD для вашей IDE, чтобы правильно обрабатывать эти функции для кода ядра OpenCL (нет гарантии, что есть плагин). Поскольку вы используете AMD APP SDK, вы также можете редактировать свои ядра в своем KernelAnalyzer, который предоставляет эти функции. – chippies