774 Тем для обсуждения
6,825 Открытых обсуждений
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
Archives
Сообщения от dsambor 
Первое знакомство с технологией 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, Параллельное программирование, Разработка софта
Метки: Acceler8, Intel Cilk Plus
Помочь компилятору в векторизации? — Иногда приходится...
dsambor (2 пост(а)) 12.11.2011 21:43
Комментарии (1)
Данный пост продолжает тему, затронутую в статье "Помочь компилятору в векторизации? — Лучше просто не мешать" (Rus, Eng [1]). В этой статье приведена ситуация, в которой ручное разворачивание цикла запутало компилятор и привело к тому, что код цикла векторизован не был. Однако часто встречаются ситуации, в которых компилятор отказывается векторизовывать код, поскольку между итерациями есть зависимость по данным. Например, если в цикле накапливается сумма или ищется максимальное значение из массива.
