Князев Николай , intel Костас Малинаускас , intel
DESCRIPTION
Параллельный алгоритм поиска критических путей и циклов в задаче статического временного анализа цифровых схем с последовательностной логикой. Князев Николай , Intel Костас Малинаускас , Intel. Содержание выступления. Основные понятия статического временного анализа - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/1.jpg)
Параллельный алгоритм поиска критических путей и циклов в
задаче статического временного анализа цифровых схем с
последовательностной логикой
Князев Николай, Intel
Костас Малинаускас, Intel
![Page 2: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/2.jpg)
2University
Содержание выступления1. Основные понятия статического временного
анализа
2. Актуальные проблемы статического временного анализа
3. Параллельный алгоритм для комбинационных схем
4. Параллельный алгоритм для последовательных схем
5. Результаты
![Page 3: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/3.jpg)
3University
Статический Временной Анализ• Рассматриваются синхронные схемы
• Min/max время распространения сигнала
• Вычисляются задержки событий• Событие - изменения уровня сигнала на входе или выходе
элемента.
![Page 4: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/4.jpg)
4University
Проблемы программных инструментов СВА
• Эффективность инструментов СВА ограничена производительностью
• Известные алгоритмы
•в основном однопоточная реализация
•«ленивые» вычисления
•инкрементальные подходы
![Page 5: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/5.jpg)
5University
Алгоритмы для комбинационных схем
• Параллелизация по уровням • Элементы разбиваются по уровням • Элементы одного уровня обрабатываются
параллельно
элем. 1элем. 2
элем. 3
элем. 4элем. 5
Уровень 1 Уровень 2 Уровень 3
![Page 6: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/6.jpg)
6University
• Асинхронная параллелизация• Счетчик – число входов, где задержки еще не посчитаны
• Элемент добавляется в очередь, когда счетчик равен 0
• Элементы с нулевым счетчиком обрабатываются параллельно
элем 1.счетчик 0
элем 2.счетчик 1
элем 3.счетчик 1
элем 4.счетчик 1
элем 5.счетчик 2
Алгоритмы для комбинационных схем
![Page 7: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/7.jpg)
7University
• Асинхронная параллелизация
• После расчета элемента уменьшаются счетчики на всех элементах, входы которых соединены с данным.
элем 1.счетчик 0
элем 2.счетчик 0
элем 3.счетчик 0
элем 4.счетчик 0
элем 5.счетчик 1
Алгоритмы для комбинационных схем
![Page 8: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/8.jpg)
8University
элем 1.счетчик 0
элем 2.счетчик 0
элем 3.счетчик 0
элем 4.счетчик 0
элем 5.счетчик 0
• Асинхронная параллелизация
Алгоритмы для комбинационных схем
![Page 9: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/9.jpg)
9University
элем. 1
элем. 2 элем. 3
элем. 5
элем. 4
элем. 1
элем. 2 элем. 3
элем. 4 элем. 5
ядро 1 ядро 2 ядро 1 ядро 2
Параллелизация по уровням
Асинхронный подход
время время
} преимуществоасинхронногоподхода
Алгоритмы для комбинационных схем
![Page 10: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/10.jpg)
10University
Алгоритм для последовательстных схем
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
![Page 11: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/11.jpg)
11University
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
Алгоритм для последовательстных схем
![Page 12: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/12.jpg)
12University
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
tbb::parallel_do
tbb::parallel_for
Алгоритм для последовательстных схем
![Page 13: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/13.jpg)
13University
Результаты
![Page 14: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/14.jpg)
14University
Число
элементов
Число
триггеров
Число
итераций
алгоритма
Время
работы на
одном
ядре (сек)
Время
работы
на 16
ядрах
(сек)
Ускорение
3573 319 4 123.0 16.9 7.3
5228 390 3 144.0 26.0 5.5
5465 691 4 143.0 28.0 5.8
6756 138 3 203.0 23.0 8.9
19480 1528 3 333.4 43.0 7.8
Результаты
![Page 15: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/15.jpg)
15University
Спасибо за внимание!
Ваши вопросы?
![Page 16: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/16.jpg)
16University
Backup
![Page 17: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/17.jpg)
17University
Паралелльность Инкрементальность
Проблема: • Инкрементальная загрузка данных, кэши не потоко-
безопастныРешение:• Подогрев кэшей, как временное решение• Параллельные быстрые потокобезопастные паттерны для
различных типов кэшей
Инкреметальность Параллельность
![Page 18: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/18.jpg)
18University
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
![Page 19: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/19.jpg)
19University
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;}
![Page 20: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/20.jpg)
20University
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> }
![Page 21: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/21.jpg)
21University
Cone BFS after incremental change
• После малого изменения схемы, встает задача быстрого пересчета задержек в схеме
• Граф критических путей представляет собой дерево
![Page 22: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/22.jpg)
22University
Incremental BFS on a DAG
Source stages (with worsened
events)
Queue is empty?
DoneYes
No
Decrement fanin counter of S
Enqueue S if counter=0
Evaluate stage (ignore transparencies)Enqueue
source stages
Extract random stage from the queue
Get next fanout stage S
Add to latches with updated inputs
Is S entered by port with transp. arc to output?
No
Yes
Last fanout stage?
YesNo
Start
Initialize fanin counters in the affected cone
TBB::parallel_do
TBB::parallel_do
![Page 23: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/23.jpg)
23University
Top algorithm Example
latch
latch
latchinput output
![Page 24: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/24.jpg)
24University
Top algorithm Example
latch
latch
latchinput output
Step 1 - BFS on DAG
![Page 25: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/25.jpg)
25University
Top algorithm Example
latch
latch
latchinput output
Step 2 - Latch propagation
![Page 26: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/26.jpg)
26University
Top algorithm Example
latch
latch
latchinput output
Step 5 - BFS on DAG. No events on latches were updated.
![Page 27: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/27.jpg)
27University
Top algorithm Example
latch
latch
latchinput output
Step 3 - BFS on DAG
![Page 28: Князев Николай , Intel Костас Малинаускас , Intel](https://reader036.vdocuments.site/reader036/viewer/2022062301/568137c9550346895d9f66f7/html5/thumbnails/28.jpg)
28University
Top algorithm Example
latch
latch
latchinput output
Step 4 - Latch propagation. Loop detected!
loop