Multicore processors and linux?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Multicore processors and linux?

Gabriel Landini
Hi,
Is anybody running ImageJ with multicore processors in linux?
I have a quadcore machine running suse linux where the Convolver fails
intermittently and gives errors.

Has anybody else seen this?
Wayne suggested that this may be a JIT compiler error (if run with the JIT
compiler off, the error does not take place).

Regards,

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Multicore processors and linux?

Gabriel Landini
On Tuesday 21 August 2007, you wrote:
> Does the problem go away if you set "Parallel Threads for Stacks" in
> Edit>Options>Memory & Threads to 1? What are the error messages you get
> when the Convolver fails?

testing with today's latest build (1.39d)
in Java 1.5.0_12, no it does not go away:

running the convolver directly gives:

java.lang.ArrayIndexOutOfBoundsException

run("Lena (68K)");
run("Convolve...", "text1=[0 -1 0\n-1 4 -1\n0 -1 0\n] normalize");

a few times gave this:

java.lang.ArrayIndexOutOfBoundsException: 9
        at ij.plugin.filter.Convolver.convolveFloat(Convolver.java:232)
        at ij.plugin.filter.Convolver.convolve(Convolver.java:173)
        at ij.plugin.filter.Convolver.run(Convolver.java:55)
        at
ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:231)
        at
ij.plugin.filter.PlugInFilterRunner.<init>(PlugInFilterRunner.java:102)
        at ij.IJ.runPlugIn(IJ.java:133)
        at ij.Executer.runCommand(Executer.java:95)
        at ij.Executer.run(Executer.java:49)
        at java.lang.Thread.run(Thread.java:595)

Sometimes, the convolver works fine, but once it starts giving errors, it does
not work anymore.

Wayne suggested switch off the JIT compiler with the option -Xint
and this avoids the problem (at the expense of a significant drop in
processing speed).

Today 1.6.0 seems fine but a couple of weeks ago I got errors in 1.6.0 too.

I just came across a jdk 1.7 http://download.java.net/jdk7/binaries/
Has anybody tried this?

Regards,

Gabriel
Reply | Threaded
Open this post in threaded view
|

Re: Multicore processors and linux?

Justin McGrath
Using ImageJ 1.39d on SuSE 10.2 with an Intel Core Duo and I don't
seem to have any problem with the convolver.  I ran the macro you
provided about 10 times and nothing happened.  How often do you see
the error?

Justin

8/21/07, Gabriel Landini <[hidden email]> wrote:

> On Tuesday 21 August 2007, you wrote:
> > Does the problem go away if you set "Parallel Threads for Stacks" in
> > Edit>Options>Memory & Threads to 1? What are the error messages you get
> > when the Convolver fails?
>
> testing with today's latest build (1.39d)
> in Java 1.5.0_12, no it does not go away:
>
> running the convolver directly gives:
>
> java.lang.ArrayIndexOutOfBoundsException
>
> run("Lena (68K)");
> run("Convolve...", "text1=[0 -1 0\n-1 4 -1\n0 -1 0\n] normalize");
>
> a few times gave this:
>
> java.lang.ArrayIndexOutOfBoundsException: 9
>         at ij.plugin.filter.Convolver.convolveFloat(Convolver.java:232)
>         at ij.plugin.filter.Convolver.convolve(Convolver.java:173)
>         at ij.plugin.filter.Convolver.run(Convolver.java:55)
>         at
> ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:231)
>         at
> ij.plugin.filter.PlugInFilterRunner.<init>(PlugInFilterRunner.java:102)
>         at ij.IJ.runPlugIn(IJ.java:133)
>         at ij.Executer.runCommand(Executer.java:95)
>         at ij.Executer.run(Executer.java:49)
>         at java.lang.Thread.run(Thread.java:595)
>
> Sometimes, the convolver works fine, but once it starts giving errors, it does
> not work anymore.
>
> Wayne suggested switch off the JIT compiler with the option -Xint
> and this avoids the problem (at the expense of a significant drop in
> processing speed).
>
> Today 1.6.0 seems fine but a couple of weeks ago I got errors in 1.6.0 too.
>
> I just came across a jdk 1.7 http://download.java.net/jdk7/binaries/
> Has anybody tried this?
>
> Regards,
>
> Gabriel
>
Reply | Threaded
Open this post in threaded view
|

Re: Multicore processors and linux?

Gabriel Landini
On Friday 24 August 2007, Justin McGrath wrote:
> Using ImageJ 1.39d on SuSE 10.2 with an Intel Core Duo and I don't
> seem to have any problem with the convolver.  I ran the macro you
> provided about 10 times and nothing happened.  How often do you see
> the error?

Hi Justin,
Very often, after running the macro 2 or 3 times.
However version 1.39d (the one you are using now) includes a strange hack that
prevents the code to give the error.
More specifically the new code (1 line) just checks whether the indexes of the
kernel values are larger than the expected value when processing the borders
of the image:

     if (i>=kernel.length)
        IJ.log("filter kernel index error: "+i);

I do not know why this prevents the error, but my guess is that it may change
the execution sequence in the JIT compiler. (BTW the error message is never
printed to the log window).

Thanks for checking!

Gabriel