LINUX.ORG.RU

[C] IPP для OpenSource

 


0

1

Существует-ли халявная версия IPP? Или может есть какой-то другой подобный проект, предоставляющий быстрые алгоритмы. Конкретно мне нужны алгоритмы преобразования цветовых пространств. Типа YUV -> RGB, RGBA -> Monochrome...

Конкретно мне нужны алгоритмы преобразования цветовых пространств

В педивикии же все есть. Вычислений там немного, так что достаточно openMP применить, чтобы распараллелить вычисления. Ну, а если уж очень быстро надо считать и при этом визуализировать посредством openGL, можно и GPU привлечь. Там тоже совсем ничего сложного нет.

Eddy_Em ☆☆☆☆☆
()

framewave от amd. почти полный аналог ipp, только халявный

Reset ★★★★★
()
Ответ на: комментарий от Eddy_Em

openmp тут не поможет, данные вещи надо векторизовать с помощью sse, а opengl (а точнее glsl) полезен только при выводе на экран

Reset ★★★★★
()
Ответ на: комментарий от Reset

данные вещи надо векторизовать с помощью sse

И что, реально производительность повысится? А можно пример (или это и есть framewave)? Самому интересно встроить эти алгоритмы в свой велосипед.

А насчет opengl я к тому, что если используется отрисовка картинки, все равно придется загонять ее в память видеокарты - так что производительность от этого не ухудшится, просто же обсчитывать изображения на видеокарте скажется сильным снижением производительности из-за того, что основную массу времени заберет копирование данных туда-сюда.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Reset

И да, все-таки, зацикливаться на недопроцессорах от штеуда - как-то хреново. ИМХО, надо архитектурно-независимый алгоритм реализовать, или же сразу оптимизировать еще по крайней мере под MIPS и ARM.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Такого алгоритма не существует. OpenMP для таких вещей не работает. Под каждый процессор надо затачивать отдельно.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Спасибо, поковыряюсь - может, что-нибудь ценное оттуда можно будет стащить (правда, к сожалению, там все в плюсах - задолбаюсь в си конвертировать).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Reset

OpenMP для таких вещей не работает

Да ладно: просто вместо последовательного прохода одним потоком по всему изображению, пробегаться в N потоков по каждой из 1/N части изображения. У меня на четырехъядернике прирост производительности просто за счет использования openMP составлял до ~3 раз.

Eddy_Em ☆☆☆☆☆
()

To Анонимус: Человечище, спасибо :) Помнил же что есть опенсорсная версия, а найти не мог.

To Reset: Спасибо за наводку, посмотрю, может и framewave использую

To всем: Выдыхайте :)

dmitryalexeeff
() автор топика
Ответ на: комментарий от Eddy_Em

Во-первых изображение должно вмещаться в кеш, а если оно не влезает, то над каждым пикселем должно совершаться преобразование отличное от O(1) по сложности, тогда будет прирост. Для преобразований YUV->RGB и наоборот это не выполняется. А если алгоритм работает только для определенных размеров, то я считаю, что он не работает вообще.

Reset ★★★★★
()
Ответ на: комментарий от Eddy_Em

Конечно не будут, у них всё заточено под x86. Тебе скорость нужна или портабельность? Одновременно и то и то недостижимо.

Reset ★★★★★
()
Ответ на: комментарий от Eddy_Em

Есть, но если бы оно работало эффективно, то таких монстров как framewave никто бы не создавал.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Reset

над каждым пикселем должно совершаться преобразование отличное от O(1) по сложности

что ты такое говоришь-то!

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Хорошо, с O(1) не очень корректно. Пусть будет некое сложное действие, которое занимает ощутимое время. Иначе всё упрется в память и никакого толку от потоков не будет. Для примера blas level 1,2 практически не параллелятся по этим причинам.

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.