Войти
ПрограммированиеФорумОбщее

CUDA. Ошибка при компиляции

#0
13:24, 8 июня 2012

Доброго времени суток!
Уже этот пост писал, но ошибся веткой форума.
Прошу помочь.
Компиляция программы не проходит из-за ошибок типа "identifier is undefined in device code".
Пояснение по программе: есть реализация AES от Брайена Гладмана (Brian Gladman, Worcester, UK), которую я хочу использовать в своей cuda-программе.
Ошибка, мешающая компиляции возникает при использовании макроса в коде Брайена. Например в строчке:

ke8(cx->ks, 0); ke8(cx->ks, 1);

ke8 - это макрос, его код:

#define ke8(k,i) \
{ kef8(k,i); \
    k[8*(i)+12] = ss[4] ^= ls_box(ss[3],0); \
    k[8*(i)+13] = ss[5] ^= ss[4]; \
    k[8*(i)+14] = ss[6] ^= ss[5]; \
    k[8*(i)+15] = ss[7] ^= ss[6]; \
}

Насколько я понял, такая ошибка связана с макросами, и во время компиляции он не определяется cuda-устройством. Хотя, буквально 2-мя строчками выше "ke8(cx->ks, i);" работает без нареканий, а ведь там тоже работает тот же самый макрос
Гугль-поиск решения этой проблемы не дал.
Из-за чего может возникать ошибка "identifier is undefined in device code", и как её решить?

#1
13:55, 8 июня 2012

А на последней строчке нет слэша - это нормально?

#2
14:01, 8 июня 2012

Да, слэш нужен для продолжения макроса на другой строке. Без него нужно писать всё в одну строчку, что не так читабельно

#3
15:19, 8 июня 2012

Pecho
> "identifier is undefined in device code"
Какой именно identifier не определен?

#4
15:31, 8 июня 2012

Для строчки "ke8(cx->ks, 0);" не определены идентификаторы "t_fl", "t_rc", "t_fl"
скрин - это архивчек со скриншотом, который наглядно всё иллюстрирует. Большая просьба посмотреть

ПрограммированиеФорумОбщее

Тема в архиве.