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

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

Upload: haviva-finley

Post on 03-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

Параллельный алгоритм поиска критических путей и циклов в

задаче статического временного анализа цифровых схем с

последовательностной логикой

Князев Николай, Intel

Костас Малинаускас, Intel

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

2University

Содержание выступления1. Основные понятия статического временного

анализа

2. Актуальные проблемы статического временного анализа

3. Параллельный алгоритм для комбинационных схем

4. Параллельный алгоритм для последовательных схем

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

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

3University

Статический Временной Анализ• Рассматриваются синхронные схемы

• Min/max время распространения сигнала

• Вычисляются задержки событий• Событие - изменения уровня сигнала на входе или выходе

элемента.

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

4University

Проблемы программных инструментов СВА

• Эффективность инструментов СВА ограничена производительностью

• Известные алгоритмы

•в основном однопоточная реализация

•«ленивые» вычисления

•инкрементальные подходы

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

5University

Алгоритмы для комбинационных схем

• Параллелизация по уровням • Элементы разбиваются по уровням • Элементы одного уровня обрабатываются

параллельно

элем. 1элем. 2

элем. 3

элем. 4элем. 5

Уровень 1 Уровень 2 Уровень 3

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

6University

• Асинхронная параллелизация• Счетчик – число входов, где задержки еще не посчитаны

• Элемент добавляется в очередь, когда счетчик равен 0

• Элементы с нулевым счетчиком обрабатываются параллельно

элем 1.счетчик 0

элем 2.счетчик 1

элем 3.счетчик 1

элем 4.счетчик 1

элем 5.счетчик 2

Алгоритмы для комбинационных схем

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

7University

• Асинхронная параллелизация

• После расчета элемента уменьшаются счетчики на всех элементах, входы которых соединены с данным.

элем 1.счетчик 0

элем 2.счетчик 0

элем 3.счетчик 0

элем 4.счетчик 0

элем 5.счетчик 1

Алгоритмы для комбинационных схем

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

8University

элем 1.счетчик 0

элем 2.счетчик 0

элем 3.счетчик 0

элем 4.счетчик 0

элем 5.счетчик 0

• Асинхронная параллелизация

Алгоритмы для комбинационных схем

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

9University

элем. 1

элем. 2 элем. 3

элем. 5

элем. 4

элем. 1

элем. 2 элем. 3

элем. 4 элем. 5

ядро 1 ядро 2 ядро 1 ядро 2

Параллелизация по уровням

Асинхронный подход

время время

} преимуществоасинхронногоподхода

Алгоритмы для комбинационных схем

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

10University

Алгоритм для последовательстных схем

Входные элементы

Есть элементы в очереди? Конец

Нет

Есть

Триггеры, с измененнымисобытиями

Список элементов с новыми событиям на входе

Алгоритм для комбинационных схем

Распространение событий на триггерах

Начало

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

11University

Входные элементы

Есть элементы в очереди? Конец

Нет

Есть

Триггеры, с измененнымисобытиями

Список элементов с новыми событиям на входе

Алгоритм для комбинационных схем

Распространение событий на триггерах

Начало

Алгоритм для последовательстных схем

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

12University

Входные элементы

Есть элементы в очереди? Конец

Нет

Есть

Триггеры, с измененнымисобытиями

Список элементов с новыми событиям на входе

Алгоритм для комбинационных схем

Распространение событий на триггерах

Начало

tbb::parallel_do

tbb::parallel_for

Алгоритм для последовательстных схем

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

13University

Результаты

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

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

15University

Спасибо за внимание!

Ваши вопросы?

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

16University

Backup

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

17University

Паралелльность Инкрементальность

Проблема: • Инкрементальная загрузка данных, кэши не потоко-

безопастныРешение:• Подогрев кэшей, как временное решение• Параллельные быстрые потокобезопастные паттерны для

различных типов кэшей

Инкреметальность Параллельность

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

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

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

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

21University

Cone BFS after incremental change

• После малого изменения схемы, встает задача быстрого пересчета задержек в схеме

• Граф критических путей представляет собой дерево

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

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

23University

Top algorithm Example

latch

latch

latchinput output

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

24University

Top algorithm Example

latch

latch

latchinput output

Step 1 - BFS on DAG

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

25University

Top algorithm Example

latch

latch

latchinput output

Step 2 - Latch propagation

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

26University

Top algorithm Example

latch

latch

latchinput output

Step 5 - BFS on DAG. No events on latches were updated.

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

27University

Top algorithm Example

latch

latch

latchinput output

Step 3 - BFS on DAG

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

28University

Top algorithm Example

latch

latch

latchinput output

Step 4 - Latch propagation. Loop detected!

loop