Я пишу код cuda c для обработки изображений, например, я создал функцию свопинга (swap blocks of the matrix), но он не работает каждый раз, когда у меня проблема с количеством блоков и количество потоков, когда я обедаю свое ядро.Конфигурация ядра Cuda
Например, если я Tak изображение размером 2048 * 2048 с
threadsPerBlock.x=threadsPerBlock.y=64
и numBlocks.x=numBlocks.y=2048/threadsPerBlock.x
затем swap<<<threadsPerBlock,numBlocks>>>(...)
работает отлично.
Но если я беру изображение размером 2560 * 2160, threadsPerBlock.x=threadsPerBlock.y=64
и numBlocks.x=2560/64
и numBlocks.y=2160/64+1
, у меня есть ошибка. 9 - неверный аргумент конфигурации.
Я использую CUDA 7.5 и GPU с вычислительной способностью 5,0
Да, у меня есть вычисление 5.0, но у меня есть размер измерения размера блока потока (x, y, z): (1024, 1024, 64) Я использую 2Dim проблему, которую я забыл munchen, она работает для размера 2560 * 2160 с размером 256 * 256 размером с первой i, которая может быть передана числом блоков, но это не так. –
@SalahEddine: Вы недооцениваете ограничения размера блока. (Re) прочитал ссылку в моем ответе. Максимальные размеры блока (1024,1024,64), но * общее число * потоков на блок должно быть меньше или равно 1024, т.е. только блоки с 'dim.x * dim.y * dim.z <= 1024' являются законными – talonmies
Thnx много когтей, что было моей проблемой :) –