Вопрос

У меня трудное время настроило эксперимент, в котором я выделяю память с CUDA на устройстве, возьмите этот указатель на память на устройстве, используйте его в OpenCL и вернуть результаты. Я хочу посмотреть, возможно ли это. У меня было трудное время, чтобы заставить проект Куда на работу, поэтому я только что использовал проект шаблона NVIDIA в их SDK. В Makefile я добавил -lopencl в секции libs об общем.mk. Все в порядке, когда я делаю это, но когда я добавляю #include <CL/cl.h> Для Template.CU Так что я могу начать делать вызовы OpenCL, я получаю более 100 ошибок. Все они выглядят похожи на это, но с разными именами функций в конце:

/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include/xmmintrin.h(334): Ошибка: идентификатор "__buittin_ia32_cmpeqps" не определен

Мне трудно выяснить, почему. Пожалуйста, помоги, если можешь. Кроме того, если есть более простым способом настроить проект, который сможет позвонить в CUDA и OpenCL APIS, дайте мне знать.

Это было полезно?

Решение

Я действительно не работал с Куда, поэтому я не знаю, насколько полезно мой ответ.

От того, что я понимаю, вы пытаетесь использовать OpenCL непосредственно с вашего HostCode Cuda, который, если я помню правильно скомпилированным с помощью некоторого компилятора из NVIDIA вместо стандартных GCC. Таким образом, проблема, вероятно, в том, что этот компилятор не реализует необходимые сочинения для работы с упомянутыми заголовками. Посмотрите здесь для аналогичной проблемы, и это решение:http://forums.nvidia.com/lofversion/index.php?t88573.html.

Похоже, вам нужно поставить все, что нуждается в API OpenCL в другой (некуда) компиляционный блок, чтобы он был составлен компилятором Novidia.

Однако я бы не рассчитывал на эту работу (так как буферы OpenCL не просто указатели на память, но должны содержать некоторые метаинформации), просто потому, что нет никакой настоящей причины, по которой она должна работать, и если она не может быть гарантии, что она продолжается сделать это.

То, что вы можете попробовать, если вы действительно хотите использовать OpenGL для Interop, поскольку оба OpenCL и CUDA имеют расширения для создания буферов из буферов OpenGL.

Однако почему вам нужно сделать это? Что за то, что удерживает вас с использованием краткости реализации Apple, поскольку IIRC это открытый источник и большинство из них (детали OpenCL) должны быть независимыми платформой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top