Доброго времени суток!
Уже этот пост писал, но ошибся веткой форума.
Прошу помочь.
Компиляция программы не проходит из-за ошибок типа "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", и как её решить?
А на последней строчке нет слэша - это нормально?
Да, слэш нужен для продолжения макроса на другой строке. Без него нужно писать всё в одну строчку, что не так читабельно
Pecho
> "identifier is undefined in device code"
Какой именно identifier не определен?
Для строчки "ke8(cx->ks, 0);" не определены идентификаторы "t_fl", "t_rc", "t_fl"
скрин - это архивчек со скриншотом, который наглядно всё иллюстрирует. Большая просьба посмотреть
Тема в архиве.