[x]
Вход
.NET
AMD
ATI
BLAS
bruteforce
brute force
CUDA
GPGPU
gpgpu.ru
GPU Gems
Larrabee
MapReduce
MD5 crack
N-body
Nexus
NVidia
NVidia 8800
NVidia CUDA
NVidia G200
NVidia GTX280
NVidia Nexus
NVidia Tesla
OpenCL
search
signal processing
Sort
sparse matrices
Stream SDK
VISPL
VMWare
web
ВМиК МГУ
Москва
администрирование сайта
бенчмарки
блогосфера
вычисления
конкурсы
курсы
новости сайта
обработка изображений
подбор паролей
поиск
презентации
программирование GPU
работа
разное
сортировка
фильтрация трафика
численные методы
Navigation
Cвежие комментарии
-
1 week 4 days ago
-
3 weeks 1 day ago
-
3 weeks 2 days ago
-
3 weeks 2 days ago
-
3 weeks 2 days ago
-
3 weeks 5 days ago
-
4 weeks 3 days ago
-
4 weeks 6 days ago
-
5 weeks 1 day ago
-
5 weeks 1 day ago
Новое на форуме
Популярно
- Форумы NVidia CUDA: обзор за май (15,640)
- Как начать с самого начала работу с CUDA (13,083)
- GPGPU и видеокарты AMD (11,170)
- NVidia GTX 280, Tesla T10P (10,146)
- SGEMM на видеокарте и CPU, серия 6 (9,813)
Думаю, что тут нельзя ничего "подправить", чтобы стало эффективно. Тут не-coalescing чтение из глобальной, потому что не последовательные слова читаются из памяти, плюс heavy-branching, убивающий производительность в разы.
Предлагаю изменить порядок загрузки данных нитями. Сделать, чтобы нить читала блок 32x32, а не 18x18. То есть чтобы каждая нить из блока 16x16 грузила 4 значения.
1 1 2 2 3 3 4 4 ... 16 16
1 1 2 2 3 3 4 4 ... 16 16
17 17 18 18 ...
17 17 18 18 ...
...
Тут не нужно if'ов и можно сделать coalescing чтение. Не знаю, правда, как это усложнит обработку.
При этом как Вы собираетесь использовать эту шаред-память тоже интересно, потому что при блоке 18x18, конфликты банков второго порядка приобритете -- к бабке не ходи.