Closed asmagen closed 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.
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
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!
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
@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!
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.
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!
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!
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.
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
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
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.
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 )
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.
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.
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?
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
You’re absolutely right. I don’t know how I missed this. Sorry!
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.
I’ll see if I can reproduce it here.
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.
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!
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:
Any advice on how to resolve this? Thanks