1 / 28

Князев Николай , Intel Костас Малинаускас , Intel

Параллельный алгоритм поиска критических путей и циклов в задаче статического временного анализа цифровых схем с последовательностной логикой. Князев Николай , Intel Костас Малинаускас , Intel. Содержание выступления. Основные понятия статического временного анализа

Download Presentation

Князев Николай , Intel Костас Малинаускас , Intel

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Параллельный алгоритм поиска критических путей и циклов в задаче статического временного анализа цифровых схем с последовательностной логикой Князев Николай, Intel Костас Малинаускас, Intel

  2. Содержание выступления • Основные понятия статического временного анализа • Актуальные проблемы статического временного анализа • Параллельный алгоритм для комбинационных схем • Параллельный алгоритм для последовательных схем • Результаты

  3. Статический Временной Анализ • Рассматриваются синхронные схемы • Min/max время распространения сигнала • Вычисляются задержки событий • Событие - изменения уровня сигнала на входе или выходе элемента.

  4. Проблемы программных инструментов СВА • Эффективность инструментов СВА ограниченапроизводительностью • Известные алгоритмы • в основном однопоточная реализация • «ленивые» вычисления • инкрементальные подходы

  5. Алгоритмы для комбинационных схем • Параллелизация по уровням • Элементы разбиваются по уровням • Элементы одного уровня обрабатываются параллельно Уровень 3 Уровень 2 Уровень 1 элем. 2 элем. 1 элем. 3 элем. 5 элем. 4

  6. Алгоритмы для комбинационных схем • Асинхронная параллелизация • Счетчик – число входов, где задержки еще не посчитаны • Элемент добавляется в очередь, когда счетчик равен 0 • Элементы с нулевым счетчиком обрабатываются параллельно элем 2. счетчик 1 элем 1. счетчик 0 элем 3. счетчик 1 элем 5. счетчик 2 элем 4. счетчик 1

  7. Алгоритмы для комбинационных схем • Асинхронная параллелизация • После расчета элемента уменьшаются счетчики на всех элементах, входы которых соединены с данным. элем 2. счетчик 0 элем 1. счетчик 0 элем 3. счетчик 0 элем 5. счетчик 1 элем 4. счетчик 0

  8. Алгоритмы для комбинационных схем • Асинхронная параллелизация элем 2. счетчик 0 элем 1. счетчик 0 элем 3. счетчик 0 элем 5. счетчик 0 элем 4. счетчик 0

  9. Алгоритмы для комбинационных схем время время } преимущество асинхронного подхода элем. 5 элем. 4 элем. 4 элем. 5 элем. 2 элем. 3 элем. 2 элем. 3 элем. 1 элем. 1 ядро 2 ядро 2 ядро 1 ядро 1 Параллелизация по уровням Асинхронный подход

  10. Алгоритм для последовательстных схем Входные элементы Начало Есть элементы в очереди? Нет Конец Есть Алгоритм для комбинационных схем Триггеры, с измененными событиями Распространение событий на триггерах Список элементов с новыми событиям на входе

  11. Алгоритм для последовательстных схем Входные элементы Начало Есть элементы в очереди? Нет Конец Есть Алгоритм для комбинационных схем Триггеры, с измененными событиями Распространение событий на триггерах Список элементов с новыми событиям на входе

  12. Алгоритм для последовательстных схем Входные элементы Начало Есть элементы в очереди? Нет Конец Есть Алгоритм для комбинационных схем tbb::parallel_do Триггеры, с измененными событиями Распространение событий на триггерах tbb::parallel_for Список элементов с новыми событиям на входе

  13. Результаты

  14. Результаты

  15. Спасибо за внимание! Ваши вопросы?

  16. Backup

  17. ПаралелльностьИнкрементальностьПаралелльностьИнкрементальность Проблема: • Инкрементальная загрузка данных, кэши не потоко-безопастны Решение: • Подогрев кэшей, как временное решение • Параллельные быстрые потокобезопастные паттерны для различных типов кэшей Параллельность Инкреметальность

  18. TBB patterns and BKM’s • Basic TBB patterns • parallel_do, parallel_for, concurent_hash_map, concurrent_vector, mutex spin_lock and other • Composite parallel patterns • Concurrent map-based cache load/access • Concurrent map-based “update-if-more” • Concurrent map and vector synchronous update • Static object init and access

  19. Concurrent map-based cache load/access #define ConcurrentMapType tbb::concurrent_hash_map<..> ConcurrentMapType cashConcurrentMap; DataType GetValue(KeyType key) { ConcurrentMapType::accessor ac; if (cashConcurrentMap.insert(ac,key)) { <incremental cache data load etc.> ac->second = data; } else data = ac->second; return data; }

  20. Concurrent map and vector synchronous update pattern #define ConcurrentMapType concurrent_hash_map <KeyType,DataType1> tbb::concurrent_vector <DataType1> vector1; … tbb::concurrent_vector <DataTypeN> vectorN; ConcurrentMapType indexConcurrentMap; void Update (KeyType key, DataType1 data1…DataTypeN dataN) { ConcurrentMapType::accessor ac; if (indexConcurrentMap .insert(ac,key) ) { vector2.push_back( DataType1() ); … vectorN.push_back( DataTypeN() ); ac->second= vector1.push_back(data1) - vector1.begin(); vector2->at[ac->second] = data2; … vectorN->at[ac->second] = dataN; } else <data is already loaded> }

  21. Cone BFS after incremental change • После малого изменения схемы, встает задача быстрого пересчета задержек в схеме • Граф критических путей представляет собой дерево

  22. Incremental BFS on a DAG Start Yes Queue is empty? Done Source stages (with worsened events) No Extract random stage from the queue Evaluate stage (ignore transparencies) Enqueue source stages Initialize fanin counters in the affected cone Get next fanout stage S TBB::parallel_do Is S entered by port with transp. arc to output? Yes No Decrement fanin counter of S Add to latches with updated inputs Enqueue S if counter=0 Last fanout stage? No TBB::parallel_do Yes

  23. Top algorithm Example latch input output latch latch

  24. Top algorithm Example Step 1 - BFS on DAG latch input output latch latch

  25. Top algorithm Example Step 2 - Latch propagation latch output latch input latch

  26. Top algorithm Example Step 5 - BFS on DAG. No events on latches were updated. latch input output latch latch

  27. Top algorithm Example Step 3 - BFS on DAG latch input output latch latch

  28. Top algorithm Example Step 4 - Latch propagation. Loop detected! latch input output latch latch loop

More Related