Archives

Сообщения от dsambor RSS

Первое знакомство с технологией Intel® Cilk™ Plus

dsambor (2 пост(а)) 28.11.2011 10:10
Комментарии (6)

В конкурсной задаче Acceler8 2011 требовалось найти подматрицу с наибольшей суммой в матрице, заполненной псевдослучайными значениями. Линейность используемого генератора псевдослучайных чисел позволяла заполнять матрицу параллельно.

В одном из вариантов известного кубического алгоритма в качестве предварительного шага требуется преобразовать матрицу в матрицу столбцов префиксных сумм. Поставим задачу написать эффективный код, который заполнит матрицу и вычислит префиксные суммы столбцов. При этом программа должна использовать как параллелизм на уровне задач (multicore), так и на уровне данных (SIMD векторизация), и сохранять наглядность последовательного алгоритма.

Технология Intel Cilk Plus подкупает именно тем, что обещает решить эти задачи. Например, расширение C/C++ Extensions for Array Notation (CEAN), входящее в состав Cilk Plus, позволяет лаконично сформулировать параллельный алгоритм заполнения массива.

Продолжение ›

Категория: Intel Software Network, Параллельное программирование, Разработка софта
Метки: ,

Помочь компилятору в векторизации? — Иногда приходится...

dsambor (2 пост(а)) 12.11.2011 21:43
Комментарии (1)

Данный пост продолжает тему, затронутую в статье "Помочь компилятору в векторизации? — Лучше просто не мешать" (Rus, Eng [1]). В этой статье приведена ситуация, в которой ручное разворачивание цикла запутало компилятор и привело к тому, что код цикла векторизован не был. Однако часто встречаются ситуации, в которых компилятор отказывается векторизовывать код, поскольку между итерациями есть зависимость по данным. Например, если в цикле накапливается сумма или ищется максимальное значение из массива.

Продолжение ›

Категория: Intel Software Network, Разработка софта
Метки: ,