[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Перекомпиляция основных программ



> В сообщении от Суббота 16 октября 2010 18:20:39 автор Н. Артём написал:
> > > >   Затем, что они используются в скриптах инициализации, в правилах udev,
> > > >   во всех остальных скриптах. И т.д. Т.е., если с каждого будет
> > > >   небольшой, незаметный прирост, в сумме, теоретически, может кое-что
> > > >   набраться.
> > >  Не должно.
> >  Почему?
> > > > > >    Они используются в скриптах. Повсеместно.
> > > > >   Используются. А при чём тут использование процессорной мощности?
> > > >   См. выше. "Скорость работы", по-идее, может увеличиться?
> > >  Пересобирать каждую новую версию придётся сильно дольше, чем выигранные
> > >  миллисекунды.
> >  Ну не так часто они и обновляются. А насчёт миллисекунд - вовсе не факт. В
> >  i386 нет даже MMX. Я не знаю как оптимизирует gcc, но множество операций,
> >  которые к мультимедиа никаким боком, гораздо быстрее исполняются, если их
> >  код генерируется с использованием команд MMX расширения. А уж если
> >  говорить о более новых расширениях... По-моему, тут нельзя без замеров
> >  однозначно сказать...
> Вам не мерить всякую фигню надо, а почитать про векторные расширения.
Блин, сколько сижу на своём старье, ни разу про них не слышал. Почитаю. Но сомневаюсь, что в P4 это есть. В P3 - нет на 100% (если, конечно, книжки не врут и у него внезапно не оказалось такой недокументированной возможности).

Сейчас посмотрел. Понял: это и есть SSE о котором я толком ничего не знаю...

> Основной смысл этих расширений.
> В процессор добавлены большие регистры (128бит и более) куда можно кинуть много небольших переменных и за раз что-то с ними сделать.
> Допустим вы складываете в цикле n-e кол-во 16битных целых. Программист может написать код, который использует эту возможность.
Честно, не думаю, что программисты будут этим заниматься. По крайней мере, для неспецифического ПО. Вот если компилятор умеет оптимизировать так, что их задействует...

> Ежели программист просто напишет плюсик, то в дело вступает компилятор. Ежели компилятору скажут, что можно использовать mmx, sse и прочие векторные расширения, то из программного кода он попытается вычленить те, куски, которые можно векторизировать. Даже в простейшем случае, приведенном выше, компилятор не будет знать что делать.
> А вдруг под кол-вом итераций (n) скрывается малое 
> число (1-15)?
> Компилятор, если возьмется векторизировать, должен отсечь кол-во итераций меньше 8 и досчитывать их без расширений(или добивать нулями).
> Будет работать этот код быстрее или медленнее - неизвестно. В реальном же коде если программист не подстраивался под компилятор, то компилятор вообще почти ничего не поймет. Запихнет эти инструкции в десятке-другом мест, причем с неизвестным результатом.
Именно gcc?

> Про зачатки векторизации в компиляторе gcc можно почитать сдесь 
> http://gcc.gnu.org/projects/tree-ssa/vectorization.html
Почитаю.


Reply to: