Князев Николай , intel Костас Малинаускас , intel
DESCRIPTION
Параллельный алгоритм поиска критических путей и циклов в задаче статического временного анализа цифровых схем с последовательностной логикой. Князев Николай , Intel Костас Малинаускас , Intel. Содержание выступления. Основные понятия статического временного анализа - PowerPoint PPT PresentationTRANSCRIPT
Параллельный алгоритм поиска критических путей и циклов в
задаче статического временного анализа цифровых схем с
последовательностной логикой
Князев Николай, Intel
Костас Малинаускас, Intel
2University
Содержание выступления1. Основные понятия статического временного
анализа
2. Актуальные проблемы статического временного анализа
3. Параллельный алгоритм для комбинационных схем
4. Параллельный алгоритм для последовательных схем
5. Результаты
3University
Статический Временной Анализ• Рассматриваются синхронные схемы
• Min/max время распространения сигнала
• Вычисляются задержки событий• Событие - изменения уровня сигнала на входе или выходе
элемента.
4University
Проблемы программных инструментов СВА
• Эффективность инструментов СВА ограничена производительностью
• Известные алгоритмы
•в основном однопоточная реализация
•«ленивые» вычисления
•инкрементальные подходы
5University
Алгоритмы для комбинационных схем
• Параллелизация по уровням • Элементы разбиваются по уровням • Элементы одного уровня обрабатываются
параллельно
элем. 1элем. 2
элем. 3
элем. 4элем. 5
Уровень 1 Уровень 2 Уровень 3
6University
• Асинхронная параллелизация• Счетчик – число входов, где задержки еще не посчитаны
• Элемент добавляется в очередь, когда счетчик равен 0
• Элементы с нулевым счетчиком обрабатываются параллельно
элем 1.счетчик 0
элем 2.счетчик 1
элем 3.счетчик 1
элем 4.счетчик 1
элем 5.счетчик 2
Алгоритмы для комбинационных схем
7University
• Асинхронная параллелизация
• После расчета элемента уменьшаются счетчики на всех элементах, входы которых соединены с данным.
элем 1.счетчик 0
элем 2.счетчик 0
элем 3.счетчик 0
элем 4.счетчик 0
элем 5.счетчик 1
Алгоритмы для комбинационных схем
8University
элем 1.счетчик 0
элем 2.счетчик 0
элем 3.счетчик 0
элем 4.счетчик 0
элем 5.счетчик 0
• Асинхронная параллелизация
Алгоритмы для комбинационных схем
9University
элем. 1
элем. 2 элем. 3
элем. 5
элем. 4
элем. 1
элем. 2 элем. 3
элем. 4 элем. 5
ядро 1 ядро 2 ядро 1 ядро 2
Параллелизация по уровням
Асинхронный подход
время время
} преимуществоасинхронногоподхода
Алгоритмы для комбинационных схем
10University
Алгоритм для последовательстных схем
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
11University
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
Алгоритм для последовательстных схем
12University
Входные элементы
Есть элементы в очереди? Конец
Нет
Есть
Триггеры, с измененнымисобытиями
Список элементов с новыми событиям на входе
Алгоритм для комбинационных схем
Распространение событий на триггерах
Начало
tbb::parallel_do
tbb::parallel_for
Алгоритм для последовательстных схем
13University
Результаты
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
Результаты
15University
Спасибо за внимание!
Ваши вопросы?
16University
Backup
17University
Паралелльность Инкрементальность
Проблема: • Инкрементальная загрузка данных, кэши не потоко-
безопастныРешение:• Подогрев кэшей, как временное решение• Параллельные быстрые потокобезопастные паттерны для
различных типов кэшей
Инкреметальность Параллельность
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
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;}
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> }
21University
Cone BFS after incremental change
• После малого изменения схемы, встает задача быстрого пересчета задержек в схеме
• Граф критических путей представляет собой дерево
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
23University
Top algorithm Example
latch
latch
latchinput output
24University
Top algorithm Example
latch
latch
latchinput output
Step 1 - BFS on DAG
25University
Top algorithm Example
latch
latch
latchinput output
Step 2 - Latch propagation
26University
Top algorithm Example
latch
latch
latchinput output
Step 5 - BFS on DAG. No events on latches were updated.
27University
Top algorithm Example
latch
latch
latchinput output
Step 3 - BFS on DAG
28University
Top algorithm Example
latch
latch
latchinput output
Step 4 - Latch propagation. Loop detected!
loop