Многопоточное параллельное программирование (547925), страница 3
Текст из файла (страница 3)
Крометого, следует воссоздать условия возникновения прерываний и формирования сигналов, а внекоторых случаях — даже рабочую нагрузку сети. При этом нужно понимать, что и самисредства тестирования и отладки оказывают немалое влияние на состояние среды. Этоозначает, что создание одинаковой последовательности событий для тестирования и отладкизачастую невозможно. Необходимость воссоздания всех перечисленных выше условийобусловлено тем, что они позволяют определить, какие процессы или потоки следуетвыполнять и на каких именно процессорах. Смешанное выполнение процессов и потоков (внекоторой неудачной "пропорции") часто является причиной возникновениявзаимоблокировок, бесконечных отсрочек, "гонки" данных и других проблем. Тот уровеньпредсказуемости, который имеет место в последовательной модели, недоступен дляпараллельного программирования.
Это заставляет разработчика овладевать новымитактическими приемами для тестирования и отладки параллельных программ, а такжетребует от него поиска новых способов доказательства корректности его программ.Разработка параллельных программ трудоемкий дорогостоящий процесс. Компания Intel,проявляя инициативу в продвижении многопроцессорных архитектур, предложилатехнологию позволяющую разрабатывать высокопроизводительные многопоточныеприложения, увеличивая скорость разработки, за счёт автоматизации таких трудоёмкихпроцессов как обнаружение трудновоспроизводимых ошибок описанных в предыдущемразделе.
Также предлагается инструмент, позволяющий оптимизировать многопоточноеприложение за счёт исключения "узких" мест.Набор инструментов предназначенных для отладки и оптимизации многопоточныхприложений включает следующие:••Intel Thread Checker: Призван помочь программистам определять местонахождениеневоспроизводимых ошибок, которые иначе практически очень сложно обнаружить,позволяя сэкономить недели дорогостоящего времени.Intel Thread Profiler: Помогает оптимизировать параллельное приложение длядостижения оптимальной производительности графически отображая ошибки всинхронизационных объектах и неравномерное распределение нагрузки междунитями, которые приводят к увеличению времени выполнения приложения..