?

Log in

No account? Create an account

Previous Entry | Next Entry

Arbob Ahmad and Henry DeYoung


http://www.google.com/search?q=Cache%20Performance%20of%20Lazy%20Functional%20Programs%20on%20Current%20Hardware

Cache Performance of Lazy Functional Programs on Current Hardware


Известно, что рантаймы функциональных языков зачастуют имеют отличные от императивных паттерны доступа к данным в памяти. А современные процессоры оптимизируются под паттерны поведения обычных программ, написанных на более распространённых языках.

Существует несколько исследований, показывающих, где и как функциональные языки неоптимально используют ресурсы процессора. Например, в исследовании 2002 года Nethercote и Mycroft исследовали поведение кэша при выполнении нескольких хаскель-программ, и нашли, что ожидания процессора при отсутствии данных в L2 кэше (cache miss stalls) составляли до 60% задержек при работе программ.

Товарищи из Carnegie Mellon решили ещё раз воспроизвести результаты теста 2002 года. Хардвер за десять лет поменялся довольно сильно, и хотелось определить, так ли пессимистично хаскель работает с кэшем второго уровня.

Использовали валграйндовый Cachegrind и Perf, в частности.

Короче, опредилили, что на тех же данных процессор теперь практически не ждёт на миссах в L2. В 2002 году кэша было 256k, а в 2009 году кэша было уже 4 мега.

К сожалению, они ещё внезапно нашли, что дефольтный размер для нового поколения (nursery) в GC хаскеля составляел 256 kb. То есть, старые тесты 2002 года наверняка упирались именно в то, что дефолтные значения были слишком большими для имеющегося размера кэша. В 2009 году этот же размер оказался более приемлемым.

На мой взгляд, эта находка практически полностью переводит обе статьи, и старую и новую, из подобия науки в разряд тыкания палочкой. Авторы старого исследования не заметили, что упираются в nursery, а авторы нового даже не отметили роль влияния GC-опций GHC на скорость программ. Кроме того, за семь лет изменился и характер нагрузки, а считалось всё на тех же тестах с почти теми же параметрами. Ещё одним соображением являются не абсолютные цифры неоптимальностей в хаскель-программах, а сравнения с эффективностью обычных императивных программ, написанных, скажем, на C или C++. Как поменялась относительная эффективность за эти годы? Нет ответа.
As a result, we conclude that the change in L2 cache size is responsible for most of the performance improvement.
Перевожу: «увеличили кэш, стало быстрее работать». Вау.

И всё же, даже до такого уровня исследования абсолютному большинству российских студентов пилить и пилить.

Tags:

Comments

( 15 comments — Leave a comment )
ex_juan_gan
Sep. 8th, 2012 11:15 pm (UTC)
Я в этих технических вопросах, конечно, чайник, но с детства уверен - самый лучший способ повышения скорости программ - купить более быстрый компьютер.
lionet
Sep. 8th, 2012 11:25 pm (UTC)
Они тоже пришли к похожему выводу, по всей видимости.
maxim
Sep. 9th, 2012 07:43 am (UTC)
А я думаю наоборот, лучше купить компьютер послабее и заставить программу приемлемо работать на нем, на быстрых она уж точно будет работать быстрее быстрой быстроты.
(Deleted comment)
izard
Sep. 9th, 2012 09:04 am (UTC)
В каждом "токе" CPI все еще уменьшается на ~10%. То есть даже если не считать "тики", за последние поколения (мером, нехалем,сэнди бридж, хасвелл), то есть 6 лет, уже на спекинте есть +50% на одной частоте.
w00dy
Sep. 9th, 2012 09:15 am (UTC)
ещё учтите что кроме процессоров есть память. Если в 2000 году на серверах было 2GB памяти на всех, то сейчас 16GB это обычный сервер.
ex_juan_gan
Sep. 9th, 2012 04:17 pm (UTC)
Я не имел в виду последовательные.
_slw
Sep. 9th, 2012 08:18 am (UTC)
а зачем самоочевидные вещи называть исследованием?
coctic
Sep. 9th, 2012 02:04 pm (UTC)
Потому что иногда исследование показывает, что на самом деле все не так просто. В данном случае - увы.
helvegr
Sep. 9th, 2012 11:55 am (UTC)
Проглядел наискосок статью Nethercote и Mycroft - влияние варьирования размера nursery там рассмотрено.
lionet
Sep. 9th, 2012 04:02 pm (UTC)
Посмотрел тоже, да. Значит, минусы новой статье, что они неправильно интерпретировали результаты старой.
max630
Sep. 9th, 2012 09:53 pm (UTC)
Влияние GC на так уж очевидно тут. Если живые данные не влазят в кеш - как их ни дели на поколения, всё равно будет плохо.
vit_r
Sep. 10th, 2012 09:20 am (UTC)
Все разговоры с компьютерной наукой наводят на мысль о том, что те, кто могут думать, создают что-то полезное.

Потом, результат научной работы - это статья или выступление на конференции. Статья есть.
zyxman
Sep. 10th, 2012 03:29 pm (UTC)
> Все разговоры с компьютерной наукой наводят на мысль о том, что те, кто могут думать, создают что-то полезное.

Не все. Некоторый нехилый процент способных думать, ввиду кривости системы образования и ввиду кривости законов в некоторых частях суши, занимаются совсем другими вещами и часто даже и не знают, что могут создать что-то полезное :(
vit_r
Sep. 10th, 2012 06:03 pm (UTC)
Над этими есть профессора.

zyxman
Sep. 10th, 2012 03:26 pm (UTC)
"мать мать мать!", привычно отозвалось эхо.
Блин, это же именно то, чего я собираюсь, но никак не соберусь делать в lambda census.
( 15 comments — Leave a comment )

Profile

lionet
Lev Walkin
Website

Latest Month

December 2016
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
Powered by LiveJournal.com
Designed by yoksel