I'm writing some image processing software to detect bubbles in oil at work. One of the image filters I need (Perona Malik) seems like it will take a long time to compute. (It involves solving some partial differential equations numerically). One possible solution I'm thinking of investigating is using a super computer cluster. I've never had any experience with Beowulf clusters or the like ... Can anyone suggest some technologies I should consider. Any pros and cons of the different options would be useful to know as well.


  • $\begingroup$ You want suggestions on parallel PDE solvers? $\endgroup$ – boyfarrell Jul 1 '13 at 9:23
  • 2
    $\begingroup$ Depends on the size of your problems. Nowadays, you can solve many problems on a GPU with OpenCL or CUDA. I don't know whether you can parallelize Perona Malik. It seems to be the case: mathworks.co.uk/matlabcentral/fileexchange/… $\endgroup$ – vanCompute Jul 1 '13 at 9:59
  • $\begingroup$ Hi sav, and welcome to scicomp! I just want to clarify... Does the software that your using have allow you to run it in parallel? Otherwise, a cluster would not improve your performance. $\endgroup$ – Paul Jul 1 '13 at 14:59
  • $\begingroup$ Hi, thanks for your comments, I am interested in Parallel PDE solvers. The paper that I read on perona-malik suggested parallel processing was applicable, although I still haven't sorted out all the details. Using a GPU is another option that I'm considering $\endgroup$ – sav Jul 2 '13 at 0:16
  • $\begingroup$ How big are your images, and how many of them do you need to apply the filter to? Do you have access to a parallel computer at your company, or do you plan to buy a computer? You could pretty quickly implement and parallelize this with FEniCS and PETSc if you were so inclined. $\endgroup$ – Bill Barth Jul 2 '13 at 1:37

Before you invest in either a cluster or a supercomputer (I think they're different beasts, others may disagree) I suggest you invest in a beefy desktop workstation, maybe 2 x 4- or 6-core processors. You can use this to try out all your parallelisation options -- MPI, OpenMP, CUDA, OpenCL (these two will need a GPU), probably others. Your experience on the workstation will provide useful input to your decision on further hardware purchases.

| cite | improve this answer | |

Ok, so if I want to go down the GPU route I have a number of options:

Shader languages

  • HLSL

    • use with xna
  • GLSL

    • use with OpenTk
  • Cg

    • use with Unity

I'm thinking of using OpenTk because it lets me use the GPU and integrates with monodevelop and visual studio which I use at work for other projects. It also alows me to use OpenCL if I should need it.

| cite | improve this answer | |
  • $\begingroup$ Why would you want to use shader languages? CUDA, OpenCL, AMP, Numba Pro, Arrayfire, etc, etc seem like better choices? Sure you could do it with shaders, but it's not what they were made for and it's more cumbersome to boot (in my opinion) $\endgroup$ – LKlevin Jul 5 '14 at 16:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.