Reply to comment

Само по себе сравнение цифирок, особенно если 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% от теоретической/пиковой" производительности. Может быть просто не доходили руки дооптимизировать это место в той же степени, в какой линейную алгебру оптимизируют?

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <table> <td> <tr> <th>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Images can be added to this post.

More information about formatting options

Copyright © 2008-2011 Alex Tutubalin