[x]
Вход
Amazon
AMD
ATI
brute force
bruteforce
cloud
CUDA
GPGPU
gpgpu.ru
GPU Gems
Intel
Larrabee
Linpack
MapReduce
MD5 crack
Nexus
NVidia
NVidia 8800
NVidia CUDA
NVidia G200
NVidia GTX280
NVidia Nexus
OpenCL
Parallel Nsight
signal processing
sparse matrices
Stream SDK
VISPL
VMWare
web
ВМиК МГУ
МГУ
Москва
Т-Платформы
Физфак МГУ
бенчмарки
блогосфера
вычисления
конкурсы
курсы
новости сайта
обработка изображений
подбор паролей
поиск
программирование GPU
работа
разное
сортировка
фильтрация трафика
численные методы
Navigation
Cвежие комментарии
-
1 week 1 day ago
-
1 week 2 days ago
-
1 week 2 days ago
-
1 week 2 days ago
-
1 week 2 days ago
-
1 week 2 days ago
-
1 week 2 days ago
-
1 week 5 days ago
-
3 weeks 4 days ago
-
3 weeks 6 days ago
Новое на форуме
Популярно
- Как начать с самого начала работу с CUDA (33,849)
- Форумы NVidia CUDA: обзор за май (31,831)
- GPGPU и видеокарты AMD (18,187)
- NVidia GTX 280, Tesla T10P (15,759)
- SGEMM на видеокарте и CPU, серия 6 (14,895)
Думаю, что тут нельзя ничего "подправить", чтобы стало эффективно. Тут не-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, конфликты банков второго порядка приобритете -- к бабке не ходи.