Всем привет)Изучаю CUDA для решения мат задач. Скачал все драйвера и SDK CUDA поставил на ноут. На чем прогаю MS VS 2008 Professional, Win 7 64 bit, GeForce 610M, CUDA 5.0. Написал программу сложения двух векторов. Все нормально работает. Вопрос хочу создать массив для каждой нити, но не могу скомпилировать прогу. Вот исходник
__global__ void func(const int n)
{
int a[n];//int * a = new int[n]; delete[] a;
}
В первом случае вываливается ошибка "Expression must have a constant value". Во втором случае компилируется, но приложение терпит крах во время исполнения. Возникает некая ошибка при распрделении памяти. Это нормально? Читал мануал по CUDA. Таких ограничений не встречал. Этот вопрос задал на официальном сайте форума nVidia. Прошло уже 3 дня, ответа так и нет. Обращаюсь к Вам. Пожалуйста, дайте обоснованный ответ. И если не трудно, запустите у себя этот пример. У Вас возникает эта ошибка? Далее смотрел примеры с исходников там переменную n объявляют следующим образом:
#define n 20
const int n = 20;
Если приписать их, то программа работает нормально. Как-то не хорошо получается! массив, который можно создать на GPU, нужно передавать через канал.