[argyllcms] Re: dispcal and "conjgrad failed" error

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Fri, 01 Sep 2006 13:32:43 +1000

Pablo d'Angelo wrote:

I have just received my new DTP-94, and started playing around with it.
I'm using ubuntu dapper on AMD64. I also managed to compile the source after
tweaking the Jamfiles, but the resulting dispcal always failed:

pablo@svalbart:~/src/argyll-0.60-jam/spectro$ ./dispcal -r
dispcal: Error - Unable to open the display
pablo@svalbart:~/src/argyll-0.60-jam/spectro$

Sorry, not much idea about that (apart from the posted fix for the XChangeProperty 64 bit problem). What does "dispcal -?" do ? Does it list any available displays ?

After that, I have downloaded the linux binaries from the argyllcms website.
(including patch2 update). They seem to work fine, until I get a "dispcal:
Error - Conjgrad failed" error while running:

pablo@svalbart:~/tmp/argyll-bin/bin$ sudo ./dispcal -t 6500 -e -y l -v  -c 1
 FSC-S19_argyll.cal

This is I think, symptomatic of a particular combination of readings. Whether the readings are reasonable and should be handled, I can't tell, because noone has managed to capture a set.

I tried twice and it always got the error after a short computation. The
stdout logfile is attached (failed_stdout.txt)

The computation is refining a model of the device behaviour. "Conjgrad failed" indicates that it failed to converge after a given number of iterations. It could simply be that I've set the maximum iterations too small, or should not error out on this event. Without the instrument readings, it's hard to know.

Then I looked at this list and saw that this error has been seen before, and
decided to create a log file using the -D option as well. Now the
interesting thing is: This time it didn't crash!

pablo@svalbart:~/tmp/argyll-bin/bin$ sudo ./dispcal -D -t 6500 -e -y l -v
-c 1  FSC-S19_argyll.cal 2>stderr.log

The respective logs (successful_run_stdout.txt and
successful_run_stderr.txt) are also attached.

During the successful run, I just started dispcal and jumped straigt to the
calibration, 6). In the previous runs I had adjusted the display using
options 1 to 5 (sequentially).

So dispcal seems to break somehow if the options 1-5 are used before option
6, the final calibration.

Possibly it's as you say, a dependence between the two pieces of code, or it could also just be coincidence, that on this run, the readings from the instrument didn't trigger the problem.

The workaround is to quit dispcal after adjusting the monitor, restart
dispcal and then just do the calibration.

I'm not convinced this will always work. In my testing, I've never noticed such a dependence, nor have I ever seen the "Conjgrad failed" error. This is one of the things that makes me suspect that it's to do with the particular readings, and that none of the displays I have create the type of readings that trigger this problem.

If you re-adjust you monitor back to something like it
was before you adjusted it, and then run it (skipping
the adjustment phase), do you get this "Conjgrad failed"
error again ?

If so, can you send me a log with -D, so that I can
track down what causes it ?

[Neither of your log files were attached BTW]

thanks,
        Graeme Gill.

Other related posts: