[Insight-users] Exceptions while executing example "DigitallyReconstructedRadiograph1" on a dual CPU machine

Miller, James V (Research) millerjv at crd.ge.com
Thu Apr 7 10:21:17 EDT 2005


Interestingly enough we were just trying to run this example in house with the same intermittent problem you report.
 
Looking at the RayCast ImageFunction code, it is definately not thread safe.  The ResampleImageFilter however will always try to run across multiple threads if there are multiple processors (which means calling the RayCast ImageFunction code across multiple threads).
 
The short term fix is to set the NumberOfThreads on the ResampleImageFilter to 1.
 
filter->SetNumberOfThreads(1);
 
The long term fix is that we'll see how to make this RayCast function threadsafe.
 
Jim
 

	-----Original Message----- 
	From: insight-users-bounces at itk.org on behalf of Stefan Wesarg 
	Sent: Thu 4/7/2005 8:44 AM 
	To: Insight-users at itk.org 
	Cc: 
	Subject: [Insight-users] Exceptions while executing example "DigitallyReconstructedRadiograph1" on a dual CPU machine
	
	

	Hello,
	
	I compiled and linked the "DigitallyReconstructedRadiograph1" example
	into an executable file that is perfectly running on a single processor
	machine. However, if I run it on a dual processor machine it crashs -
	sometimes (yes, only sometimes) throwing an exception. Switching to
	debugging after that exception reveals problems during the execution of
	the code in the class <itk::RayCastInterpolateImageFunction>. The code
	crashes in an unpredictable way in several methods:
	- InitialiseVoxelPointers() - "The ray traversal direction is unset "
	- GetCurrentIntensity() - "The ray traversal direction is unset "
	- CalcPlanesAndCorners() - "Division by zero (planes) "
	- AdjustRayLength() - "The ray traversal direction is unset "
	
	Again, this problem occurs only if the program is started on a dual
	processor machine. (The executable has been built on that same machine.)
	That's why I guess that it might be related to the threaded execution of
	the <itk::ResampleImageFilter>.
	I executed the code in both ways, without providing input image data and
	by specifying a 3D input data set (MHD format), and also changing values
	for the DRR generation parameters from the default ones did not make any
	change.
	
	Can anybody confirm/replicate that behavior? Any ideas how to overcome
	this problem?
	
	My configuration is:
	- ITK 2.0.1 (built with "BUILD_SHARED_LIBS=OFF")
	- Win2k
	- Visual C++ 6
	- Dual Athlon MP 1800+
	
	Thanks and regards,
	Stefan
	
	---------------------------------------------------------------------
	Dipl.-Phys. Stefan Wesarg
	
	Fraunhofer Institute for Computer Graphics
	Cognitive Computing and Medical Imaging (A7)
	Fraunhoferstr. 5, 64283 Darmstadt, Germany
	---------------------------------------------------------------------
	email:  stefan.wesarg at igd.fraunhofer.de
	http://a7www.igd.fhg.de/persons/swesarg/swesarg.html
	
	phone:  ჽ 6151 - 155 511
	fax:    ჽ 6151 - 155 480
	---------------------------------------------------------------------
	
	



More information about the Insight-users mailing list