The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Все, что должен знать программист о памяти

24.11.2007 12:56

Ulrich Drepper опубликовал полный текст документа "What every programmer should know about memory" (PDF, 900Кб). Это одна из лучших и подробных (114 страниц) публикаций, в которой затрагиваются различные вопросы взаимодействия ПО с памятью и советы по оптимизации.

Ниже ссылки на текст разбитый на главы, ранее доступный только для подписчиков lwn.net:

  1. "Introduction" - аппаратная организация работы памяти;
  2. "CPU caches" - работа кэшей CPU;
  3. "Virtual memory" - рассказ о виртуальной памяти;
  4. "NUMA systems" - особенности архитектуры NUMA (Non-Uniform Memory Access);
  5. "What programmers can do - cache optimization" - оптимизации связанные с эффективным использованием кэша CPU;
  6. "What programmers can do - multi-threaded optimizations" - оптимизации для многопоточных приложений;
  7. "Memory performance tools" - средства для оценки скорости работы программы с памятью;
  8. "Future technologies" - технологии будущего;
  9. "Appendices and bibliography" - примеры кода и список литературы.


  1. Главная ссылка к новости (http://lwn.net/Articles/259710...)
Лицензия: CC-BY
Тип: Супер интересно ! / Для профессионалов
Ключевые слова: memory, gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (10) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, hardkiller (?), 13:45, 24/11/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мега-интересно. Автор - настоящий джедай.
    эх был бы я девелопером :)
     
  • 1.2, hardkiller (?), 13:56, 24/11/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    (немного поразмыслив) Такие девеловские
    статейки клад для игрописателей. Вот начнут
    игры под линукс писать, эт пипец будет :)
    возможность выжать 100% производительности
    из железа) тогда точно все про венду забудут
     
     
  • 2.3, SunTech (?), 14:18, 24/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Самое удачное приспособление для игр -- это игровая консоль ("приставка"). Почему? Потому что лишь в этом случае аппаратные средства жестко ограничены и ненаращиваемы, поэтому девелоперам ставят задачу вместить как можно более интересную/красивую/прожорливую игру в эти жесткие аппаратные рамки.

    В случае же с PC всегда можно на CD-коробке с тетрисом написать: "Requirements: IBM BlueGene" и никто не будет заниматься какой-бы то ни было оптимизацией.

    Для наглядного примера достаточно вспомнить Sony Play Station -- там были такие игры, аналогов которым по интересности, красоте и скорости не было на PC, а если и были, то с требованиями к железу во много раз превосходящим вычислительные способности SPS.

     

  • 1.6, Kuk (?), 17:49, 24/11/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин развели опять не нужную демагогию, лучше обсудите теоретические вопросы, что из этого можно ещё где пременить, или как всегда только еденицы прочитали эту статью целиком.
     
     
  • 2.7, vad (??), 20:44, 24/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    > Блин развели опять не нужную демагогию, лучше обсудите теоретические вопросы, что из
    > этого можно ещё где пременить, или как всегда только еденицы прочитали эту статью целиком.

    Теоретик? прочитал целиком? ну и как впечатления? на практике будешь применять?

     
  • 2.8, hardkiller (?), 10:11, 25/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле не нужно читать всю охапку  "от корки и до корки"
    чтобы понять что там написано. Не так много задач, где
    могут потребоваться такие оптимизации - это игры,
    обработка видео/аудио. В серверных приложениях, полагаю,
    авторы не дураки и всеми этими фишками пользуются.
    Узкоспециализированные области вроде рассчетов по химии/физике
    думаю даже затрагивать не стоит.
     
     
  • 3.9, Andrew Kolchoogin (?), 14:11, 25/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    > Узкоспециализированные области вроде рассчетов по химии/физике
    > думаю даже затрагивать не стоит.

    А вот и напрасно.
    Был я тут на конференции по High-Performance Computing. Слушал умных дядечек из Саровского инженерного центра (это "открытая" часть кадров ВНИИЭФа - если вы не знаете, что такое ВНИИЭФ, про "узкоспециализированные области вроде расчётов по химии/физике" вам лучше вообще не заикаться). Они приводили великолепную табличку "прожорливости" применяемых в миру алгоритмов. Так вот, наименее прожорливыми оказались всякие там прогнозы погоды, "середнячками" были молекулярная динамика, CAM и CAE (да-да, гидроаэродинамика и динамическая теория сопротивления материалов -- это, как оказалось, далеко не предел мечтаний :), а почётное первое место заняли таки квантовомеханические расчёты.
    Что, впрочем, очевидно: квантовая механика "скушает" столько вычислительной мощности, сколько у вас есть: чем у вас её больше, тем с большим количеством электронов систему вы сможете обсчитать.
    Один мой старинный друг в своё время работал в аспирантуре в США, занимался там сравнением GAMESSа с Gaussianом (ну, не только этим, но и этим тоже :). Так вот, он показывал мне толщину пачки бумаги, на которой он распечатал _только_ тот код, который считает обменные интегралы в операторе Фока. Листов так под четыреста будет... Оптимизируется _каждый_ частный случай. Иначе вообще ничего посчитать будет нельзя.
    Так что как раз-таки "расчётникам" такие оптимизации будут _очень_ кстати. ;)
    P.S: Определитель Гаусса средненького белка -- 70..90 ГИГАбайт. ОЗУ мы тоже очень любим. ;)

     
     
  • 4.10, Аноним (10), 16:26, 25/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Однако, интересно. Вот у нас тут тоже 95% химиков пользуются Gaussian, кватовомеханические рассчеты. С ними меньше всего проблем  :)) Только железа давай побольше :))
     
  • 4.11, nmnb (?), 18:04, 25/11/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >P.S: Определитель Гаусса средненького белка -- 70..90 ГИГАбайт.
    > ОЗУ мы тоже очень любим. ;)

    Вы ещё юэаете 2-х мерные массивы, ........... ню-ню.  


     
     
  • 5.12, Den (??), 12:53, 04/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >>P.S: Определитель Гаусса средненького белка -- 70..90 ГИГАбайт.
    >> ОЗУ мы тоже очень любим. ;)
    >
    >Вы ещё юэаете 2-х мерные массивы, ........... ню-ню.

    ага, матрица как правло не более 5 % заполнения, а если привести к ленточно-диагональному виду то очень компактно можно хранить. Эх мне бы да эту статью лет 5 назад, когда я решал диф уравнения в частных производных, а сейчас для меня не сильно актуально. Кстати есть очень много алгоритмов по работе с матрицей, еще придуманных в 80 годах. Так вот на лично препод показывал как обрабатывал матрицы размером 1000 на 1000 на i386 методом кусочной обработки с хранением промежуточных решений на винте. Щас книжки пошли, только один перевод забугорного хлама, например, самый "крутой" медод решения диф. урав. метод рунге кута 6 порядка или нелинейный метод эйлера - и ето все, реальные задачи (молекулярная физика, химия, електроника) на них расходятся. Или все нелинейные задачи сводят к методу ньютона, хотя есть много прогресивных методов которые по сходимости на порядок лучше

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру