[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 day 17 hours ago
-
4 days 11 hours ago
-
2 weeks 2 days ago
-
3 weeks 1 day ago
-
4 weeks 7 hours ago
-
4 weeks 2 days ago
-
5 weeks 16 hours ago
-
5 weeks 1 day ago
-
6 weeks 5 hours ago
-
6 weeks 1 day ago
Новое на форуме
Популярно
- Как начать с самого начала работу с CUDA (37,331)
- Форумы NVidia CUDA: обзор за май (34,195)
- GPGPU и видеокарты AMD (19,177)
- NVidia GTX 280, Tesla T10P (16,464)
- SGEMM на видеокарте и CPU, серия 6 (15,541)
Само по себе сравнение цифирок, особенно если FLOPS-ы не оцениваются очень точно (как оно для матриц) - дурное дело.
Сравнивать, конечно, нужно времена реального исполнения - а для этого придется хорошо спрограммировать SSE4-версию задачи, что при наличии GPU-версии, которая гарантированно быстрее - тоже глупое занятие. Поэтому моя придирка к цифрам - это именно придирка (ведь с VAX вы не стали сравнивать :).
Чтобы эту тему закрыть: в своей оценке ("30 раз") вы не учитываете то, что у современных 4-ядерников по два SSE-блока на ядро (в отличие от Athlon) т.е. они будут еще вдвое быстрее. В реальности для Opteron у меня получалось 3.5 операции на такт (из теоретических четырех), а у Penryn - 7.2 операции (из 8), но реальность была очень простой. А с оценкой "в 15 раз" я согласен, не о чем тут спорить.
Куда интереснее второй вопрос - почему на GPU (гораздо более примитивной архитектуре в расчете на одно вычислительное ядро) получается 98%-эффективность от пиковой, а на CPU - только 50. Это либо креативность подсчета FLOPS-ов, тогда надо пересчитывать эффективность, либо же какие-то более фундаментальные ограничения.
Я вижу, что у GPU (в расчете на всю машинку в целом, а не на отдельный SP) есть такие существенные отличия:
а) Гораздо большая bandwidth памяти. При этом latency несколько (но не на порядки) хуже, но latency успешно прячется оборудованием если исполняемых thread blocks достаточно много. Т.е. процентов 90% от bandwidth удается вполне успешно добыть.
б) Гораздо больше (опять, в расчете на ящик) быстрой памяти: регистров и shared mem. Т.е. на GTX280 имеем 2 мегабайта регистров и мегабайт shared, это много больше чем L1-кэш у CPU.
в) архитектурно "кэш" (точнее, быстрая память) гораздо прямолинейнее - никто не заботится о когерентности (такой задачи просто нет), никто не заботится о prefetch (кроме текстурных кэшей), нет никаких 32-байтных cache lines. Т.е. вся трудность, но очень легко понимаемая - это coalesced access, а никакой умной логики по эмуляции быстрой быстрой IBM XT нету.
Вот собственно самое интересное - это какой фактор играет наиболее существенную роль в том, что CPU показывает свои "50% от теоретической/пиковой" производительности. Может быть просто не доходили руки дооптимизировать это место в той же степени, в какой линейную алгебру оптимизируют?