ВОВКнОUС, 09 лекция (от 11 апреля)
Материал из eSyr's wiki.
ESyr01 (Обсуждение | вклад)
(Новая: Следующий раз последний, потом лектор улетает в Астану. Темы: * Опции оптимизации компиляторов * Перен...)
К следующему изменению →
Версия 16:10, 18 апреля 2008
Следующий раз последний, потом лектор улетает в Астану.
Темы:
- Опции оптимизации компиляторов
- Перенос данных с архитектуры на архитектуру
Оптимизация
Что может оптимизировать компилятор?
- Минимизация размера программы (-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 |