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

Post on 03-Jan-2016

48 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

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

Князев Николай, 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

top related