Rambler's Top100 Service калинин.ru / комментарии / книги /  << 05.07.01 >>

High Perfomance Computing, second edition.

    Иллюстрация
    Обложка книги.
    Обложка книги.

Название книги можно перевести как "Высокопроизводительные вычисления" и эта тематика в русскоязычной литературе не освещена совсем.

Традиционно считается, что самой важной составляющей при создании программного обеспечения является алгоритмическая часть, ведь именно она задает границы по количеству выполняемых "атомарных" операций. Тем не менее, алгоритм определяет зависимость времени работы от объема входных данных до некоторого коэффициента умножения (или, точнее, коэффициентов). Если один из таких коэффициентов достаточно велик (за счет громоздкости какой-нибудь часто выполняемой операции), то его уменьшение может дать вполне ощутимый выигрыш в производительности.

Понятно, что изменение алгоритма на лучший (если такой вообще возможен) может ускорить работу программы на порядки. Но если, к примеру, задача обсчитывается 24 часа, а путем оптимизации некоторых маленьких процедур удастся уменьшить это время до 12, то это будет очень неплохо.

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

Так вот в книге "High Perfomance Computing" рассказывается о том, какие методы оптимизации программного кода существуют сейчас. Большая часть материала посвящена RISC архитектуре --- наиболее часто используемой в современных вычислительных задачах.

Кроме того, объясняются основные приемы оптимизации, применяемыми современными оптимизирующими компиляторами. Это полезно, ведь зачастую проблема состоит в том, чтобы упростить задачу встроенному оптимизатору, а не самостоятельному (ручному) улучшению программного кода. При этом я понимаю, что с предыдущим утверждением можно поспорить, но я более чем уверен, что непосредственно вычислениями лучше заниматься тем специалистам, которым эти вычисления нужны (а не программистам). Связано это со многими причинами, в частности можно утверждать, что программист (как узкий специалист) не может в случае необходимости упростить вычислительную задачу. В то же самое время постановщик задачи может пойти на решение упрощенной задачи, так как оно может дать интересные результаты при меньших трудозатратах.

В качестве языка программирования, на котором написаны примеры, чаще всего выступает Фортран-77, что в общем, неудивительно. Для этого языка программирования существует большое количество математических библиотек, а его простая, приближенная к машинному языку программирования, структура позволяет написать эффективный оптимизатор. Кроме того, фортран чаще используется при решении подобных задач просто по историческим причинам.

Мало того, в книге утверждается (и аргументируется), что для высокопроизводительных вычислений лучше языка программирования нет. Как я уже отметил, это вполне оправданный тезис.

Объясняется множество достаточно простых, но полезных свойств современных процессоров, даются сравнительные характеристики различных семейств микропроцессоров. Все это, а так же понятно написанный текст, делают из книги еще и приятный обзор современных архитектур для тех людей, которые никогда еще не углублялись во внутреннее устройство компьютера. С другой стороны, для программистов, которые немного представляют себе что такое конвейер или знают о неоднородности оперативной памяти в ЭВМ, этот обзор ничего нового не даст.

Есть пара глав посвященных программированию при помощи потоков или распределению задач по машинам в сети (к примеру, используя PVM). Правда, в основном объясняются тривиальные вещи.

Книга написана достаточно интересно но, на мой взгляд неровно: есть главы, которые читаются взахлеб, а есть откровенно скучные, изобилующие повторениями и пережевываниями старых мыслей.

Надо понимать, что вычисления (о которых и идет речь в книге) встречаются в основном при решении научных прикладных проблем (к примеру, моделирования поведения какого-нибудь газа). Таким образом сама книга не для программистов, а, скорее, для прикладных математиков или физиков, которым особенно важно выжать из процессора все, на что он способен. Собственно, в тех задачах, для которых нужны программисты, сложные вычисления встречаются не так уж и часто (хотя проблема производительности процессора тоже встает, но в других контекстах). Для математиков, занимающихся сложными расчетами, книга, я думаю, должна быть очень полезна. Согласитесь, математику нет нужды в особых знаниях ассемблера или тонкостей оптимизации, но иметь общее представление было бы полезно.

Программистам же книжку можно рекомендовать только как обзорную, для развития кругозора. Полезная информация есть, но ее же можно узнать просто обратившись к фирменной документации на какой-нибудь современный микропроцессор, а так же применяя здравый смысл (еще иногда полезно смотреть ассемблерный выход; к примеру, я недавно доверился компилятору, а по прошествии нескольких месяцев оказалось что зря). Стоит отметить, я не пожалел, что приобрел эту книгу, повторюсь, что как обзор она, в общем-то, вполне нормальная. Хотя местами скучная.

Резюме

Книга для "программирующих математиков", то есть людей, которым нужно, чтобы их программы на фортране работали быстрее, чем раньше. Так же, я думаю, интересно прочитать книгу в качестве обзора: подробно объясняется множество не совсем очевидных при поверхностном знакомстве с той или иной темой вещей, при этом я не заметил ошибок в изложении, что само по себе очень приятно. С другой стороны, ни одна из тем не изложена подробно.

Тем не менее, большую часть изложенного в книге материала можно изучить либо косвенно (просто в процессе программирования), либо при общении с другими программистами (непосредственно или в каких-либо конференциях). Во всяком случае, мне так кажется.


Версия для печати


  Ссылки по теме:
http://www.amazon.com/exec/obi
   Эта книга на amazon.com (с комментариями).
http://www.pregrad.net
   Pregrad.Net, фирма, которая осуществляет доставку товаров из зарубежных интернет-магазинов.
  Рядом в разделе:
Плагиат (19.06.01)
   В последнее время мне стало казаться, что с моим сайтом что-то не в порядке. Вроде, текст есть, живые люди тоже иногда...   >>>>
TCP/IP Illustrated, volume I. The Protocols (22.04.01)
   И опять, книга, о которой мне хочется рассказать, насколько мне известно, отсутствует в русском переводе. Тем не менее, в разделе сетевого...   >>>>
  Рядом по дате:
C или C++? (09.07.01)
   Существуют два диаметрально противоположенных, но одинаково распространенных мнения, которые можно выразить как "C++ это C с классами" и "C++ и C...   >>>>
Потоки (03.07.01)
   Хочется наконец-то выполнить данное мною еще полгода назад обещание и рассказать о том, что такое потоки в Unix и каких типов...   >>>>
  Содержание:
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
   C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Просто так
Студенческое
Туризм
  Байки
Фотографии
Комментарии
   Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Благодарности
Форум
Хронология
 
  В этом разделе:
High Perfomance Computing, second edition. (05.07.01)
   Название книги можно перевести как "Высокопроизводительные вычисления" и эта тематика в русскоязычной литературе не освещена совсем. Традиционно считается, что самой важной...   >>>>
Плагиат (19.06.01)
   В последнее время мне стало казаться, что с моим сайтом что-то не в порядке. Вроде, текст есть, живые люди тоже иногда...   >>>>
TCP/IP Illustrated, volume I. The Protocols (22.04.01)
   И опять, книга, о которой мне хочется рассказать, насколько мне известно, отсутствует в русском переводе. Тем не менее, в разделе сетевого...   >>>>
Decline and Fall of the American Programmer (28.02.01)
   Эдвард Йордон является одним из самых известных специалистов в области создания больших программных систем. Широко известна его нотация, предназначенная для структурного...   >>>>
Unix internals: the new frontiers (03.12.00)
   Хочу сразу же предупредить, что эта книга, насколько мне известно, в переводе на русский язык не существует, поэтому прошу прощения, если...   >>>>
Операционная система Unix (31.10.00)
   Unix получил очень широкое распространение в современном компьютерном мире. При этом, даже если большая часть домашних компьютеров работает под управлением операционной...   >>>>
Язык UML, рукводство пользователя (29.09.00)
   UML (Unified Modeling Language, унифицированный язык моделирования) является еще одной популярной аббревиатурой, которой очень часто пользуются, не понимая того, что за...   >>>>
Содержание раздела полностью...
   Примерно в тоже время
C или C++? (09.07.01)
   Существуют два диаметрально противоположенных, но одинаково распространенных мнения, которые можно выразить как "C++ это C с классами" и "C++ и C...   >>>>
Потоки (03.07.01)
   Хочется наконец-то выполнить данное мною еще полгода назад обещание и рассказать о том, что такое потоки в Unix и каких типов...   >>>>
Хронология полностью...
   Содержание
Заглавная страница
Мой блог
Мое резюме
Дайджест
Программирование
  C&C++
Сети
Unix
Алгоритмы
Оптимизация
Соревнования
Отвлеченно
XML
TeX
Туризм
  Байки
Фотографии
Комментарии
  Книги
Web-ресурсы
Фильмы
Интернет
Программное обеспечение
Жизнь
Студенческое
Просто так
Благодарности
Форум
Хронология
© 2000-2008, Andrey L. Kalinin
mailto:andrey@kalinin.ru
Rambler's Top100