Автор Тема: ping  (Прочитано 6480 раз)

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
ping
« : Ноябрь 12, 2014, 11:25:13 am »
Есть тут кто живой?...  :)

dizer

  • Jr. Member
  • **
  • Сообщений: 80
    • Просмотр профиля
Re: ping
« Ответ #1 : Ноябрь 12, 2014, 01:06:39 pm »
Черт.. Сергей.. вот честно только что увидел - аналогичный пост во флуде...  :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: ping
« Ответ #2 : Ноябрь 12, 2014, 07:13:48 pm »
Ну, как бы то есть... Есть ;-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: ping
« Ответ #3 : Ноябрь 13, 2014, 04:28:13 am »
чо стучишься в дверь моя? видишь, дома нет никто...
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

pygubanov

  • Newbie
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: ping
« Ответ #4 : Ноябрь 13, 2014, 09:22:32 am »
Просто новая цива вышла, вот и нет ни кого

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: ping
« Ответ #5 : Ноябрь 13, 2014, 11:26:29 am »
Кто нибудь префетчем памяти пользовался для оптимизации быстродействия?

На x64 это:

#include <xmmintrin.h>

_mm_prefetch(pointer, flags)

Я попробовал -- охрененно термоядерная штукенция. Загрузка данных из DDR3 1600 в кэш процессора отнимает примерно 80 наносекунд. Это около 300 тактов ничегонеделания. Если знаешь наперёд какие данные понадобятся в будущем, то заранее говоришь процу чтоб он загрузил их в кэш. Программа реально в несколько раз быстрее начинает работать.
« Последнее редактирование: Ноябрь 13, 2014, 11:28:10 am от Губанов Сергей Юрьевич »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: ping
« Ответ #6 : Ноябрь 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 свои аргументы - но это дикий геморрой, и обычно игра не стоит свеч).
Y = λf.(λx.f (x x)) (λx.f (x x))

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: ping
« Ответ #7 : Ноябрь 13, 2014, 11:58:20 am »
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.


А hugepages memory кто-нибудь баловался? Тоже атомный термояд! На той железяке что у нас, размещение данных в hugepages ускоряет доступ к памяти в 2 раза по сравнению с размещением данных в обычных страницах памяти!

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: ping
« Ответ #8 : Ноябрь 13, 2014, 12:51:34 pm »
А у нас программно-аппаратный комплекс. Пишется под конкретную железяку. И, кстати, она не x64.

Ужель x86 обычное? Или какой-нибудь Зеон Фай? ;-)
Y = λf.(λx.f (x x)) (λx.f (x x))

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: ping
« Ответ #9 : Ноябрь 13, 2014, 02:28:11 pm »
Она 64 разрядная, но другой архитектуры http://www.tilera.com/

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: ping
« Ответ #10 : Ноябрь 13, 2014, 02:44:50 pm »
Она 64 разрядная, но другой архитектуры http://www.tilera.com/

А всякие _mm_prefetch это ж чисто интеловские штуки. Или они там стараются по builtins'ами быть совместимыми? Ну и вообще, на разных архитектурах это все может дать совершенно разный эффект. Масса нюансов же.
Y = λf.(λx.f (x x)) (λx.f (x x))

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Re: ping
« Ответ #11 : Ноябрь 14, 2014, 11:02:54 am »
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: ping
« Ответ #12 : Ноябрь 14, 2014, 11:39:09 am »
Там аналогичная функция тоже есть, но называется по другому и другие аргументы имеет.
Ещё там чуть большая свобода выбора для программиста как именно память кэшировать.
Узкоспециализированное железо вообще няшно. То есть не предназначенное для удовлетворения любой прихоти домашнего пользователя. Говорят в приставках так там вообще можно четко говорить в какую память что класть (в быструю (работающую на частоте процессора) или же в медленную).
Y = λf.(λx.f (x x)) (λx.f (x x))