Oberon space

General Category => Общий раздел => Тема начата: Губанов Сергей Юрьевич от Ноябрь 12, 2014, 11:25:13 am

Название: ping
Отправлено: Губанов Сергей Юрьевич от Ноябрь 12, 2014, 11:25:13 am
Есть тут кто живой?...  :)
Название: Re: ping
Отправлено: dizer от Ноябрь 12, 2014, 01:06:39 pm
Черт.. Сергей.. вот честно только что увидел - аналогичный пост во флуде...  :)
Название: Re: ping
Отправлено: valexey_u от Ноябрь 12, 2014, 07:13:48 pm
Ну, как бы то есть... Есть ;-)
Название: Re: ping
Отправлено: Geniepro от Ноябрь 13, 2014, 04:28:13 am
чо стучишься в дверь моя? видишь, дома нет никто...
Название: Re: ping
Отправлено: pygubanov от Ноябрь 13, 2014, 09:22:32 am
Просто новая цива вышла, вот и нет ни кого
Название: Re: ping
Отправлено: Губанов Сергей Юрьевич от Ноябрь 13, 2014, 11:26:29 am
Кто нибудь префетчем памяти пользовался для оптимизации быстродействия?

На x64 это:

#include <xmmintrin.h>

_mm_prefetch(pointer, flags)

Я попробовал -- охрененно термоядерная штукенция. Загрузка данных из DDR3 1600 в кэш процессора отнимает примерно 80 наносекунд. Это около 300 тактов ничегонеделания. Если знаешь наперёд какие данные понадобятся в будущем, то заранее говоришь процу чтоб он загрузил их в кэш. Программа реально в несколько раз быстрее начинает работать.
Название: Re: ping
Отправлено: valexey_u от Ноябрь 13, 2014, 11:42:04 am
Кто нибудь префетчем памяти пользовался для оптимизации быстродействия?

На x64 это:

#include <xmmintrin.h>

_mm_prefetch(pointer, flags)

Я попробовал -- охрененно термоядерная штукенция. Загрузка данных из DDR3 1600 в кэш процессора отнимает примерно 80 наносекунд. Это около 300 тактов ничегонеделания. Если знаешь наперёд какие данные понадобятся в будущем, то заранее говоришь процу чтоб он загрузил их в кэш. Программа реально в несколько раз быстрее начинает работать.

Вот тут вроде подробно рассказано что, как и зачем: http://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory-6-7.html

Но этот префетч он каждый раз зависит от конкретной модели CPU, то есть код да, может получиться быстрым, но только для одной конкретной модели. То есть это хорошо когда знаешь на каком железе будут гонять твою программу, а когда не знаешь - это довольно бесполезно (ну или по CPUID смотреть и делать под каждый CPU свои аргументы - но это дикий геморрой, и обычно игра не стоит свеч).
Название: Re: ping
Отправлено: Губанов Сергей Юрьевич от Ноябрь 13, 2014, 11:58:20 am
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.


А hugepages memory кто-нибудь баловался? Тоже атомный термояд! На той железяке что у нас, размещение данных в hugepages ускоряет доступ к памяти в 2 раза по сравнению с размещением данных в обычных страницах памяти!
Название: Re: ping
Отправлено: valexey_u от Ноябрь 13, 2014, 12:51:34 pm
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.

Ужель x86 обычное? Или какой-нибудь Зеон Фай? ;-)
Название: Re: ping
Отправлено: Губанов Сергей Юрьевич от Ноябрь 13, 2014, 02:28:11 pm
Она 64 разрядная, но другой архитектуры http://www.tilera.com/
Название: Re: ping
Отправлено: valexey_u от Ноябрь 13, 2014, 02:44:50 pm
Она 64 разрядная, но другой архитектуры http://www.tilera.com/

А всякие _mm_prefetch это ж чисто интеловские штуки. Или они там стараются по builtins'ами быть совместимыми? Ну и вообще, на разных архитектурах это все может дать совершенно разный эффект. Масса нюансов же.
Название: Re: ping
Отправлено: Губанов Сергей Юрьевич от Ноябрь 14, 2014, 11:02:54 am
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.
Название: Re: ping
Отправлено: valexey_u от Ноябрь 14, 2014, 11:39:09 am
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.
Узкоспециализированное железо вообще няшно. То есть не предназначенное для удовлетворения любой прихоти домашнего пользователя. Говорят в приставках так там вообще можно четко говорить в какую память что класть (в быструю (работающую на частоте процессора) или же в медленную).