Информация об изменениях

Сообщение Re[14]: За счет чего выстреливают языки? от 16.07.2015 12:48

Изменено 16.07.2015 13:09 Evgeny.Panasyuk

Здравствуйте, BulatZiganshin, Вы писали:

_>>О, если у тебя есть доступ к icc, то можешь сравнить на нём разницу между вариант со включенной векторизацией и выключенной на таком http://rsdn.ru/forum/flame.comp/6072279
Автор: alex_public
Дата: 09.06.15
(count=500, width=1920, height=1080) тесте? А то у меня gcc выдаёт на haswell xeon ускорение всего где-то в 3 раза, что как-то не очень для AVX2...

BZ>вот-вот. ты хоть знаешь, сколько сложений за такт может выполнить этот хасвел?

В соответствии с Intel® Intrinsics Guide у _mm256_add_epi32 для Haswell Throughput=0.5. В одном из других интеловских документов:

Throughput — The number of clock cycles required to wait before the issue ports are free to accept the same instruction again. For many instructions, the throughput of an instruction can be significantly less than its latency.

То есть при нормальном interleaving, без лишних зависимостей по данных, за такт можно выполнить две _mm256_add_epi32 на одном ядре, то есть 16 32-х битных сложений.
Re[14]: За счет чего выстреливают языки?
Здравствуйте, BulatZiganshin, Вы писали:

_>>О, если у тебя есть доступ к icc, то можешь сравнить на нём разницу между вариант со включенной векторизацией и выключенной на таком http://rsdn.ru/forum/flame.comp/6072279
Автор: alex_public
Дата: 09.06.15
(count=500, width=1920, height=1080) тесте? А то у меня gcc выдаёт на haswell xeon ускорение всего где-то в 3 раза, что как-то не очень для AVX2...

BZ>вот-вот. ты хоть знаешь, сколько сложений за такт может выполнить этот хасвел?

В соответствии с Intel® Intrinsics Guide у _mm256_add_epi32 для Haswell Throughput=0.5. В одном из других интеловских документов:

Throughput — The number of clock cycles required to wait before the issue ports are free to accept the same instruction again. For many instructions, the throughput of an instruction can be significantly less than its latency.

То есть при нормальном interleaving, без лишних зависимостей по данным, за такт можно выполнить две _mm256_add_epi32 на одном ядре, то есть 16 32-х битных сложений.