M> Unfortunately it's not a simple answer, and I haven't had a lot of time M> yet since getting back from London. The most useful place for MT is in M> software rendering. There are not many other places in the codebase M> which would really benefit from it.
M> -mental
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors. I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day? And tell me please as more as you can about this problem in Inkscape.
On Fri, 19 Feb 2010 09:12:39 +0300 Dmitry <dmitry.jurasov@...400...> wrote:
M> Unfortunately it's not a simple answer, and I haven't had a lot of time M> yet since getting back from London. The most useful place for MT is in M> software rendering. There are not many other places in the codebase M> which would really benefit from it.
So which makes more sense, CPU multi-threading for rendering, or using a library that can leverage the GPU for accelerated rendering? I imagine there are parts of the rendering process that can't be pushed on to the GPU. I'm thinking of the drawings with huge numbers of nodes.
Cheers -Terry
M> -mental
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors. I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day? And tell me please as more as you can about this problem in Inkscape.
On Fri, Feb 19, 2010 at 9:12 AM, Dmitry wrote:
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors.
Dear Dmitry :)
In free and open source software project, much like almost everywhere else, things are done when there is someone to do them.
Proper implementation of multithreading is not like writing Yet Another Text Editor :) One really needs particular programming skills for that.
The aforementioned leveraging of computations to GPU is often considered as a "silver bullet" of some sort which it really isn't. I do believe that a lot of optimizations could be done without either GPU or multithreading (look at Xara Xtreme, e.g.). However if you find a way to implement multithreading so that things are really faster, I dare say nobody's going to complain :)
In my opinion the best solution these days is to use something like OpenCL so that parallel computation could be leveraged to both CPUs, GPUs and network computers. While being new, this framework really is the most promising technology today. Supported by open drivers, too.
I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day?
Are you referring to GSoC by the way?
Alexandre
2010/2/19 Alexandre Prokoudine <alexandre.prokoudine@...400...>
On Fri, Feb 19, 2010 at 9:12 AM, Dmitry wrote:
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors.
Dear Dmitry :)
In free and open source software project, much like almost everywhere else, things are done when there is someone to do them.
Proper implementation of multithreading is not like writing Yet Another Text Editor :) One really needs particular programming skills for that.
The aforementioned leveraging of computations to GPU is often considered as a "silver bullet" of some sort which it really isn't. I do believe that a lot of optimizations could be done without either GPU or multithreading (look at Xara Xtreme, e.g.). However if you find a way to implement multithreading so that things are really faster, I dare say nobody's going to complain :)
In my opinion the best solution these days is to use something like OpenCL so that parallel computation could be leveraged to both CPUs, GPUs and network computers. While being new, this framework really is the most promising technology today. Supported by open drivers, too.
I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day?
Are you referring to GSoC by the way?
Alexandre
Hello, Alexandre! Not sure about GSoC, but I want to participate. But first goal for me is to complete master's thesis. I want to know what is the good way to learn code of Inkscape, especially those parts, that would be parallelized. And what essentially can be parallelized - some algorithms or something else?
On Fri, 2010-02-19 at 09:12 +0300, Dmitry wrote:
M> Unfortunately it's not a simple answer, and I haven't had a lot of time M> yet since getting back from London. The most useful place for MT is in M> software rendering. There are not many other places in the codebase M> which would really benefit from it.
M> -mental
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors. I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day? And tell me please as more as you can about this problem in Inkscape.
Dmitry,
Honestly, helping to switch our renderer to cairo would be the way to go with your time and effort as our plan is to head that direction (meaning if you multithread our current renderer, your work eventually be lost). If you wanted to create a branch on Launchpad that you start this work in, I'm sure that after a little time, others would gladly join you (provided some progress is being made). Please let us know if you are interested.
Cheers, Josh
2010/2/19 Joshua A. Andler <scislac@...400...>:
On Fri, 2010-02-19 at 09:12 +0300, Dmitry wrote:
M> Unfortunately it's not a simple answer, and I haven't had a lot of time M> yet since getting back from London. The most useful place for MT is in M> software rendering. There are not many other places in the codebase M> which would really benefit from it.
M> -mental
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors. I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day? And tell me please as more as you can about this problem in Inkscape.
Dmitry,
Honestly, helping to switch our renderer to cairo would be the way to go with your time and effort as our plan is to head that direction (meaning if you multithread our current renderer, your work eventually be lost). If you wanted to create a branch on Launchpad that you start this work in, I'm sure that after a little time, others would gladly join you (provided some progress is being made). Please let us know if you are interested.
Cheers, Josh
As I see, the new renderer will be based on cairo. Is this cairo renderer complete now or its source codes included for future finishing? (I saw some files: cairo-renderer, cairo-renderer-context and others). And if it is not complete what part of source should I work on now to have my work lost and useless?
On Fri, 2010-02-19 at 09:12 +0300, Dmitry wrote:
M> Unfortunately it's not a simple answer, and I haven't had a lot of time M> yet since getting back from London. The most useful place for MT is in M> software rendering. There are not many other places in the codebase M> which would really benefit from it.
M> -mental
Hello MenTaLguY!
I would like to know why multi-threading haven't been realized in Inkscape for so long time, many users wrote that they would like to have full power of theit multi-core processors. I'm starting doing this work and I want to know what are the difficulties, is it real to complete in 2.5 months working 8 hours per day? And tell me please as more as you can about this problem in Inkscape.
Dmitry,
Honestly, helping to switch our renderer to cairo would be the way to go with your time and effort as our plan is to head that direction (meaning if you multithread our current renderer, your work eventually be lost). If you wanted to create a branch on Launchpad that you start this work in, I'm sure that after a little time, others would gladly join you (provided some progress is being made). Please let us know if you are interested.
Cheers, Josh
As I see, the new renderer will be based on cairo. Is this cairo renderer complete now or its source codes included for future finishing? (I saw some files: cairo-renderer, cairo-renderer-context and others). And if it is not complete what part of source should I work on now to have my work lost and useless?
Please, can you tell me what are your plans for renderer and interface to the renderer? I would like to know what part of code should I refactor to be suitable for multiprocessor systems, as I see if I do it for existing renderer my work will be useless.
2010/3/16 Дмитрий Юрасов <dmitry.jurasov@...400...>:
Please, can you tell me what are your plans for renderer and interface to the renderer? I would like to know what part of code should I refactor to be suitable for multiprocessor systems, as I see if I do it for existing renderer my work will be useless.
There are 4 things that can be done:
a) Implement an OpenGL and/or OpenVG backend in Cairo. b) Implement a Cairo state tracker in Gallium3D (if you only care about FOSS systems). c) Convert the code in src/libnr, src/libnrtype and src/filters to use Cairo and Pango drawing operations. d) Parallelize filter code.
Only d) involves parallel programming.
I wanted to do c) this year, but your application might well turn out to be better :)
Regards, Krzysztof
On 3/17/10, Krzysztof Kosiński wrote:
There are 4 things that can be done:
a) Implement an OpenGL and/or OpenVG backend in Cairo.
Already done several months ago. Was mentioned in this list too.
Now, OpenCL (parallel computing with multithreading, multiGPU, network computers) is something Cairo guys would love to have, but can't right now because they have no client to pay for that yet.
Alexandre
2010/3/17 Alexandre Prokoudine <alexandre.prokoudine@...400...>:
On 3/17/10, Krzysztof Kosiński wrote:
There are 4 things that can be done:
a) Implement an OpenGL and/or OpenVG backend in Cairo.
Already done several months ago. Was mentioned in this list too.
Indeed, I must have missed it. http://cairographics.org/news/cairo-1.9.6/
Now, OpenCL (parallel computing with multithreading, multiGPU, network computers) is something Cairo guys would love to have, but can't right now because they have no client to pay for that yet.
For us, it would be better to implement filters using OpenCL, since this won't be accelerated by Cairo.
Regards, Krzysztof
participants (6)
-
Alexandre Prokoudine
-
Dmitry
-
Joshua A. Andler
-
Krzysztof Kosiński
-
Terry Brown
-
Дмитрий Юрасов