Закон Амдала. Трудоемкость алгоритма и ее оценка. Оценка трудоемкости алгоритмов матричных операций.

 

Закон Амдала — иллюстрирует ограничение роста производительности вычислительной системы с увеличением количества вычислителей. Джин Амдал сформулировал закон в 1967 году, обнаружив простое по существу, но непреодолимое по содержанию ограничение на рост производительности при распараллеливании вычислений: «В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента». Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.

По сути трудоёмкость - это оценка функции роста количества итераций при линейном приращении объема данных.

Например, если при увеличении размера входного массива в 2 раза количество итераций алгоритма по его обработке возрастёт в 4 раза, то это - квадратичная зависимость .

Можно эту функцию получить и экспериментально - нужно просто замерить время работы алгоритма на различных объёмах входных данных и построить график.

Может оказаться, что алгоритм с большей трудоёмкостью будет более эффективен на небольших объемах данных, поскольку коэффициенты при её расчёте обычно опускаются и считается предельная оценка при . Например, алгоритм будет явно эффективнее на небольших объемах, чем . Поэтому Вам, возможно, будет интереснее замерить реальную производительность и получить графическую зависимость экспериментально.

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

 

20 Понятия «процесс» и «поток». Необходимость использования потоков. Свойства (параметры) процессов и потоков.

ПРОЦЕСС – понятие, используемое для учета ресурсов – единица планирования ресурсов

• Процесс – выполнение программы с ее исходными данными

• Процессы делятся на системные (решение задач ОС)- службы, демоны и пользовательские – создаются из выполняемых файлов

• Системные процессы – ДЕМОНЫ (Linux), службы (Windows). СП не связаны с терминалом - Linux, не имеют окон - Windows

• Процесс может породить один или несколько дочерних процессов (потомков) – например, проводник Windows

• Процесс имеет: виртуальное адресное пространство, имя, PID, ACL, приоритет, описатель (handle) Windows, открытые файлы, модули, объекты синхронизации, память - рабочее множество страниц, время работы на ЦП в режиме пользователя и ядра, привязку к ЦП и т.д. ( около 50 параметров в PowerShell)

• Для выполнения вычислительных работ каждый ПРОЦЕСС имеет один или несколько ПОТОКОВ – важно для многоядерных процессоров

ПОТОК последовательность выполняющихся команд ЦП.

• Поток имеет приоритет, согласно которому он получает КВАНТЫ времени ЦП, идентификатор TID, стек