Я запустил некоторый код CUDA, который обновил массив с плавающей запятой. У меня есть функция-оболочка, подобная той, что обсуждалась в Как я могу скомпилировать код CUDA, а затем связать его с проектом C++? этот вопрос.
Внутри моей функции CUDA я создаю цикл for, подобный этому...
int tid = threadIdx.x;
for(int i=0;i<X;i++)
{
//code here
}
Теперь проблема в том, что если X равно значению 100, все работает нормально, но если X равно 1000000, мой вектор не обновляется (почти как если бы код внутри цикла for не выполнялся)
Теперь внутри функции-оболочки, если я вызываю функцию CUDA в цикле for, она все равно работает нормально (но по какой-то причине значительно медленнее, чем если бы я просто выполнял тот же процесс на ЦП) вот так...
for(int i=0;i<1000000;i++)
{
update<<<NumObjects,1>>>(dev_a, NumObjects);
}
Кто-нибудь знает, почему я могу зацикливаться миллион раз в функции-оболочке, но не просто один раз вызвать функцию «обновления» CUDA, а затем внутри этой функции запустить цикл for из миллиона?