I built on arm64 and had a look at the results
99% tests passed, 27 tests failed out of 2927

These failed:
 #502: itkPatchBasedDenoisingImageFilterTest0
 #503: itkPatchBasedDenoisingImageFilterTestGaussian
 #504: itkPatchBasedDenoisingImageFilterTestRician
 #505: itkPatchBasedDenoisingImageFilterTestPoisson
 #824: itkHDF5ImageIOTest
 #911: itkMINCImageIOTest3
 #920: itkMINCImageIOTest-COM-t1_z-_byte_cor
 #921: itkMINCImageIOTest-COM-t1_z+_byte_cor
 #922: itkMINCImageIOTest-COM-t1_z-_byte_sag
 #923: itkMINCImageIOTest-COM-t1_z+_byte_sag
 #924: itkMINCImageIOTest-COM-t1_z-_byte_trans
 #925: itkMINCImageIOTest-COM-t1_z+_byte_trans
 #1326: itkBSplineScatteredDataPointSetToImageFilterTest05
 #1402: itkSymmetricEigenAnalysisImageFilterTestOrderByValue
 #1403: itkSymmetricEigenAnalysisImageFilterTestOrderByMagnitude
 #1404: itkSymmetricEigenAnalysisImageFilterTestDoNotOrder
 #1731: itkSingleLevelSetsv4DenseImage2DTest
 #1733: itkSingleLevelSetsv4WhitakerImage2DTest
 #1734: itkSingleLevelSetsv4WhitakerImage2DTestThreads
 #1735: itkSingleLevelSetsv4MalcolmImage2DTest
 #1736: itkSingleLevelSetsv4ShiImage2DTest
 #1744: itkTwoLevelSetsv4WhitakerImage2DTest
 #1745: itkTwoLevelSetsv4MalcolmImage2DTest
 #1746: itkTwoLevelSetsv4ShiImage2DTest
 #2659: PythonReadDicomAndReadTag

and these two timed out after 1500s
 #686: itkFFTWF_FFTTest
 #687: itkFFTWF_RealFFTTest


I don't yet understand what all the test machinery output means (there
is a lot of it!) but most of these tests are image-based.  The testing
appears to run on an input image and compare the result with an
expected output image by generating a diff image. Looking at the diffs
visually the issues do not (so far) seem to be very significant.
e.g. #502-#504 are just a few pixels off. I don't know enough about
the algorithms here to know if they should be absolutely deterministic
across architectures. It looks to me as if the arm64 version of the
software will produce perfectly functional image analysis
in almost all cases - but there are a few cases there they are not
pixel-identical to the x86 ones, one file format that may not be read
quite correctly, and it may be very slow (probably due to missing
optimisations) on some actions (such as the FFTs).

None of that seems like sufficient reason to not build it at all.

Is there a mechanism for allowing some test failures? It seems to be
an all-or-nothing thing - either run no tests, or they all have to
pass before the build will complete - but I may be missing something
in all that machinery.

Initial attempt at analysis:
For #502-#504 differences only appear in the edge 4 pixels in the
62x62 test diff. So there is something about the edges that matters?

All 7 MINCImageIOTests produce identical diff images. The image file
is read in but all the lighter greys seem to be lost or the whole
image shifted lighter so the lighter detail is lost. That looks like
it is probably a genuine bug. 

Not sure what's going on with 1402-1404. The 3 inputs are identical
(blue 8x8) and the 3 outputs are identical (black 8x8). It's not
clear to me what is expected.

OK. Out of time for this today and it's clearly going to take a while
to investigate. Presumably the most useful thing here is to take this
upstream? I can rebuild this and run all the tests in 1.5 hours so it
doesn't take forever to test changes.

The whole log is humungous, at 156MB, so I've put it here:
http://wookware.org/files/insighttoolkit4_4.13.3withdata-dfsg1-3.1_arm64.build
rather than attach it. 

Attached is the trivial patch to enable the arm64 build.

Wookey
-- 
Principal hats:  Linaro, Debian, Wookware, ARM
http://wookware.org/
commit 14de4c42149854c4a34b865d05cbf038608e69a1
Author: Wookey <woo...@debian.org>
Date:   Wed Dec 9 14:29:52 2020 +0000

    Enable arm64 builds

diff --git a/debian/changelog b/debian/changelog
index e1ab55b..c7e2818 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+insighttoolkit4 (4.13.3withdata-dfsg1-3.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Enable arm64 builds (Closes: #724711)
+
+ -- Wookey <woo...@e123188-lin.cambridge.arm.com>  Wed, 09 Dec 2020 14:16:27 +0000
+
 insighttoolkit4 (4.13.3withdata-dfsg1-3) unstable; urgency=medium
 
   * source only upload to force rebuild Closes: #974759
diff --git a/debian/control b/debian/control
index 0c626a3..1cf7098 100644
--- a/debian/control
+++ b/debian/control
@@ -32,7 +32,7 @@ Vcs-Git: https://salsa.debian.org/med-team/insighttoolkit.git
 
 Package: libinsighttoolkit4.13
 Section: libs
-Architecture: amd64 i386
+Architecture: amd64 arm64 i386
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Image processing toolkit for registration and segmentation - runtime
  ITK is an open-source software toolkit for performing registration and
@@ -49,7 +49,7 @@ Description: Image processing toolkit for registration and segmentation - runtim
 
 Package: libinsighttoolkit4-dev
 Section: libdevel
-Architecture: amd64 i386
+Architecture: amd64 arm64 i386
 Depends: ${shlibs:Depends}, ${misc:Depends}, libinsighttoolkit4.13 (= ${binary:Version}), libgdcm-dev, libdcmtk-dev, libhdf5-dev, libdouble-conversion-dev, libexpat-dev, libnifti-dev, libminc-dev
 Recommends: libfftw3-dev, uuid-dev
 Conflicts: libinsighttoolkit-dev, libinsighttoolkit3-dev

Attachment: signature.asc
Description: PGP signature

Reply via email to