URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 50483
[ Назад ]

Исходное сообщение
"В GCC 4.4 появится поддержка автоматического распараллеливан..."

Отправлено opennews , 11-Мрт-09 12:45 
В списке рассылки GCC опубликован (http://gcc.gnu.org/ml/gcc/2009-03/msg00239.html) план реализации автоматического распараллеливания циклов в GCC. Ранее в дерево исходных текстов GCC был интегрирован код проекта Graphite (http://gcc.gnu.org/wiki/Graphite), в рамках которого была разработана технология оптимизации через обеспечение параллельного выполнения циклических операций. Разработка Graphite велась при участии компании IBM. Для обеспечения автоматического распараллеливания операций код Graphite будет комбинирован с генератором кода autopar (http://autopar.sourceforge.net/), основанным на реализации спецификаций OpenMP (http://en.wikipedia.org/wiki/OpenMP), созданной в рамках проекта GOMP (http://gcc.gnu.org/projects/gomp/).


Начальная поддержка автоматического распараллеливания появится в следующем релизе - GCC 4.4. Разработка позволит значительно увеличить производительность обычных приложений на многоядерных процессорах, созданных без использования специальных библиотек расп...

URL: http://www.phoronix.com/scan.php?page=news_item&px=NzEzNA
Новость: http://www.opennet.me/opennews/art.shtml?num=20697


Содержание

Сообщения в этом обсуждении
"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 11-Мрт-09 12:45 
Давно пора!

"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено anonymous , 11-Мрт-09 18:22 
Теперь зависший процесс будет грузить все ядра заместо одного?



"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено kay , 11-Мрт-09 12:49 
да, запоздали они, запоздали )

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено User294 , 11-Мрт-09 12:55 
Прикольно.Представляю себе как взлетит скорость.Правда как бы при таком масштабе изменений глюков не отхватить...

"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено Cobold , 11-Мрт-09 13:55 
На десктопах может быть даже будет иногда заметно. На серверах вряд ли, скорее даже будет мешать - там уже давно распараллеливают другими методами, эта самодеятельность только создаст фактор непредсказуемости. Вот для числодробилок это действительно интересно. Вы часто пользуетесь числодробилками? Шутка :)

"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено User294 , 11-Мрт-09 19:05 
>скорее даже будет мешать - там уже давно распараллеливают другими методами,
>эта самодеятельность только создаст фактор непредсказуемости.

А что, насильно привязать процесс к конкретному процессору (если вдруг оно реально зачем-то надо) не судьба?

>Вот для числодробилок это действительно интересно.
>Вы часто пользуетесь числодробилками? Шутка :)

Знаете, (де)кодирование видео и аудио - тоже числодробилка.Шифрование всякое, etc.Не будем ускорять, да? :)


"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено mag , 11-Мрт-09 13:18 
лишь бы не криво, а так лучше поздно чем никогда)

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 11-Мрт-09 14:16 
>эта самодеятельность только создаст фактор непредсказуемости.

По-видимому эта самодеятельность будет включаться специальным ключиком в командной строке вызова компилятора. А раз так, то никто никого не будет заставлять использовать эту фичу.


"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено Cobold , 11-Мрт-09 14:29 
Надо думать

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 11-Мрт-09 14:48 
Разработчики уже подумали за вас.

"В GCC 4.4 появится поддержка автоматического распараллеливан"
Отправлено Аноним , 11-Мрт-09 16:53 
Если бы распаралеливался foreach, то можно было бы быть спокойными, а если for, то можно и огрести неприятных эффектов

"В GCC 4.4 появится поддержка автоматического распараллеливан"
Отправлено Cobold , 11-Мрт-09 18:25 
>Если бы распаралеливался foreach, то можно было бы быть спокойными, а если
>for, то можно и огрести неприятных эффектов

Это Вы про ПХП ?


"В GCC 4.4 появится поддержка автоматического распараллеливан"
Отправлено . , 11-Мрт-09 21:47 
в частности

"В GCC 4.4 появится поддержка автоматического распараллеливан"
Отправлено 18498 , 12-Мрт-09 13:31 
>Если бы распаралеливался foreach, то можно было бы быть спокойными, а если
>for, то можно и огрести неприятных эффектов

Не бойся. Это компилятор будет определять включать распараллеливание или нет, глупых людей допускающих >0 false positive решений в данном вопросе не допустят


"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 11-Мрт-09 17:26 
Как же это интересно будет сделано? На каждый цикл будет создаваться несколько процессов/нитей на разных ядрах?

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено AlexusBlack , 11-Мрт-09 17:32 
Нафиг автоматику в этом деле, руками надёжнее и интереснее

"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено User294 , 12-Мрт-09 00:15 
>Нафиг автоматику в этом деле, руками надёжнее и интереснее

Я вижу только одну проблему: а вагон существующего софта кто перелопатит?Вы?А, ну флаг вам в руки.Можете начать с аудио-видео кодеков и шифрования :)


"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено Styx , 15-Мрт-09 06:45 
Железо не стоит на месте, и многие задачи, которые год назад имело смысл параллелить, сейчас спокойно обрабатываются в реальном времени на одном ядре. Скажем, на моем C2D E8500 одно ядро шифрует AES-256-CBC 100MB в секунду. Это сравнимо со скоростями дисков и сети, т.е. в большинстве случаев не является боттлнеком. Blowfish, например, еще быстрее. Про аудио кодеки вы вообще не весть к чему ляпнули - уже много лет не существует аудио кодеков, которые не укладываются в realtime. С видео тоже особых проблем нет - man mencoder | grep thread, к тому же видео оффлоудится в GPU со своей собственной параллельностью и гораздо большей эффективностью.
Короче, это автоматическое распараллеливание - фича для ленивых программистов, которая позволит в _некоторых_ случаях ускорить _некоторые_ алгоритмы. Разумеется, со своим оверхедом. А в `обычных приложениях' боттлнек вобщем-то и не в CPU, а в memory latency, так что серебряной пули нет :)

"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено DarkFlame , 22-Апр-09 17:47 
>Железо не стоит на месте, и многие задачи, которые год назад имело
>смысл параллелить, сейчас спокойно обрабатываются в реальном времени на одном ядре.

Мир состоит из одних персоналок? Только из современных?


"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 11-Мрт-09 17:50 
А это по-умолчанию включат?

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено Аноним , 12-Мрт-09 00:09 
Лучше не надо !!! Иногда второе ядро спасает... ;-(

"В GCC 4.4 появится поддержка автоматического распараллеливан"
Отправлено Аноним , 12-Мрт-09 00:30 
А я тут думал, что в 4.4 сейчас заморозка кода и такие крупные изменения войдут в 4.5, к примеру ....

"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено pavlinux , 13-Мрт-09 04:36 
Меня всегда радовали методы, используемые ДЖыСиСятами для параллельных вычислений, и особенно примеры в презентациях:

Этот цикл можно разогнать, хоть на 5 процессоров.

for ( i = 0; i < 5; i++)  
    S[i] = i;

---------------

Ну и тут, на 5 основных, каждый из которых так же по пять...

for ( i=0; i<5; i++ )
     for (j=0; j < 5; j++ )
          S[i][j] = S[i][j]+i*j;

Типа так (нулевой пропускаю)
k=1
for ( i = 0; j = k ; i < 5; i++ )
    S[i][j] = S[i][j]*k; ;

--------
k=2
for ( i = 0; j = k ; i < 5; i++ )
    S[i][j] = S[i][j]*k;

ну и так далее

k=Z

for ( i = 0; j = Z ; i < 5; i++ )
    S[i][j] = S[i][j]*k;

-------


Я это к чему вообще!?
Да к тому, что все результаты этих циклов известны заранее.
И 50% из них легко реализуются на указателях
остальные на 49% на препроцессоре, с генерацией БОЛЬШОЙ int ARRAY[65535][65535]
И 1% код для анализа, в котором страшно распараллеливать, - либо глюкнет, либо запутаешься.


Более интересные вещи, это генерация функций, которые буду в последствии,
уже в моей программе, сами распараллеливать, в зависимости от аргументов.

Тут можно распараллелить максимум на 4, минимум 0.

if ( a < 5 )
    S[i] = a;
if ( a > 25 )
    S[i] = a-25;
if ( a < 5 || (S[i] - a) > 8 )
    S[i-a] = 8-a;
if ( a > S[i] )
    S[i] = a-25;

Можно, загнать в бинарник 4 функции, которые раздельно отработают. Нафига!?
Мне нужно, что б само параллелилось на 4 CPU, когда 6 < a < 8, на 2 СPU, когда 5 < a < 25

Вы скажите, ну тогда впиши эти условия в начале! Ладно! А если x < a < y  :)


"В GCC 4.4 появится поддержка автоматического распараллеливан..."
Отправлено pavlinux , 13-Мрт-09 04:59 
> А если x < a < y  :)

Упс, мы не на Алголе :)


"В GCC 4.4 появится поддержка автоматического распараллеливания циклов"
Отправлено pavlinux , 13-Мрт-09 04:56 
Кстати sys_sched_setaffinity() и компания на кластерах работает?