Здравствуйте, alex_public, Вы писали:
BZ>>вот-вот. ты хоть знаешь, сколько сложений за такт может выполнить этот хасвел? или думаешь, что раз avx2 то всё должно быть тупо в 8 раз быстрей?
_>Я бы сказал раз в 6. Т.е. само сложение именно что в 8 раз быстрее,
за такт хасвел может выполнить 4 скалярных сложения или 2 simd плюс два скалярных
_>но есть накладные расходы на загрузку и выгрузку данных.
за такт хасвел может выполнить 2 загрузки, причём любого размера — хоть 4 байта, хоть 32. плюс ещё есть куча ньюансов. в результате скорость загрузки ограничивает производительность скалярного, а не векторного кода, как ты думал. а точнее, её ограничивает то что за такт можно выполнить лишь 4 макрооперации (load, add или load+add), причём не более двух из них могут использовать загрузку. в векторном же как раз всё очень просто — лепим две load+add каждый такт, store совершенно бесплатен, 1 такт уходит на cmp+blend