2012-04-07 3 views

ответ

5

Это связано с целевым оборудованием, я думаю. Для поддержки рекурсии требуется несколько аппаратных функций, которых нет у определенных классов устройств OpenCL (т. Е. Графических процессоров). Без них поддержка стека вызовов и разворачивание непрямого кода нецелесообразно. По той же причине NVIDIA не поддерживает рекурсию на всех своих устройствах с поддержкой CUDA.

+0

Talonmies: Рекурсия поддерживается для функций устройства на вычислительной способности 2.x. –

+0

@ashwin: Мне это хорошо известно, поэтому я сказал: «NVIDIA не поддерживает рекурсию на все свои аппаратные средства CUDA». Они поддерживают его на некоторых, то есть Ферми и Кеплере ... – talonmies

3

Его не OpenCL, его аппаратное обеспечение GPU. AMD разработала новую архитектуру набора команд , которая будет поддерживать рекурсию. Графические процессоры имеют большое количество регистров (до 32 К). Итак, будьте осторожны, о чем просить и получить. Push/Pop из 32K регистров, для рекурсивного вызова, не будет быстрым.