DIPlib / diplib

Quantitative Image Analysis in C++, MATLAB and Python
https://diplib.org
Apache License 2.0
214 stars 48 forks source link

DIPlib test fails with larger number of threads. #53

Closed asmagen closed 4 years ago

asmagen commented 4 years ago

I've successfully installed PyDIP using pip3, but I'm having trouble importing in python3. I saw the previous discussions of this issue but First I encountered this: import PyDIP as dip Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'PyDIP' Then made sure to library path: export PYTHONPATH="${PYTHONPATH}:/Users/Assaf/Library/Python/3.7/bin" as well as restart terminal and uninstall/install again. Finally I ran >>> import pydip as dip which worked without error with the import, but then failed in reading an image: >>> image = dip.ImageRead('example.png') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'pydip' has no attribute 'ImageRead'

Following a previous discussion here, I tried cloning the DIPlib repo and execute make but it fails:

make[2]: *** [dipimage/Contents.m] Error 1
make[1]: *** [dipimage/CMakeFiles/contents.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 79%] Linking CXX shared library libDIP.dylib
[ 79%] Built target DIP
make: *** [all] Error 2

Any advice on how to resolve this? Thanks

crisluengo commented 4 years ago

Sorry, you cannot install PyDIP through pip.

We have a binary distribution for Windows. It looks like you are on a Mac, you'll have to compile from sources. The good news is that it's not nearly as complicated as it sounds. We have detailed instructions here.

asmagen commented 4 years ago

Apparently some tests are failing:

[ 98%] Built target DIP
Scanning dependencies of target unit_tests
[100%] Building CXX object src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o
[100%] Linking CXX executable unit_tests
[100%] Built target unit_tests
Scanning dependencies of target check
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
[dip::testing::CompareImages] Maximum absolute error = 58.493 > 0.015
===============================================================================
/Users/Assaf/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/Users/Assaf/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     70 passed |      1 failed |      0 skipped
[doctest] assertions:   2368 |   2367 passed |      1 failed |
[doctest] Status: FAILURE!
make[3]: *** [src/CMakeFiles/check] Error 1
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
make: *** [check] Error 2
crisluengo commented 4 years ago

This is strange, I have never seen that test fail.

There must be something about your configuration? Could you please share the output of cmake in your build directory?

Thanks!

asmagen commented 4 years ago

This is about all the outputs I got while running the installation instructions:

AMagenMacBook:target Assaf$ brew install cmake

Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
bcoin                  emacs-dracula          go-jsonnet             pass-git-helper        trimage
beancount              flash                  gobo                   rcm                    volta
bootloadhid            geph2                  inxi                   semtag                 vroom
confd                  git-remote-codecommit  llvm@9                 tanka                  wolfmqtt
dolt                   gmailctl               minipro                tengo
==> Updated Formulae
cairo ✔                                gnome-latex                            offlineimap
gettext ✔                              gnome-recipes                          okteto
glib ✔                                 gnu-smalltalk                          ola
libffi ✔                               gnustep-make                           olsrd
libxml2 ✔                              gnutls                                 omniorb
openssl@1.1 ✔                          go                                     oniguruma
pixman ✔                               go-bindata                             onscripter
tbb ✔                                  go@1.13                                opa
abcmidi                                gobject-introspection                  open-completion
acpica                                 godep                                  open-zwave
adios2                                 goofys                                 openapi-generator
adwaita-icon-theme                     googler                                opencc
afflib                                 goolabs                                opencolorio
aliyun-cli                             goreleaser                             openconnect
angular-cli                            gprof2dot                              opencv
anjuta                                 gpsd                                   opencv@3
ansible                                grafana                                openfortivpn
ansible@2.8                            grails                                 openimageio
antibody                               grakn                                  openjdk@11
anycable-go                            graph-tool                             openrct2
apache-arrow                           graphite2                              opensaml
apache-geode                           grex                                   opensubdiv
apib                                   grin                                   openttd
apibuilder-cli                         grip                                   openvpn
apollo-cli                             groonga                                operator-sdk
arcade-learning-environment            groovy                                 ortp
arduino-cli                            groovysdk                              osmosis
armadillo                              grpc                                   ospray
artifactory                            grpcurl                                otf2
asciidoctor                            gsoap                                  p11-kit
asio                                   gst-python                             pachi
ask-cli                                gtk+3                                  pagmo
assh                                   gtk-doc                                paket
astrometry-net                         gtranslator                            par
asymptote                              guile                                  parallelstl
atk                                    haproxy                                passenger
atlassian-cli                          harfbuzz                               pc6001vx
aubio                                  hcloud                                 pcl
autopep8                               healpix                                pdal
aws-cdk                                helm@2                                 pdfpc
aws-elasticbeanstalk                   helmfile                               pdftk-java
aws-es-proxy                           helmsman                               pdftoipe
aws-google-auth                        hevea                                  pdns
aws-sdk-cpp                            highlight                              pegtl
awscli                                 hledger                                percona-server
awsume                                 homeassistant-cli                      perl
axel                                   homebank                               perl@5.18
azcopy                                 hopenpgp-tools                         pgcli
azure-cli                              hsd                                    pgformatter
b2-tools                               httpd                                  php
b3sum                                  httpie                                 php-code-sniffer
baidupcs-go                            hugo                                   php-cs-fixer
balena-cli                             hwloc                                  php@7.2
ballerina                              i2pd                                   php@7.3
bandwhich                              iam-policy-json-to-terraform           phplint
bareos-client                          ice                                    phpmd
bartycrouch                            idnits                                 phpstan
basex                                  igv                                    phpunit
bat                                    imagemagick                            pianobar
bazel                                  imagemagick@6                          picard-tools
bazelisk                               imapsync                               pkg-config
bear                                   imgproxy                               plantuml
bedops                                 inadyn                                 pnpm
bee                                    influxdb                               polynote
benthos                                instead                                poppler
bento4                                 internetarchive                        postgrest
bettercap                              ipmiutil                               prestosql
bib-tool                               ipopt                                  prettier
bibclean                               ipython                                procs
bibutils                               ircd-hybrid                            profanity
binaryen                               irrtoolset                             prometheus
bind                                   istioctl                               proteinortho
bindfs                                 itstool                                protobuf@3.6
binwalk                                janet                                  protoc-gen-go
biosig                                 jboss-forge                            pspg
bison                                  jenkins                                pueue
bitrise                                jenkins-lts                            pulp
blis                                   jetty                                  pulumi
bluepill                               jetty-runner                           pushpin
blueutil                               jflex                                  puzzles
bmake                                  jfrog-cli-go                           py3cairo
boost-build                            joplin                                 pybind11
boost-python3                          jp2a                                   pyenv
boot-clj                               jruby                                  pygobject3
borgmatic                              jsdoc3                                 pympress
boringtun                              json-fortran                           pypy
botan                                  juju                                   pypy3
breezy                                 jupyterlab                             pyqt
broot                                  jython                                 pytouhou
buildkit                               k3d                                    pyvim
buku                                   kafka                                  q
bumpversion                            kapacitor                              qalculate-gtk
bundletool                             katago                                 qcachegrind
byacc                                  kcptun                                 qcli
bzt                                    kepubify                               qjackctl
c-blosc                                keydb                                  qmmp
cabal-install                          khard                                  qpdf
cacli                                  killswitch                             qscintilla2
caffe                                  kitchen-sync                           quantlib
calceph                                kotlin                                 questdb
calcurse                               kpcli                                  radare2
cargo-completion                       krakend                                rakudo
carla                                  krb5                                   rakudo-star
cartridge-cli                          kubebuilder                            rancher-cli
cassandra                              kubecfg                                raylib
castxml                                kubernetes-cli                         rdiff-backup
cataclysm                              kubeseal                               re-flex
ccache                                 kyma-cli                               re2
cdk                                    languagetool                           redis
cdk8s                                  lazygit                                regina-rexx
ceres-solver                           le                                     remarshal
cfn-lint                               lf                                     remind
cgns                                   lft                                    repo
chafa                                  lgogdownloader                         rex
chakra                                 libaacs                                rgbds
chamber                                libbluray                              rgxg
chapel                                 libcbor                                ripgrep
cheat                                  libdca                                 ripgrep-all
checkstyle                             libdvdnav                              rke
chromaprint                            libdvdread                             robotfindskitten
chronograf                             libfido2                               rom-tools
chuck                                  libflowmanager                         root
cimg                                   libfreenect                            rpm
citus                                  libgit2                                ruby
cjdns                                  libgit2-glib                           ruby-build
cjson                                  libgsf                                 ruby@2.4
clojure-lsp                            libgsm                                 ruby@2.5
closure-compiler                       libjson-rpc-cpp                        ruby@2.6
cmake                                  libmaa                                 s-nail
codequery                              libntlm                                s3cmd
colordiff                              libomp                                 sagittarius-scheme
comby                                  libopenmpt                             salt
composer                               libpeas                                samurai
conan                                  libphonenumber                         sbcl
contentful-cli                         libplctag                              sbt
convox                                 libpq                                  schema-evolution-manager
coq                                    libprotoident                          scipy
couchdb                                libpst                                 scummvm
crc                                    libqalculate                           sd
credstash                              librdkafka                             sdl2
cryptominisat                          librealsense                           securefs
crystal                                librsvg                                serverless
csound                                 librsync                               shellcheck
csvq                                   libsecret                              shfmt
cvs                                    libsigc++                              shibboleth-sp
cxxtest                                libsignal-protocol-c                   shunit2
cypher-shell                           libssh                                 signal-cli
cython                                 libtorrent-rasterbar                   silk
dafny                                  libtrace                               simh
dar                                    libuninameslist                        simple-scan
davmail                                libupnp                                singular
dcm2niix                               libuv                                  sip
ddclient                               libvirt                                siril
ddgr                                   libwbxml                               sispmctl
deno                                   libwps                                 sk
dependency-check                       libyaml                                skaffold
detekt                                 libzdb                                 skopeo
devspace                               libzt                                  snakemake
dfmt                                   libzzip                                snort
dhall                                  link-grammar                           softhsm
dhall-json                             linkerd                                solr
dhall-lsp-server                       liquibase                              sonobuoy
dhall-yaml                             literate-git                           spim
dialog                                 llnode                                 spiped
dict                                   llvm                                   spirv-cross
diff-pdf                               llvm@6                                 spirv-tools
diffoscope                             llvm@7                                 sqlmap
django-completion                      llvm@8                                 squid
dmd                                    lmod                                   src
dnsmasq                                logstash                               sslmate
dnstwist                               logtalk                                sslyze
dnsviz                                 lsd                                    starship
docfx                                  lsdvd                                  stella
docker-compose                         luvit                                  stellar-core
docker-compose-completion              lxc                                    step
doctl                                  macvim                                 stress-ng
doitlive                               magic-wormhole                         strongswan
doxygen                                mame                                   subversion
dscanner                               manticoresearch                        suite-sparse
dub                                    mapnik                                 sundials
dune                                   mapserver                              swagger-codegen
duplicity                              mariadb                                swift-format
dvc                                    mariadb-connector-odbc                 swift-sh
dvdauthor                              mariadb@10.2                           swiftformat
dvdbackup                              mariadb@10.3                           swiftlint
dxpy                                   mat2                                   syncthing
dyld-headers                           math-comp                              sysdig
eccodes                                maxwell                                tass64
ecl                                    mbedtls                                telegraf
ejabberd                               mdbook                                 teleport
embree                                 mdcat                                  template-glib
emscripten                             media-info                             termrec
ensmallen                              megatools                              terraform-docs
ephemeralpg                            meilisearch                            terraform-provider-libvirt
epstool                                memcached                              terragrunt
eralchemy                              mercurial                              testssl
erlang                                 mesa                                   texmath
etcd                                   meson                                  tflint
ethereum                               metabase                               thors-serializer
euler-py                               micro                                  tig
evince                                 micronaut                              timewarrior
exodriver                              micropython                            tintin
exploitdb                              minetest                               toast
eye-d3                                 minikube                               tokei
faas-cli                               minio                                  tomcat
fabric                                 minio-mc                               tomcat@8
faiss                                  miniserve                              tox
fastlane                               mint                                   trafficserver
fastmod                                mitmproxy                              travis
faudio                                 mk-configure                           trezor-agent
fbi-servefiles                         mkdocs                                 triangle
fd                                     mkl-dnn                                triton
fdroidserver                           mksh                                   ttygif
feedgnuplot                            mkvtoolnix                             tunnel
feh                                    mlpack                                 twarc
fetchmail                              moarvm                                 txr
ffsend                                 mockolo                                uftp
file-roller                            moco                                   ungit
findomain                              modules                                uni
firebase-cli                           molecule                               unrar
flake8                                 molten-vk                              urh
flow                                   monero                                 urweb
fluent-bit                             mongo-cxx-driver                       userspace-rcu
fluid-synth                            mono-libgdiplus                        utf8proc
fluxctl                                monolith                               v8
flyway                                 mpd                                    vala
fmt                                    mpi4py                                 vale
fn                                     mpop                                   vapoursynth
fobis                                  mpv                                    vapoursynth-imwri
folly                                  msmtp                                  vapoursynth-ocr
fonttools                              mtools                                 vapoursynth-sub
ford                                   mu                                     vault
freeciv                                mujs                                   velero
freediameter                           multimarkdown                          verilator
freeradius-server                      mutt                                   vert.x
freetds                                mycli                                  viewvc
frpc                                   mysql-search-replace                   vim
frps                                   n                                      visp
frugal                                 nano                                   vnu
fruit                                  nativefier                             vte3
fs-uae                                 nats-server                            vtk
funcoeszz                              nave                                   vulkan-headers
futhark                                navi                                   wartremover
fwup                                   nbdime                                 wavpack
fzf                                    nco                                    weboob
gatsby-cli                             ncview                                 weechat
gawk                                   ndpi                                   whistle
gcc                                    nebula                                 winetricks
gcc@4.9                                neomutt                                wireguard-go
gcc@5                                  neon                                   wireshark
gcc@6                                  netcdf                                 wpscan
gcc@7                                  netdata                                wrangler
gcc@8                                  nethogs                                write-good
gd                                     netlify-cli                            wtf
gdal                                   netpbm                                 wumpus
gdcm                                   newman                                 wxmaxima
geant4                                 newrelic-cli                           wxpython
genders                                nfdump                                 xclogparser
geoipupdate                            nginx                                  xcodegen
geos                                   nickle                                 xdot
gforth                                 nifi                                   xerces-c
gh                                     nifi-registry                          xgboost
gifski                                 nift                                   xmake
ginac                                  nim                                    xml-tooling-c
git                                    nlopt                                  xmrig
git-annex                              nnn                                    xonsh
git-cola                               node                                   xpa
git-delta                              node-build                             xsimd
git-filter-repo                        node-sass                              xtensor
git-gui                                node@10                                yaegi
git-plus                               node@12                                yamllint
git-subrepo                            nodenv                                 yaws
git-trim                               nomad                                  yaz
gitfs                                  now-cli                                yle-dl
gitg                                   nsd                                    yosys
gitleaks                               nss                                    you-get
gitless                                ntfs-3g                                yq
gitversion                             ntopng                                 z3
gjs                                    nuget                                  zabbix
gl2ps                                  numpy                                  zeek
glib-networking                        nushell                                zero-install
glooctl                                oauth2_proxy                           zig
gmic                                   oclgrind                               zim
gmsh                                   ocrmypdf                               zint
gmt                                    octant                                 znapzend
gmt@5                                  octave
gnome-builder                          octomap
==> Deleted Formulae
compcert

==> Downloading https://homebrew.bintray.com/bottles/cmake-3.17.1.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/3c/3c66f4227a1a2756a62b698e83b8213911ade95c72b6f4a33aa9743648c603ab?
######################################################################## 100.0%
==> Pouring cmake-3.17.1.catalina.bottle.tar.gz
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/cmake
Target /usr/local/bin/cmake
already exists. You may want to remove it:
  rm '/usr/local/bin/cmake'

To force the link and overwrite all conflicting files:
  brew link --overwrite cmake

To list all files that would be deleted:
  brew link --overwrite --dry-run cmake

Possible conflicting files are:
/usr/local/bin/cmake
/usr/local/bin/cpack
/usr/local/bin/ctest
==> Caveats
Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/cmake
==> Summary
🍺  /usr/local/Cellar/cmake/3.17.1: 6,156 files, 58MB
==> `brew cleanup` has not been run in 30 days, running now...
Removing: /Users/Assaf/Library/Caches/Homebrew/gdbm--1.18.1.catalina.bottle.1.tar.gz... (196.7KB)
Removing: /Users/Assaf/Library/Caches/Homebrew/gettext--0.20.1.catalina.bottle.tar.gz... (8.3MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/glib--2.64.1.catalina.bottle.tar.gz... (4.6MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/libffi--3.2.1.catalina.bottle.tar.gz... (91.7KB)
Removing: /Users/Assaf/Library/Caches/Homebrew/openssl@1.1--1.1.1d.catalina.bottle.tar.gz... (5.2MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/pixman--0.38.4.catalina.bottle.tar.gz... (480.1KB)
Removing: /usr/local/Cellar/readline/8.0.1... (48 files, 1.5MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/readline--8.0.1.catalina.bottle.tar.gz... (517.3KB)
Removing: /usr/local/Cellar/sqlite/3.30.1... (11 files, 3.9MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/sqlite--3.30.1.catalina.bottle.tar.gz... (1.9MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/tbb--2020_U1_1.catalina.bottle.tar.gz... (718.8KB)
Removing: /usr/local/Cellar/xz/5.2.4... (92 files, 1MB)
Removing: /Users/Assaf/Library/Caches/Homebrew/xz--5.2.4.catalina.bottle.tar.gz... (373.9KB)
Removing: /Users/Assaf/Library/Logs/Homebrew/libtiff... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/libxml2... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/little-cms2... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/libpng... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/pixman... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/gdbm... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/freetype... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/python... (3 files, 148.3KB)
Removing: /Users/Assaf/Library/Logs/Homebrew/openjpeg... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/gdk-pixbuf... (204B)
Removing: /Users/Assaf/Library/Logs/Homebrew/glib... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/readline... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/cairo... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/sqlite... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/xz... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/fontconfig... (1KB)
Removing: /Users/Assaf/Library/Logs/Homebrew/gettext... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/openssl@1.1... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/pcre... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/jpeg... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/openslide... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/lzo... (64B)
Removing: /Users/Assaf/Library/Logs/Homebrew/libffi... (64B)
Pruned 1 symbolic links and 4 directories from /usr/local
AMagenMacBook:target Assaf$ 
AMagenMacBook:target Assaf$ brew install glfw

==> Downloading https://homebrew.bintray.com/bottles/glfw-3.3.2.catalina.bottle.tar.gz
######################################################################## 100.0%
==> Pouring glfw-3.3.2.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/glfw/3.3.2: 14 files, 493KB
AMagenMacBook:target Assaf$ 
AMagenMacBook:target Assaf$ brew install libomp

==> Downloading https://homebrew.bintray.com/bottles/libomp-10.0.0.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/0e/0ea757dbea7bf12141ef1d209d2f3b59919baa0caa0482d7ea6ae9c2dfed2382?
######################################################################## 100.0%
==> Pouring libomp-10.0.0.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/libomp/10.0.0: 9 files, 1.3MB
AMagenMacBook:target Assaf$ 
AMagenMacBook:target Assaf$ brew install gcc
==> Installing dependencies for gcc: gmp, isl, mpfr and libmpc
==> Installing gcc dependency: gmp
==> Downloading https://homebrew.bintray.com/bottles/gmp-6.2.0.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/2e/2e6acd6e62d1b8ef0800061e113aea30a63f56b32b99c010234c0420fd6d3ecf?
######################################################################## 100.0%
==> Pouring gmp-6.2.0.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/gmp/6.2.0: 20 files, 3.2MB
==> Installing gcc dependency: isl
==> Downloading https://homebrew.bintray.com/bottles/isl-0.22.1.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/b5/b5319e3bbbb36ef3536d841999b7497b3dce4bf9e07fb04f6b0db716e087896d?
######################################################################## 100.0%
==> Pouring isl-0.22.1.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/isl/0.22.1: 72 files, 4.7MB
==> Installing gcc dependency: mpfr
==> Downloading https://homebrew.bintray.com/bottles/mpfr-4.0.2.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/14/140d29bfee0c8cf356fbb5391465f781df559e6076988de3ea8bcfd812f3c5bd?
######################################################################## 100.0%
==> Pouring mpfr-4.0.2.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/mpfr/4.0.2: 28 files, 4.7MB
==> Installing gcc dependency: libmpc
==> Downloading https://homebrew.bintray.com/bottles/libmpc-1.1.0.catalina.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libmpc-1.1.0.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/libmpc/1.1.0: 12 files, 361.9KB
==> Installing gcc
==> Downloading https://homebrew.bintray.com/bottles/gcc-9.3.0_1.catalina.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/57/57e53d66ad43fe05b5a2f93d6a7cfd472713ac03e9d9c9d0d0187cdc7a273153?
######################################################################## 100.0%
==> Pouring gcc-9.3.0_1.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/gcc/9.3.0_1: 1,461 files, 287.6MB
AMagenMacBook:target Assaf$ mkdir ~/src
AMagenMacBook:target Assaf$ cd ~/src
AMagenMacBook:src Assaf$ git clone https://github.com/DIPlib/diplib.git
Cloning into 'diplib'...
remote: Enumerating objects: 240, done.
remote: Counting objects: 100% (240/240), done.
remote: Compressing objects: 100% (152/152), done.
remote: Total 21005 (delta 125), reused 147 (delta 87), pack-reused 20765
Receiving objects: 100% (21005/21005), 14.12 MiB | 8.43 MiB/s, done.
Resolving deltas: 100% (16442/16442), done.
AMagenMacBook:src Assaf$ mkdir ~/src/diplib/target
AMagenMacBook:src Assaf$ cd ~/src/diplib/target
AMagenMacBook:target Assaf$ cmake ..
-- The C compiler identification is AppleClang 11.0.3.11030032
-- The CXX compiler identification is AppleClang 11.0.3.11030032
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- PROJECT_VERSION = 3.0.beta
-- Found OpenMP_C: -Xclang -fopenmp (found version "3.1") 
-- Found OpenMP_CXX: -Xclang -fopenmp (found version "3.1") 
-- Found OpenMP: TRUE (found version "3.1")  
-- Performing Test HAS_PRETTY_FUNCTION
-- Performing Test HAS_PRETTY_FUNCTION - Success
-- Performing Test HAS_128_INT
-- Performing Test HAS_128_INT - Success
~~~Configuring Zlib~~~
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - failed
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
~~~
~~~Configuring libics~~~
-- Looking for strtok_r
-- Looking for strtok_r - found
~~~Configuring LibTIFF~~~
-- Performing Test C_FLAG_Wall
-- Performing Test C_FLAG_Wall - Success
-- Performing Test C_FLAG_Winline
-- Performing Test C_FLAG_Winline - Success
-- Performing Test C_FLAG_W
-- Performing Test C_FLAG_W - Success
-- Performing Test C_FLAG_Wformat_security
-- Performing Test C_FLAG_Wformat_security - Success
-- Performing Test C_FLAG_Wpointer_arith
-- Performing Test C_FLAG_Wpointer_arith - Success
-- Performing Test C_FLAG_Wdisabled_optimization
-- Performing Test C_FLAG_Wdisabled_optimization - Success
-- Performing Test C_FLAG_Wno_unknown_pragmas
-- Performing Test C_FLAG_Wno_unknown_pragmas - Success
-- Performing Test C_FLAG_Wdeclaration_after_statement
-- Performing Test C_FLAG_Wdeclaration_after_statement - Success
-- Performing Test C_FLAG_Wno_unused_parameter
-- Performing Test C_FLAG_Wno_unused_parameter - Success
-- Performing Test C_FLAG_Wno_unused_but_set_variable
-- Performing Test C_FLAG_Wno_unused_but_set_variable - Failed
-- Performing Test C_FLAG_fstrict_aliasing
-- Performing Test C_FLAG_fstrict_aliasing - Success
-- Looking for assert.h
-- Looking for assert.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for fcntl.h
-- Looking for fcntl.h - found
-- Looking for inttypes.h
-- Looking for inttypes.h - found
-- Looking for io.h
-- Looking for io.h - not found
-- Looking for search.h
-- Looking for search.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Performing Test C_HAS_inline
-- Performing Test C_HAS_inline - Success
-- Performing Test TIME_WITH_SYS_TIME
-- Performing Test TIME_WITH_SYS_TIME - Success
-- Performing Test TM_IN_SYS_TIME
-- Performing Test TM_IN_SYS_TIME - Success
-- Check size of signed int
-- Check size of signed int - done
-- Check size of unsigned int
-- Check size of unsigned int - done
-- Check size of signed long
-- Check size of signed long - done
-- Check size of unsigned long
-- Check size of unsigned long - done
-- Check size of signed long long
-- Check size of signed long long - done
-- Check size of unsigned long long
-- Check size of unsigned long long - done
-- Check size of unsigned char *
-- Check size of unsigned char * - done
-- Check size of size_t
-- Check size of size_t - done
-- Check size of ptrdiff_t
-- Check size of ptrdiff_t - done
-- Looking for mmap
-- Looking for mmap - found
-- Looking for setmode
-- Looking for setmode - found
-- Looking for snprintf
-- Looking for snprintf - found
-- Looking for strcasecmp
-- Looking for strcasecmp - found
-- Looking for strtol
-- Looking for strtol - found
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoul
-- Looking for strtoul - found
-- Looking for strtoull
-- Looking for strtoull - found
-- Looking for getopt
-- Looking for getopt - found
-- Looking for lfind
-- Looking for lfind - found
-- Check if the system is big endian
-- Searching 16 bit integer
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- LibTIFF uses win32 IO: FALSE
-- LibTIFF has JPEG 8/12 bit dual mode: FALSE
~~~
-- Could NOT find FFTW3 (missing: FFTW3_INCLUDE_DIR FFTW3_LIBRARY_FFTW3F FFTW3_LIBRARY_FFTW3F_THREADS FFTW3_LIBRARY_FFTW3 FFTW3_LIBRARY_FFTW3_THREADS) 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Found Java: /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home/bin/java (found suitable version "13.0.0", minimum required is "1.8") found components: Development 
-- Found JNI: /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home/lib/libjawt.dylib  
-- Found OpenGL: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/OpenGL.framework   
-- Found GLFW: /usr/local/lib/libglfw.dylib  
-- GLFW found: /usr/local/lib/libglfw.dylib -- /usr/local/include
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Found PythonInterp: /usr/local/bin/python3.7 (found version "3.7.7") 
-- Found PythonLibs: /usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/libpython3.7m.dylib
-- Performing Test HAS_CPP14_FLAG
-- Performing Test HAS_CPP14_FLAG - Success
-- pybind11 v2.4.2
-- Performing Test HAS_FLTO
-- Performing Test HAS_FLTO - Success
-- LTO enabled
-- Found Matlab: /Applications/MATLAB_R2019b.app/extern/include (found version "9.7") found components: MAIN_PROGRAM 
-- Performing Test HAS_MINUS_PTHREAD
-- Performing Test HAS_MINUS_PTHREAD - Success

--------------------------------------
   DIPlib CONFIGURATION REPORT

 * C++ compiler: AppleClang
 * C++ compiler flags:  -Wall -Wconversion -Wsign-conversion -pedantic -O3 -DNDEBUG
 * Build type: Release
 * Building shared library
 * Library installed to: /usr/local/lib
 * Binaries installed to: /usr/local/bin
 * Header files installed to: /usr/local/include
 * Doxygen documentation not configured
 * Using OpenMP for multithreading
 * Stack trace recording enabled
 * Asserts disabled
 * Unicode support enabled
 * Using 128-bit PRNG
 * ICS file IO enabled, with zlib
 * TIFF file IO enabled, with zlib, with JPEG
 * JPEG file IO enabled
 * Using built-in FFT
 * Unit test code included
 * DIPviewer module added to 'all' with window managers: GLFW
 * DIPviewer Java bindings added to 'all' target
 * DIPjavaio module added to 'all' target with interfaces: 
 * PyDIP module added to 'all' target
 * PyDIP compiled for Python version 3.7.7
 * PyDIP installed to: /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/PyDIP
 * PyDIP uses the absolute path to DIPlib
 * DIPimage toolbox added to 'all' target
 * DIPimage toolbox compiled for MATLAB R2019b
 * DIPimage toolbox installed to: /usr/local/share/DIPimage
 * DIPimage User Manual cannot be created (Doxygen documentation not configured)

Next, type 'make; make check; make install'

--------------------------------------

-- Configuring done
-- Generating done
-- Build files have been written to: /Users/Assaf/src/diplib/target
AMagenMacBook:target Assaf$ make -j check
Scanning dependencies of target zlibstatic
Scanning dependencies of target jpeg
[  0%] Building C object zlib/CMakeFiles/zlibstatic.dir/compress.c.o
[  0%] Building C object zlib/CMakeFiles/zlibstatic.dir/adler32.c.o
[  0%] Building C object zlib/CMakeFiles/zlibstatic.dir/crc32.c.o
[  1%] Building C object zlib/CMakeFiles/zlibstatic.dir/deflate.c.o
[  1%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzlib.c.o
[  1%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzclose.c.o
[  1%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzread.c.o
[  3%] Building C object zlib/CMakeFiles/zlibstatic.dir/gzwrite.c.o
[  3%] Building C object zlib/CMakeFiles/zlibstatic.dir/infback.c.o
[  3%] Building C object zlib/CMakeFiles/zlibstatic.dir/inflate.c.o
[  3%] Building C object zlib/CMakeFiles/zlibstatic.dir/inftrees.c.o
[  4%] Building C object zlib/CMakeFiles/zlibstatic.dir/inffast.c.o
[  4%] Building C object zlib/CMakeFiles/zlibstatic.dir/trees.c.o
[  4%] Building C object zlib/CMakeFiles/zlibstatic.dir/uncompr.c.o
[  4%] Building C object zlib/CMakeFiles/zlibstatic.dir/zutil.c.o
[  4%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcapimin.c.o
[  4%] Building C object libjpeg/CMakeFiles/jpeg.dir/jccoefct.c.o
[  4%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcarith.c.o
[  6%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcapistd.c.o
[  6%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcdctmgr.c.o
[  6%] Building C object libjpeg/CMakeFiles/jpeg.dir/jaricom.c.o
[  6%] Building C object libjpeg/CMakeFiles/jpeg.dir/jccolor.c.o
[  8%] Building C object libjpeg/CMakeFiles/jpeg.dir/jchuff.c.o
[  8%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcmainct.c.o
[  9%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcinit.c.o
[  9%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcparam.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcmaster.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcsample.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcmarker.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jctrans.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcomapi.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jcprepct.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdapistd.c.o
[ 11%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdapimin.c.o
[ 12%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdatadst.c.o
[ 12%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdarith.c.o
[ 12%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdatasrc.c.o
[ 12%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdcolor.c.o
[ 12%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdcoefct.c.o
[ 14%] Building C object libjpeg/CMakeFiles/jpeg.dir/jddctmgr.c.o
[ 14%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdinput.c.o
[ 14%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdhuff.c.o
[ 14%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdmaster.c.o
[ 14%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdmainct.c.o
[ 16%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdmarker.c.o
[ 16%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdmerge.c.o
[ 16%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdpostct.c.o
[ 16%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdsample.c.o
[ 16%] Building C object libjpeg/CMakeFiles/jpeg.dir/jerror.c.o
[ 17%] Building C object libjpeg/CMakeFiles/jpeg.dir/jfdctflt.c.o
[ 17%] Building C object libjpeg/CMakeFiles/jpeg.dir/jdtrans.c.o
[ 19%] Building C object libjpeg/CMakeFiles/jpeg.dir/jfdctint.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jmemnobs.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jmemmgr.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jidctflt.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jidctint.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jidctfst.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jfdctfst.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jquant1.c.o
[ 20%] Building C object libjpeg/CMakeFiles/jpeg.dir/jquant2.c.o
[ 22%] Building C object libjpeg/CMakeFiles/jpeg.dir/jutils.c.o
[ 24%] Linking C static library libzlibstatic.a
[ 24%] Built target zlibstatic
Scanning dependencies of target libics
[ 24%] Building C object libics/CMakeFiles/libics.dir/libics_data.c.o
[ 24%] Building C object libics/CMakeFiles/libics.dir/libics_binary.c.o
[ 24%] Building C object libics/CMakeFiles/libics.dir/libics_compress.c.o
[ 25%] Building C object libics/CMakeFiles/libics.dir/libics_gzip.c.o
[ 25%] Building C object libics/CMakeFiles/libics.dir/libics_history.c.o
[ 25%] Building C object libics/CMakeFiles/libics.dir/libics_preview.c.o
[ 25%] Building C object libics/CMakeFiles/libics.dir/libics_read.c.o
[ 27%] Building C object libics/CMakeFiles/libics.dir/libics_sensor.c.o
[ 27%] Building C object libics/CMakeFiles/libics.dir/libics_top.c.o
[ 27%] Building C object libics/CMakeFiles/libics.dir/libics_test.c.o
[ 27%] Building C object libics/CMakeFiles/libics.dir/libics_util.c.o
[ 29%] Building C object libics/CMakeFiles/libics.dir/libics_write.c.o
[ 29%] Linking C static library libjpeg.a
[ 29%] Built target jpeg
Scanning dependencies of target tiff
[ 29%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_compress.c.o
[ 29%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_close.c.o
[ 30%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_codec.c.o
[ 30%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_aux.c.o
[ 30%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_dir.c.o
[ 30%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_color.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_dirread.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_dirinfo.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_dumpmode.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_error.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_extension.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_dirwrite.c.o
[ 32%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_fax3sm.c.o
[ 33%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_fax3.c.o
[ 33%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_getimage.c.o
[ 33%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_flush.c.o
[ 35%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_jbig.c.o
[ 35%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_jpeg.c.o
[ 35%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_jpeg_12.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_luv.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_lzma.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_lzw.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_next.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_ojpeg.c.o
[ 37%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_open.c.o
[ 38%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_packbits.c.o
[ 38%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_predict.c.o
[ 38%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_print.c.o
[ 40%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_pixarlog.c.o
[ 40%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_read.c.o
[ 40%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_strip.c.o
[ 40%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_swab.c.o
[ 41%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_tile.c.o
[ 41%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_thunder.c.o
[ 41%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_warning.c.o
[ 41%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_webp.c.o
[ 41%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_version.c.o
[ 43%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_write.c.o
[ 43%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_zip.c.o
[ 43%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_zstd.c.o
[ 43%] Building C object libtiff/libtiff/CMakeFiles/tiff.dir/tif_unix.c.o
[ 43%] Linking C static library libics.a
[ 43%] Built target libics
[ 43%] Linking C static library libtiff.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_jbig.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_jpeg_12.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_lzma.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_webp.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_zstd.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_jbig.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_jpeg_12.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_lzma.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_webp.c.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libtiff.a(tif_zstd.c.o) has no symbols
[ 43%] Built target tiff
Scanning dependencies of target DIP
[ 43%] Building CXX object src/CMakeFiles/DIP.dir/analysis/chord_length.cpp.o
[ 43%] Building CXX object src/CMakeFiles/DIP.dir/support/matrix.cpp.o
[ 43%] Building CXX object src/CMakeFiles/DIP.dir/analysis/distance_distribution.cpp.o
[ 45%] Building CXX object src/CMakeFiles/DIP.dir/analysis/fractal_dimension.cpp.o
[ 45%] Building CXX object src/CMakeFiles/DIP.dir/analysis/fouriermellin.cpp.o
[ 45%] Building CXX object src/CMakeFiles/DIP.dir/analysis/findshift.cpp.o
[ 45%] Building CXX object src/CMakeFiles/DIP.dir/analysis/granulometry.cpp.o
[ 46%] Building CXX object src/CMakeFiles/DIP.dir/analysis/orientation_space.cpp.o
[ 46%] Building CXX object src/CMakeFiles/DIP.dir/analysis/pixel_pair_sampling.cpp.o
[ 46%] Building CXX object src/CMakeFiles/DIP.dir/analysis/monogenic_signal.cpp.o
[ 46%] Building CXX object src/CMakeFiles/DIP.dir/analysis/structure_tensor.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/binary/binary_basic.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/binary/binary_support.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/analysis/subpixel_location.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/binary/binary_propagation.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/binary/count_neighbors.cpp.o
[ 48%] Building CXX object src/CMakeFiles/DIP.dir/binary/skeleton.cpp.o
[ 50%] Building CXX object src/CMakeFiles/DIP.dir/binary/thick_thin_2D.cpp.o
[ 50%] Building CXX object src/CMakeFiles/DIP.dir/binary/sup_inf_generator.cpp.o
[ 50%] Building CXX object src/CMakeFiles/DIP.dir/color/color.cpp.o
[ 50%] Building CXX object src/CMakeFiles/DIP.dir/detection/corners.cpp.o
[ 51%] Building CXX object src/CMakeFiles/DIP.dir/detection/hough.cpp.o
[ 51%] Building CXX object src/CMakeFiles/DIP.dir/detection/lines.cpp.o
[ 51%] Building CXX object src/CMakeFiles/DIP.dir/detection/radon.cpp.o
[ 51%] Building CXX object src/CMakeFiles/DIP.dir/display/colormap.cpp.o
[ 53%] Building CXX object src/CMakeFiles/DIP.dir/display/image_display.cpp.o
[ 53%] Building CXX object src/CMakeFiles/DIP.dir/distance/edt.cpp.o
[ 53%] Building CXX object src/CMakeFiles/DIP.dir/display/label_edges.cpp.o
[ 53%] Building CXX object src/CMakeFiles/DIP.dir/distance/gdt.cpp.o
[ 54%] Building CXX object src/CMakeFiles/DIP.dir/distance/vdt.cpp.o
[ 54%] Building CXX object src/CMakeFiles/DIP.dir/distance/separable_dt.cpp.o
[ 54%] Building CXX object src/CMakeFiles/DIP.dir/file_io/file_io_support.cpp.o
[ 54%] Building CXX object src/CMakeFiles/DIP.dir/file_io/ics.cpp.o
[ 54%] Building CXX object src/CMakeFiles/DIP.dir/file_io/jpeg.cpp.o
[ 56%] Building CXX object src/CMakeFiles/DIP.dir/file_io/tiff_read.cpp.o
[ 56%] Building CXX object src/CMakeFiles/DIP.dir/file_io/tiff_write.cpp.o
[ 56%] Building CXX object src/CMakeFiles/DIP.dir/generation/coordinates.cpp.o
[ 56%] Building CXX object src/CMakeFiles/DIP.dir/generation/draw_bandlimited.cpp.o
[ 58%] Building CXX object src/CMakeFiles/DIP.dir/generation/draw_discrete.cpp.o
[ 58%] Building CXX object src/CMakeFiles/DIP.dir/generation/draw_fourier.cpp.o
[ 58%] Building CXX object src/CMakeFiles/DIP.dir/generation/noise.cpp.o
[ 58%] Building CXX object src/CMakeFiles/DIP.dir/generation/windowing.cpp.o
[ 58%] Building CXX object src/CMakeFiles/DIP.dir/geometry/resampleat.cpp.o
[ 59%] Building CXX object src/CMakeFiles/DIP.dir/geometry/interpolation.cpp.o
[ 59%] Building CXX object src/CMakeFiles/DIP.dir/geometry/tile.cpp.o
[ 59%] Building CXX object src/CMakeFiles/DIP.dir/geometry/wrap.cpp.o
[ 59%] Building CXX object src/CMakeFiles/DIP.dir/histogram/distribution.cpp.o
[ 61%] Building CXX object src/CMakeFiles/DIP.dir/histogram/equalization.cpp.o
[ 61%] Building CXX object src/CMakeFiles/DIP.dir/histogram/histogram.cpp.o
[ 61%] Building CXX object src/CMakeFiles/DIP.dir/histogram/per_object_hist.cpp.o
[ 61%] Building CXX object src/CMakeFiles/DIP.dir/histogram/statistics.cpp.o
[ 62%] Building CXX object src/CMakeFiles/DIP.dir/histogram/threshold_algorithms.cpp.o
[ 62%] Building CXX object src/CMakeFiles/DIP.dir/library/boundary.cpp.o
[ 62%] Building CXX object src/CMakeFiles/DIP.dir/library/copy_buffer.cpp.o
[ 62%] Building CXX object src/CMakeFiles/DIP.dir/library/datatype.cpp.o
[ 64%] Building CXX object src/CMakeFiles/DIP.dir/library/framework.cpp.o
[ 64%] Building CXX object src/CMakeFiles/DIP.dir/library/framework_full.cpp.o
[ 64%] Building CXX object src/CMakeFiles/DIP.dir/library/framework_scan.cpp.o
[ 64%] Building CXX object src/CMakeFiles/DIP.dir/library/framework_separable.cpp.o
[ 64%] Building CXX object src/CMakeFiles/DIP.dir/library/graph.cpp.o
[ 66%] Building CXX object src/CMakeFiles/DIP.dir/library/image.cpp.o
[ 66%] Building CXX object src/CMakeFiles/DIP.dir/library/image_copy.cpp.o
[ 66%] Building CXX object src/CMakeFiles/DIP.dir/library/image_data.cpp.o
[ 66%] Building CXX object src/CMakeFiles/DIP.dir/library/image_indexing.cpp.o
[ 67%] Building CXX object src/CMakeFiles/DIP.dir/library/image_manip.cpp.o
[ 67%] Building CXX object src/CMakeFiles/DIP.dir/library/image_views.cpp.o
[ 67%] Building CXX object src/CMakeFiles/DIP.dir/library/information.cpp.o
[ 67%] Building CXX object src/CMakeFiles/DIP.dir/library/iterators.cpp.o
[ 69%] Building CXX object src/CMakeFiles/DIP.dir/library/multithreading.cpp.o
[ 69%] Building CXX object src/CMakeFiles/DIP.dir/library/neighborhood.cpp.o
[ 69%] Building CXX object src/CMakeFiles/DIP.dir/library/physical_dimensions.cpp.o
[ 69%] Building CXX object src/CMakeFiles/DIP.dir/library/pixel_table.cpp.o
[ 70%] Building CXX object src/CMakeFiles/DIP.dir/library/unit_tests.cpp.o
[ 70%] Building CXX object src/CMakeFiles/DIP.dir/library/types.cpp.o
[ 70%] Building CXX object src/CMakeFiles/DIP.dir/linear/convolution.cpp.o
[ 70%] Building CXX object src/CMakeFiles/DIP.dir/linear/derivative.cpp.o
[ 70%] Building CXX object src/CMakeFiles/DIP.dir/linear/finitediff.cpp.o
[ 72%] Building CXX object src/CMakeFiles/DIP.dir/linear/gabor.cpp.o
[ 72%] Building CXX object src/CMakeFiles/DIP.dir/linear/gaboriir.cpp.o
[ 72%] Building CXX object src/CMakeFiles/DIP.dir/linear/gauss.cpp.o
[ 72%] Building CXX object src/CMakeFiles/DIP.dir/linear/gaussiir.cpp.o
[ 74%] Building CXX object src/CMakeFiles/DIP.dir/linear/separate_filter.cpp.o
[ 74%] Building CXX object src/CMakeFiles/DIP.dir/linear/sharpen.cpp.o
[ 74%] Building CXX object src/CMakeFiles/DIP.dir/linear/uniform.cpp.o
[ 74%] Building CXX object src/CMakeFiles/DIP.dir/mapping/equalization.cpp.o
[ 75%] Building CXX object src/CMakeFiles/DIP.dir/mapping/lookup_table.cpp.o
[ 75%] Building CXX object src/CMakeFiles/DIP.dir/mapping/mapping.cpp.o
[ 75%] Building CXX object src/CMakeFiles/DIP.dir/math/arithmetic.cpp.o
[ 75%] Building CXX object src/CMakeFiles/DIP.dir/math/bitwise.cpp.o
[ 75%] Building CXX object src/CMakeFiles/DIP.dir/math/comparison.cpp.o
[ 77%] Building CXX object src/CMakeFiles/DIP.dir/math/dyadic_operators.cpp.o
[ 77%] Building CXX object src/CMakeFiles/DIP.dir/math/error.cpp.o
[ 77%] Building CXX object src/CMakeFiles/DIP.dir/math/monadic_operators.cpp.o
[ 77%] Building CXX object src/CMakeFiles/DIP.dir/math/pixel.cpp.o
[ 79%] Building CXX object src/CMakeFiles/DIP.dir/math/projection.cpp.o
[ 79%] Building CXX object src/CMakeFiles/DIP.dir/math/radial.cpp.o
[ 79%] Building CXX object src/CMakeFiles/DIP.dir/math/select.cpp.o
[ 79%] Building CXX object src/CMakeFiles/DIP.dir/math/statistics.cpp.o
[ 80%] Building CXX object src/CMakeFiles/DIP.dir/math/tensor_operators.cpp.o
[ 80%] Building CXX object src/CMakeFiles/DIP.dir/measurement/chain_code.cpp.o
[ 80%] Building CXX object src/CMakeFiles/DIP.dir/measurement/feature_surface_area.cpp.o
[ 80%] Building CXX object src/CMakeFiles/DIP.dir/measurement/image_chain_code.cpp.o
[ 82%] Building CXX object src/CMakeFiles/DIP.dir/measurement/measure_chain_code.cpp.o
[ 82%] Building CXX object src/CMakeFiles/DIP.dir/measurement/measure_polygon.cpp.o
[ 82%] Building CXX object src/CMakeFiles/DIP.dir/measurement/measurement.cpp.o
[ 82%] Building CXX object src/CMakeFiles/DIP.dir/measurement/measurement_tool.cpp.o
[ 82%] Building CXX object src/CMakeFiles/DIP.dir/measurement/object_to_measurement.cpp.o
[ 83%] Building CXX object src/CMakeFiles/DIP.dir/measurement/polygon.cpp.o
[ 83%] Building CXX object src/CMakeFiles/DIP.dir/microscopy/attenuation_correction.cpp.o
[ 83%] Building CXX object src/CMakeFiles/DIP.dir/microscopy/colocalization.cpp.o
[ 83%] Building CXX object src/CMakeFiles/DIP.dir/microscopy/psf.cpp.o
[ 85%] Building CXX object src/CMakeFiles/DIP.dir/microscopy/unmix_stains.cpp.o
[ 85%] Building CXX object src/CMakeFiles/DIP.dir/microscopy/wiener.cpp.o
[ 85%] Building CXX object src/CMakeFiles/DIP.dir/morphology/areaopening.cpp.o
[ 85%] Building CXX object src/CMakeFiles/DIP.dir/morphology/basic.cpp.o
[ 87%] Building CXX object src/CMakeFiles/DIP.dir/morphology/filters.cpp.o
[ 87%] Building CXX object src/CMakeFiles/DIP.dir/morphology/maxima.cpp.o
[ 87%] Building CXX object src/CMakeFiles/DIP.dir/morphology/one_dimensional.cpp.o
[ 87%] Building CXX object src/CMakeFiles/DIP.dir/morphology/pathopening.cpp.o
[ 87%] Building CXX object src/CMakeFiles/DIP.dir/morphology/reconstruction.cpp.o
[ 88%] Building CXX object src/CMakeFiles/DIP.dir/morphology/upperskeleton2d.cpp.o
[ 88%] Building CXX object src/CMakeFiles/DIP.dir/morphology/watershed.cpp.o
[ 88%] Building CXX object src/CMakeFiles/DIP.dir/morphology/watershed_support.cpp.o
[ 88%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/adaptivegauss.cpp.o
[ 90%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/anisotropic_diffusion.cpp.o
[ 90%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/bilateral.cpp.o
[ 90%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/kuwahara.cpp.o
[ 90%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/nonmaximumsuppression.cpp.o
[ 91%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/variancefilter.cpp.o
[ 91%] Building CXX object src/CMakeFiles/DIP.dir/nonlinear/percentile.cpp.o
[ 91%] Building CXX object src/CMakeFiles/DIP.dir/regions/grow_regions.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/regions/label_manipulation.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/regions/label.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/regions/region_adjacency_graph.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/canny.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/ellipse_fit.cpp.o
[ 93%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/kmeans_clustering.cpp.o
[ 95%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/minimum_variance_partitioning.cpp.o
[ 95%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/superpixels.cpp.o
[ 95%] Building CXX object src/CMakeFiles/DIP.dir/support/accumulators.cpp.o
[ 96%] Building CXX object src/CMakeFiles/DIP.dir/support/gaussian_mixture.cpp.o
[ 96%] Building CXX object src/CMakeFiles/DIP.dir/segmentation/threshold.cpp.o
[ 96%] Building CXX object src/CMakeFiles/DIP.dir/transform/fourier.cpp.o
[ 96%] Building CXX object src/CMakeFiles/DIP.dir/support/numeric.cpp.o
[ 98%] Building CXX object src/CMakeFiles/DIP.dir/transform/opencv_dxt.cpp.o
[ 98%] Building CXX object src/CMakeFiles/DIP.dir/support/thin_plate_spline.cpp.o
[ 98%] Building CXX object src/CMakeFiles/DIP.dir/transform/riesz.cpp.o
[ 98%] Building CXX object src/CMakeFiles/DIP.dir/transform/swt.cpp.o
[ 98%] Linking CXX shared library libDIP.dylib
[ 98%] Built target DIP
Scanning dependencies of target unit_tests
[100%] Building CXX object src/CMakeFiles/unit_tests.dir/library/unit_tests.cpp.o
[100%] Linking CXX executable unit_tests
[100%] Built target unit_tests
Scanning dependencies of target check
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
[dip::testing::CompareImages] Maximum absolute error = 58.493 > 0.015
===============================================================================
/Users/Assaf/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/Users/Assaf/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     70 passed |      1 failed |      0 skipped
[doctest] assertions:   2368 |   2367 passed |      1 failed |
[doctest] Status: FAILURE!
make[3]: *** [src/CMakeFiles/check] Error 1
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
make: *** [check] Error 2
AMagenMacBook:target Assaf$ make -j install
AMagenMacBook:target Assaf$ ls
CMakeCache.txt          Matlab              libtiff
CMakeFiles          cmake_install.cmake     pybind11
CPackConfig.cmake       dipimage            pydip
CPackSourceConfig.cmake     doc             src
DIPlibConfig.cmake      examples            viewer
DIPlibConfigVersion.cmake   javaio              zlib
DIPlibTargets.cmake     libics
Makefile            libjpeg
AMagenMacBook:target Assaf$ cmake ..
-- PROJECT_VERSION = 3.0.beta
-- Found OpenMP_C: -Xclang -fopenmp  
-- Found OpenMP_CXX: -Xclang -fopenmp  
-- Found OpenMP: TRUE   
~~~Configuring Zlib~~~
~~~
~~~Configuring libics~~~
~~~Configuring LibTIFF~~~
-- LibTIFF uses win32 IO: FALSE
-- LibTIFF has JPEG 8/12 bit dual mode: FALSE
~~~
-- Could NOT find FFTW3 (missing: FFTW3_INCLUDE_DIR FFTW3_LIBRARY_FFTW3F FFTW3_LIBRARY_FFTW3F_THREADS FFTW3_LIBRARY_FFTW3 FFTW3_LIBRARY_FFTW3_THREADS) 
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- GLFW found: /usr/local/lib/libglfw.dylib -- /usr/local/include
-- pybind11 v2.4.2

--------------------------------------
   DIPlib CONFIGURATION REPORT

 * C++ compiler: AppleClang
 * C++ compiler flags:  -Wall -Wconversion -Wsign-conversion -pedantic -O3 -DNDEBUG
 * Build type: Release
 * Building shared library
 * Library installed to: /usr/local/lib
 * Binaries installed to: /usr/local/bin
 * Header files installed to: /usr/local/include
 * Doxygen documentation not configured
 * Using OpenMP for multithreading
 * Stack trace recording enabled
 * Asserts disabled
 * Unicode support enabled
 * Using 128-bit PRNG
 * ICS file IO enabled, with zlib
 * TIFF file IO enabled, with zlib, with JPEG
 * JPEG file IO enabled
 * Using built-in FFT
 * Unit test code included
 * DIPviewer module added to 'all' with window managers: GLFW
 * DIPviewer Java bindings added to 'all' target
 * DIPjavaio module added to 'all' target with interfaces: 
 * PyDIP module added to 'all' target
 * PyDIP compiled for Python version 3.7.7
 * PyDIP installed to: /usr/local/Cellar/python/3.7.7/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/PyDIP
 * PyDIP uses the absolute path to DIPlib
 * DIPimage toolbox added to 'all' target
 * DIPimage toolbox compiled for MATLAB R2019b
 * DIPimage toolbox installed to: /usr/local/share/DIPimage
 * DIPimage User Manual cannot be created (Doxygen documentation not configured)

Next, type 'make; make check; make install'

--------------------------------------

-- Configuring done
-- Generating done
-- Build files have been written to: /Users/Assaf/src/diplib/target

Thanks

crisluengo commented 4 years ago

@asmagen I don't see anything strange about your setup. There is no reason for this one test to fail that I can see.

The only possible cause can be a bug in your compiler (you have Apple clang 11.0.3.11030032, I have Apple clang 11.0.0, so this is very unlikely), or an error creeped in when copying files (which is slightly less unlikely).

Since all other tests passed, I would guess that whatever the problem is, it is only with dip::ShiftFT(), and not with more important functions. I would just go ahead and install the package and use it.

Let me know if you run into any type of strange results using the package!

wcaarls commented 4 years ago

I now also see this error on Ubuntu 18.04.

[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
[dip::testing::CompareImages] Maximum absolute error = 0.322895 > 0.015
===============================================================================
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1117:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     70 passed |      1 failed |      0 skipped
[doctest] assertions:   2368 |   2367 passed |      1 failed |
[doctest] Status: FAILURE!

I ran valgrind on the unit tests, and it did not complain. Here are the two images generated by the test (shifted through dip::ShiftFT and shifted2 through dip::Shift. I have also attached my configuration .

Please let me know what you need me to do to investigate.

crisluengo commented 4 years ago

I have Ubuntu 18.04 as well, and don't see this. The issue might be related to number of cores or the FFT used?

Could you please run this program and see if there's any structure in the difference image?

#include "diplib.h"
#include "dipviewer.h"
#include "diplib/generation.h"
#include "diplib/geometry.h"
#include "diplib/transform.h"

int main() {
   dip::Image img( { 83, 120 }, 1, dip::DT_SFLOAT );
   img.Fill( 0 );
   dip::DrawBandlimitedBall( img, 30, img.GetCenter(), { 255 }, dip::S::FILLED, 5 );
   dip::Image ft = dip::FourierTransform( img );
   dip::ShiftFT( ft, ft, { -10.3, 15.2 } );
   dip::Image shifted = dip::FourierTransform( ft, { "inverse", "real" } );
   dip::Image shifted2 = dip::Shift( img, { -10.3, 15.2 }, "fourier" );
   dip::viewer::Show( shifted, "shifted" );
   dip::viewer::Show( shifted2, "shifted2" );
   dip::viewer::Show( shifted - shifted2, "difference" );
   dip::viewer::Spin();
}

(Pro tip: copy-paste this code into e.g. the examples/cpp/select_objects.cpp file, then run that target.)

The difference image for me is just what you'd expect the FFT rounding error to look like. Extrema are 0.0139 and -0.0127, though the majority of pixels have values in the range [-0.005, 0.005]

Thanks!

wcaarls commented 4 years ago

The difference image has a clear horizontal line structure. But I think you cracked it. The results are different for different numbers of threads. Here are the results for running make check with different values for OMP_NUM_THREADS (and grepping on error):

1
2
3
4
5
6
7
8
9
10
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
11
12
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
13
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
14
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
15
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
16
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
17
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
18
/home/wouter/src/diplib/src/analysis/findshift.cpp:469: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.051 ) is NOT correct!
/home/wouter/src/diplib/src/analysis/findshift.cpp:470: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.051 ) is NOT correct!
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
19
/home/wouter/src/diplib/src/analysis/findshift.cpp:469: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.051 ) is NOT correct!
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
20
/home/wouter/src/diplib/src/distance/separable_dt.cpp:308: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
/home/wouter/src/diplib/src/distance/separable_dt.cpp:311: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1130: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
crisluengo commented 4 years ago

Could you show more of the output at 14, 18 and 20 cores?

Do you have an edited version of src/geometry/interpolation.cpp? I don't have 1130 lines of code there.

wcaarls commented 4 years ago

I changed interpolation.cpp to save the images I attached. The following results are with the original code. Note that I only have 6 cores (12 with SMT).

******************
*** 14 threads ***
******************

wouter@pc-wouter:~/src/diplib/build$ OMP_NUM_THREADS=14 make check
[ 17%] Built target jpeg
[ 23%] Built target zlibstatic
[ 39%] Built target tiff
[ 44%] Built target libics
[ 98%] Built target DIP
[100%] Built target unit_tests
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
===============================================================================
/home/wouter/src/diplib/src/analysis/findshift.cpp:432:
TEST CASE:  [DIPlib] testing the FindShift function

/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.2043881796 <  0.15 )

[dip::testing::CompareImages] Maximum absolute error = 0.208643 > 0.015
===============================================================================
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/home/wouter/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     69 passed |      2 failed |      0 skipped
[doctest] assertions:   2368 |   2366 passed |      2 failed |
[doctest] Status: FAILURE!
src/CMakeFiles/check.dir/build.make:57: recipe for target 'src/CMakeFiles/check' failed
make[3]: *** [src/CMakeFiles/check] Error 1
CMakeFiles/Makefile2:171: recipe for target 'src/CMakeFiles/check.dir/all' failed
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
CMakeFiles/Makefile2:178: recipe for target 'src/CMakeFiles/check.dir/rule' failed
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
Makefile:212: recipe for target 'check' failed
make: *** [check] Error 2

******************
*** 18 threads ***
******************

wouter@pc-wouter:~/src/diplib/build$ OMP_NUM_THREADS=18 make check
[ 17%] Built target jpeg
[ 23%] Built target zlibstatic
[ 39%] Built target tiff
[ 44%] Built target libics
[ 98%] Built target DIP
[100%] Built target unit_tests
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
[dip::testing::CompareImages] Maximum absolute error = 6.66936 > 0.015
===============================================================================
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/home/wouter/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     70 passed |      1 failed |      0 skipped
[doctest] assertions:   2368 |   2367 passed |      1 failed |
[doctest] Status: FAILURE!
src/CMakeFiles/check.dir/build.make:57: recipe for target 'src/CMakeFiles/check' failed
make[3]: *** [src/CMakeFiles/check] Error 1
CMakeFiles/Makefile2:171: recipe for target 'src/CMakeFiles/check.dir/all' failed
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
CMakeFiles/Makefile2:178: recipe for target 'src/CMakeFiles/check.dir/rule' failed
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
Makefile:212: recipe for target 'check' failed
make: *** [check] Error 2

******************
*** 20 threads ***
******************

wouter@pc-wouter:~/src/diplib/build$ OMP_NUM_THREADS=20 make check
[ 17%] Built target jpeg
[ 23%] Built target zlibstatic
[ 39%] Built target tiff
[ 44%] Built target libics
[ 98%] Built target DIP
[100%] Built target unit_tests
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
===============================================================================
/home/wouter/src/diplib/src/analysis/findshift.cpp:432:
TEST CASE:  [DIPlib] testing the FindShift function

/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 131.3420182945 <  0.15 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:464: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 48.0922853609 <  0.15 )

===============================================================================
/home/wouter/src/diplib/src/distance/separable_dt.cpp:224:
TEST CASE:  [DIPlib] testing the distance transform

/home/wouter/src/diplib/src/distance/separable_dt.cpp:308: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.0267949224 == Approx( 0.0 ) )

/home/wouter/src/diplib/src/distance/separable_dt.cpp:311: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.0267949224 == Approx( 0.0 ) )

[dip::testing::CompareImages] Maximum absolute error = 133.895 > 0.015
===============================================================================
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/home/wouter/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
[doctest] test cases:     71 |     68 passed |      3 failed |      0 skipped
[doctest] assertions:   2368 |   2363 passed |      5 failed |
[doctest] Status: FAILURE!
src/CMakeFiles/check.dir/build.make:57: recipe for target 'src/CMakeFiles/check' failed
make[3]: *** [src/CMakeFiles/check] Error 1
CMakeFiles/Makefile2:171: recipe for target 'src/CMakeFiles/check.dir/all' failed
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
CMakeFiles/Makefile2:178: recipe for target 'src/CMakeFiles/check.dir/rule' failed
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
Makefile:212: recipe for target 'check' failed
make: *** [check] Error 2
wcaarls commented 4 years ago

For reference: 256 threads

wouter@pc-wouter:~/src/diplib/build$ OMP_NUM_THREADS=256 make check
[ 17%] Built target jpeg
[ 23%] Built target zlibstatic
[ 39%] Built target tiff
[ 44%] Built target libics
[ 98%] Built target DIP
[100%] Built target unit_tests
[doctest] doctest version is "2.0.1"
[doctest] run with "--help" for options
===============================================================================
/home/wouter/src/diplib/src/analysis/findshift.cpp:432:
TEST CASE:  [DIPlib] testing the FindShift function

/home/wouter/src/diplib/src/analysis/findshift.cpp:451: ERROR: CHECK( result[ 0 ] == std::round( shift[ 0 ] ) ) is NOT correct!
  values: CHECK( -25.0 == 10.0 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:452: ERROR: CHECK( result[ 1 ] == std::round( shift[ 1 ] ) ) is NOT correct!
  values: CHECK( -58.0 == 6.0 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:457: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.03 ) is NOT correct!
  values: CHECK( 0.2813737648 <  0.03 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:458: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.03 ) is NOT correct!
  values: CHECK( 1.8804889889 <  0.03 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 103.7174176554 <  0.15 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:464: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 54.9373561716 <  0.15 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:475: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.007 ) is NOT correct!
  values: CHECK( 3.1462982405 <  0.007 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:476: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.007 ) is NOT correct!
  values: CHECK( 0.5933400583 <  0.007 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:481: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.002 ) is NOT correct!
  values: CHECK( 0.0479746653 <  0.002 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:482: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.002 ) is NOT correct!
  values: CHECK( 0.0085152605 <  0.002 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:493: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.03 ) is NOT correct!
  values: CHECK( 0.5192221531 <  0.03 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:494: ERROR: CHECK( std::abs( result[ 1 ] - shift[ 1 ] ) < 0.03 ) is NOT correct!
  values: CHECK( 0.0710197625 <  0.03 )

===============================================================================
/home/wouter/src/diplib/src/distance/separable_dt.cpp:224:
TEST CASE:  [DIPlib] testing the distance transform

/home/wouter/src/diplib/src/distance/separable_dt.cpp:293: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.5609155893 == Approx( 0.0 ) )

/home/wouter/src/diplib/src/distance/separable_dt.cpp:296: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.3243086338 == Approx( 0.0 ) )

/home/wouter/src/diplib/src/distance/separable_dt.cpp:308: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.2472135901 == Approx( 0.0 ) )

/home/wouter/src/diplib/src/distance/separable_dt.cpp:311: ERROR: CHECK( dip::MaximumAbsoluteError( gt, out ) == doctest::Approx( 0.0 ) ) is NOT correct!
  values: CHECK( 0.1757359266 == Approx( 0.0 ) )

[dip::testing::CompareImages] Maximum absolute error = 254.567 > 0.015
===============================================================================
/home/wouter/src/diplib/src/geometry/interpolation.cpp:1115:
TEST CASE:  [DIPlib] testing dip::ShiftFT() against dip::Shift()

/home/wouter/src/diplib/src/geometry/interpolation.cpp:1123: ERROR: CHECK( dip::testing::CompareImages( shifted, shifted2, 0.015 ) ) is NOT correct!
  values: CHECK( false )

100 s
1 m
===============================================================================
/home/wouter/src/diplib/src/linear/convolution.cpp:567:
TEST CASE:  [DIPlib] testing the separable convolution

/home/wouter/src/diplib/src/linear/convolution.cpp:567: ERROR: test case THREW exception: Index out of range
in function: static dip::sint dip::Image::Offset(const UnsignedArray&, const IntegerArray&, const UnsignedArray&) (/home/wouter/src/diplib/include/diplib/library/image.h at line number 1425)
in function: void dip::Framework::Scan(const ImageConstRefArray&, dip::ImageRefArray&, const DataTypeArray&, const DataTypeArray&, const DataTypeArray&, const UnsignedArray&, dip::Framework::ScanLineFilter&, dip::Framework::ScanOptions) (/home/wouter/src/diplib/src/library/framework_scan.cpp at line number 635)

===============================================================================
/home/wouter/src/diplib/src/linear/separate_filter.cpp:132:
TEST CASE:  [DIPlib] testing the filter separation

/home/wouter/src/diplib/src/linear/separate_filter.cpp:132: ERROR: test case THREW exception: Index out of range
in function: static dip::sint dip::Image::Offset(const UnsignedArray&, const IntegerArray&, const UnsignedArray&) (/home/wouter/src/diplib/include/diplib/library/image.h at line number 1425)
in function: void dip::Framework::Scan(const ImageConstRefArray&, dip::ImageRefArray&, const DataTypeArray&, const DataTypeArray&, const DataTypeArray&, const UnsignedArray&, dip::Framework::ScanLineFilter&, dip::Framework::ScanOptions) (/home/wouter/src/diplib/src/library/framework_scan.cpp at line number 635)
in function: void dip::Framework::ScanSingleInput(const dip::Image&, const dip::Image&, dip::DataType, dip::Framework::ScanLineFilter&, dip::Framework::ScanOptions) (/home/wouter/src/diplib/include/diplib/framework.h at line number 359)
in function: dip::MinMaxAccumulator dip::MaximumAndMinimum(const dip::Image&, const dip::Image&) (/home/wouter/src/diplib/src/math/statistics.cpp at line number 420)

===============================================================================
[doctest] test cases:     71 |     66 passed |      5 failed |      0 skipped
[doctest] assertions:   2360 |   2343 passed |     17 failed |
[doctest] Status: FAILURE!
src/CMakeFiles/check.dir/build.make:57: recipe for target 'src/CMakeFiles/check' failed
make[3]: *** [src/CMakeFiles/check] Error 1
CMakeFiles/Makefile2:171: recipe for target 'src/CMakeFiles/check.dir/all' failed
make[2]: *** [src/CMakeFiles/check.dir/all] Error 2
CMakeFiles/Makefile2:178: recipe for target 'src/CMakeFiles/check.dir/rule' failed
make[1]: *** [src/CMakeFiles/check.dir/rule] Error 2
Makefile:212: recipe for target 'check' failed
make: *** [check] Error 2
crisluengo commented 4 years ago

dip::Shift seems to shift more if you use a lot of threads. This is both with "fourier" and "3-cubic" interpolation, but not with "linear". I'm sure there's a problem with writing data to nearby pixels from different threads. I'm going to see if I can get thread sanitizer working.

wcaarls commented 4 years ago

I just committed e85ff86, which fixes some thread allocation problems. However, I'm still getting the following errors (the single number on a line means the number of threads):

14
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.2043881796 <  0.15 )
19
/home/wouter/src/diplib/src/analysis/findshift.cpp:469: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.051 ) is NOT correct!
  values: CHECK( 0.0887099096 <  0.051 )
36
/home/wouter/src/diplib/src/analysis/findshift.cpp:469: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.051 ) is NOT correct!
  values: CHECK( 0.0972659608 <  0.051 )
38
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.1517683068 <  0.15 )

/home/wouter/src/diplib/src/analysis/findshift.cpp:469: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.051 ) is NOT correct!
  values: CHECK( 0.0577830219 <  0.051 )
42
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.1511155321 <  0.15 )
45
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.1520766186 <  0.15 )
49
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.1502359029 <  0.15 )
54
/home/wouter/src/diplib/src/analysis/findshift.cpp:487: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.004 ) is NOT correct!
  values: CHECK( 0.0045177019 <  0.004 )
58
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.1562575204 <  0.15 )
60
/home/wouter/src/diplib/src/analysis/findshift.cpp:463: ERROR: CHECK( std::abs( result[ 0 ] - shift[ 0 ] ) < 0.15 ) is NOT correct!
  values: CHECK( 0.150486561 <  0.15 )
crisluengo commented 4 years ago

I'm not sure what that is supposed to fix. The Scan and Full frameworks compute ahead of time how many threads they need, there cannot be a reason to need to adjust that number afterwards.

The Separable framework might need a different number of threads when doing the operation along different image dimensions. Changing nThreads here for one dimension could cause too few threads for the next dimension. I don't think this change is correct either.

The problems that I've seen here are all related to separate threads writing to the same cache line or to the same 64-bit word or whatever the minimum unit of writing is supposed to be. Apparently, when writing a single byte, the nearby bytes are first read in, the one byte is changed, then the group of bytes is written out. If different threads do this at the same time for the same group, some written values will get lost (i.e. one thread reads the values just before another thread writes, and then writes them just after the other thread wrote them). The Scan and Full frameworks are not likely to have a problem here (though they can) because of the way that the work is split. But for the Separable framework, where we work along each of the dimensions, we can do work on interleaved rows of data on separate threads -- this is more likely to happen the more threads there are.

I think the right way to solve this is to enforce the use of an output buffer in situations where data is interleaved, and then synchronize the copying of data from the buffer to the output image using an atomic pragma. This will slow down things a bit, but will at least prevent errors.

I did get the ThreadSanitizer to work, it gives lots of good information, all pointing to the above.

wcaarls commented 4 years ago

I think we are looking at two different problems here. I simplified the commit, see d47d4cfca7ca82088029ae2a85dff5f33330740a.

The problem is that nLinesPerThread (or the scan1D equivalent) is calculated with div_ceil. That means, if there are many threads, some threads will have nothing to do, but the code does not correctly account for that. My commit sets nThreads to just the number of threads that have work to do, to avoid problems downstream. The first version did that a bit confusingly, but I hope it is more clear now.

I have also fixed the problem where the number of threads for the next dimension changes in the Separable framework. It is now changed per dimension only. I'll leave it for now, because there are many things in the framework code that I might be missing. However, I do think it's an improvement.

Attached are the results of make check for 1-64 threads for both the old and the new code.

original.txt new.txt

crisluengo commented 4 years ago

I’ll have to look into this more closely, later, it’s hard to read code on my phone, but I think you have a case for the Separable framework.

For Scan and Full the number of threads was first determined with:

nThreads = std::min( GetNumberOfThreads(), nLines );

so I don’t see now your change could have any effect?

wcaarls commented 4 years ago

Assume GetNumberOfThreads() Is 16 and nLines is 17. Then

nThreads = std::min( GetNumberOfThreads(), nLines ); // 16
nLinesPerThread = div_ceil( nLines, nThreads ); // 2

And only 9 threads have work. To avoid the others working on bad or duplicate data I set

nThreads = div_ceil( nLines, nLinesPerThread ); // 9
crisluengo commented 4 years ago

You’re absolutely right. I don’t know how I missed this. Sorry!

crisluengo commented 4 years ago

Darn! Why is the test now taking more than 10 minutes on Windows on Travis and therefore failing the build?

I moved the nThreads computation in the Full framework to before lineFilter.SetNumberOfThreads(). I'm still experimenting with the ThreadSanitizer to figure out what the remaining issues are.

wcaarls commented 4 years ago

I’ll see if I can reproduce it here.

wcaarls commented 4 years ago

I cannot reproduce it. I tested some things on Travis (3cd707839944cd8174e36d418a734cebab8e5a02), but it seems the unit tests don't even start: https://travis-ci.org/github/DIPlib/diplib/jobs/693263055 .

When all this is done, we'll need unit tests specifically comparing the output for different numbers of threads.

crisluengo commented 4 years ago

The remaining error, in the "FindShift" test, is due to noise added to the images. With different number of threads, the noise generated will be different (I still haven't found a way to keep noise consistent for different number of threads). Small changes in the noise cause small changes in the estimated shifts. All these failures just require a small increase of the acceptable margin of error.

Or, we just don't include the noise at all: without noise the estimated shifts are stable for all numbers of threads.

ThreadSanitizer no longer gives any warnings at all running the test program, so the issue you found was it. Hurray!