Аппаратное ускорение через OpenCL приземлилось в GEGL

Виктор Оливейра, работавший над продолжением проекта по реализации аппаратного ускорения отрисовки и вычислений в GEGL, перенёс свои наработки в основную ветку разработки.

Теперь GEGL пытается использовать аппаратное ускорение по умолчанию, а значит, это же пытается делать и GIMP (особенно ветка goat-invasion). Помимо отрисовки на GPU выполняются некоторые новые операции: gegl:opacity, gegl:threshold, gegl:over (Porter-Duff), color-temperature, invert, value-invert, whitebalance.

На самом деле, на OpenCL портировано ещё больше операций, но Виктор пока что скинул их в ветку opencl-ops, которая будет отсматриваться позднее. Вот эти операции:

  • vignette
  • pixelise
  • noise-reduction
  • gaussian-blur
  • motion-blur
  • c2g
  • mono-mixer
  • snn-mean
  • gegl:bilateral-filter
  • edge-sobel
  • gegl:edge-laplace
  • gegl:levels

Более чем половину из них написал Zhang Peixuan, сотрудник AMD, который курировал проект. Напоминаем, что добавлять в GEGL новые операции на OpenCL очень просто.

Что касается производительности, она зависит от типа операции. К примеру, простой box blur с большим радиусом выполняется на GPU примерно в 70 раз быстрее версии, вычисляемой CPU. Впрочем, после доработки многопоточности версия для CPU сама станет в несколько раз быстрее.

Кстати, Виктору Оливейре не пришлось специально под этот проект заказывать компьютер с GPU, поддерживающим OpenCL: AMD сами прислали ему ноутбук с новейшей видеокартой.

Сейчас Виктор занимается доработкой написанного кода до идеальной совместимости с веткой goat-invasion гимпа, чтобы следующая версия (v2.10) уже по максимуму использовала аппаратное ускорение. На текущий момент эта ветка GIMP уже требует GEGL из Git master.

Add a comment