ВОВКнОUС, 09 лекция (от 11 апреля)

Материал из eSyr's wiki.

Версия от 16:10, 18 апреля 2008; ESyr01 (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Следующий раз последний, потом лектор улетает в Астану.

Темы:

  • Опции оптимизации компиляторов
  • Перенос данных с архитектуры на архитектуру

Оптимизация

Что может оптимизировать компилятор?

  • Минимизация размера программы (-Os)
  • Циклы
  • Манипуляция с кэшем
  • Манипуляция с регистрами
  • Оптимизация под конкретную архитектуру
  • Межпроцедурная/межмодульная оптимизация
  • Использование аппаратных библиотек
  • Оптимизация на основе профилирования
  • Автоматическое распараллеливание
    • xlc --- -qsmp=auto
    • icc --- -autoparallel
    • OpenMP
      • xlc --- -qsmp=omp
      • gcc -fopenmp
  • Использование SSE
    • icc --- -ax{S|P|B|W|K}

Программа состоит из 3 вещей:

  • Данные
  • Стек
  • Память

Перенос данных

  • Ничего делать --- проблемы с переносом
  • MPI_Packextern --- гарантируется, что будет переносимость
  • NetCDF
  • HDF5

NetCDF

Слегка ущербный формат. Он не позволяет делать всякие разные нерегулярные сетки. Предназначен для хранения сеточных данных. Для NetCDF есть два представления: бинарное (CDL) и текстовое. Кроме того, есть обёртки под многие ЯП: Java, C, Python, Fortran, C++, Perl. Он ущербный и простой до такой степени, что работает быстро.

Есть ещё PNetCDF (Parallel NetCDF), котрый работает поверх MPI-IO.

По поводу CDL: есть понятие data set, пространство данных. У пространства данных есть своё имя, у него есть свои атрибуты и переменные. Каждая переменная --- переменная над множеством каких-то размерностей. Пример --- точка в океане:

depth = 110,
latitude = 1000,
logitude = 5000,
time = UNLIMITED;

После этого можно задать какой-то атрибут:

...

Переменные:

double creatures(depth, latitude, longitude, time)

Атрибуты:

creatures: normalize_coef=0.1
data:
 creatures=0.1,0.2,0.3,...

data set закрывается фигурной скобкой. Теоретически может быть неск. датасетов на файл.

  • В бинарном предст --- имя.nc
  • В текстовом --- имя.CDL

Есть две команды:

  • ncdump --- переводит из бинарного предст. в текстовое.
  • ncgen --- переводит из текстового предст. в бинарное. ncgen -c --- можно сгенерировать кроме бинарного предст. С-шный код, который его будет читать.


Вопросы организации вычислительных кластеров на основе UNIX-серверов


01 02 03 04 05 06 07 08 09 10 11


Календарь

пт пт пт пт пт
Февраль
    15 22 29
Март
07 14 21 28
Апрель
04 11 18 25


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы