Почему exe CUDA некорректно работают на другом компьютере?
Пишу программу в VS2010 на компьютере с GeForce 8400gs. На нём считает правильно с большим количеством блоков и нитей (сверяю с результатом CPU).
Далее, exe c dll переношу на другие компьютеры с видеокартами GTX 650 и 8800, однако там выдаёт неверный результат при большом количестве нитей и блоков. При этом с одной нитью и одним блоком считает верно.
Эврика! Я не обнулял переменные в видеокарте! Странно, что разные карты реагируют на это по-разному. Ещё необычней то, что после cudaFree(dev_r); при следующем запуске переменные сохраняют своё значение.
Ничего удевительного в этом нет, free всего лишь сообщает, что блок памяти больше не используется и его может захватить любой другой аллокатор. Обнуление, если оно требуется должен производить сам программист. Это так сказать базовая основа С\С++