tesseract-ocr / tesseract

Tesseract Open Source OCR Engine (main repository)
https://tesseract-ocr.github.io/
Apache License 2.0
61.72k stars 9.45k forks source link

5.0 crashes on SSE architecture for builds with MS Visual Studio #3044

Closed tdhintz closed 4 years ago

tdhintz commented 4 years ago

Environment

Current Behavior:

Crash occurs in the routine, IntDotProductSSE, where it first invokes _mm_loadl_epi64. I have indicated the line below.

// Computes and returns the dot product of the n-vectors u and v.
// Uses Intel SSE intrinsics to access the SIMD instruction set.
static int32_t IntDotProductSSE(const int8_t* u, const int8_t* v, int n) {
  int max_offset = n - 8;
  int offset = 0;
  // Accumulate a set of 4 32-bit sums in sum, by loading 8 pairs of 8-bit
  // values, extending to 16 bit, multiplying to make 32 bit results.
  int32_t result = 0;
  if (offset <= max_offset) {
    offset = 8;
    __m128i packed1 = _mm_loadl_epi64(reinterpret_cast<const __m128i*>(u));  // Crash here

Tesseract.exe produces no output. Windows event log shows a crash. Using generic (disable SSE) works but is slow.

Windows event log entries are attached. Error2.txt Error1.txt

Using libraries from Charlesw C# Tesseract wrapper results in an SEHException.

Works fine on a machine with cpuinfo[2] = 7FFAFBFF regardless whether Tesseract is asked to use only SSE or not. Version report from working machine:

tesseract.exe --version tesseract 5.0.0-alpha-692-g62ea leptonica-1.80.0 (Jun 17 2020, 02:02:24) [MSC v.1926 LIB Debug x64] libgif 5.2.1 : libjpeg 9d : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 1.0.3 : libopenjp2 2.3.1 Found AVX2 Found AVX Found FMA Found SSE

Expected Behavior:

No crash on SSE.

Suggested Fix:

Unknown

tdhintz commented 4 years ago

A sample image used in the test. BW_300.zip

zdenop commented 4 years ago

Did you compiled tesseract by yourself? Did you try to use Release config (as it seem you run Debug)? Can you try version from UB-Mannheim?

tdhintz commented 4 years ago

Did you compiled tesseract by yourself? Yes Did you try to use Release config (as it seem you run Debug)? Yes Can you try version from UB-Mannheim? I'll look for that.

tdhintz commented 4 years ago

UB-Mannheim version works fine:

tesseract --version tesseract v5.0.0-alpha.20200328 leptonica-1.78.0 libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0 Found SSE Found libarchive 3.3.2 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 Found libcurl/7.59.0 OpenSSL/1.0.2o (WinSSL) zlib/1.2.11 WinIDN libssh2/1.7.0 nghttp2/1.31.0

Command line used to reproduce both the crash and the success case:

tesseract bw_300.tif TessOut -l eng --psm 11 --oem 1 --tessdata-dir ../TrainedData/Fast -c lstm_choice_mode=2 Tesseract Open Source OCR Engine v5.0.0-alpha.20200328 with Leptonica Page 1

Shreeshrii commented 4 years ago

UB-Mannheim version works fine:

But that was built in March. tesseract v5.0.0-alpha.20200328

Problem maybe with one of the recent changes.

@stweil Suggestions?

tdhintz commented 4 years ago

I also tested on a Windows Server 2016 Standard in the same virtual environment with the same behavior.

Which compiler version and run-time is the UB-Mannheim built with?

stweil commented 4 years ago

UB Mannheim uses autotools with Mingw-w64 GCC compiler.

Here you are using MSVC, so the build is using cmake. Maybe cmake still sets the wrong compiler flags because of cmake/OptimizeForArchitecture.cmake. IntDotProductSSE must not be compiled with AVX flags, otherwise the compiler might produce AVX code which would explain the crash.

So please check whether AVX compiler flags are only used for the few files with "avx" in their name.

stweil commented 4 years ago

@tdhintz, can you reproduce the crash in the debugger and look at the disassembly of the exact crash location? What is the exact crash message / which kind of exception is thrown? Is there an AVX assembler statement?

zdenop commented 4 years ago

@stweil: OptimizeForArchitecture.cmake should be use only for detection of available features and setting variables should be same/similar for MVVC/clang-cl as autotools for gcc. I tried to use the same logic in cmake as autotools (checking for supported compiler flags), but this was unreliable. I wish to have more time for finding better solution...

tdhintz commented 4 years ago

Attached is the assembly. intsimdmatrixsse.txt

tdhintz commented 4 years ago

To be clear, we're building on an AVX capable machine with expectations that it can run on an SSE capable machine. I'm not familiar with Intel assembly. Is VMOVQ an AVX instruction?

stweil commented 4 years ago

That depends. See https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=movq.

stweil commented 4 years ago

To be clear, we're building on an AVX capable machine with expectations that it can run on an SSE capable machine.

The expectation is reasonable. It is so with automake builds, but with cmake (which is needed for MSVC) it definitely is wrong, at least in my test on Linux:

$ make VERBOSE=1
/usr/bin/cmake -S/tesseract -B/tesseract/build --check-build-system CMakeFiles/Makefile.cmake 0
[...]
[  0%] Building CXX object CMakeFiles/libtesseract.dir/src/ccmain/fixspace.cpp.o
/usr/bin/c++  -DHAVE_AVX -DHAVE_AVX2 -DHAVE_CONFIG_H -DHAVE_FMA -DHAVE_SSE4_1 [...]

As you can see, the compiler is told that AVX, AVX2, FMA and SSE4_1 may be used. So the resulting code can always contain instructions which won't work on hosts which don't support AVX, AVX2, FMA and SSE4_1.

zdenop commented 4 years ago

@tdhintz : can you give me step by step info how did you configured and build tesseract? + configuration log...

tdhintz commented 4 years ago

Which log is the configuration log?

Prerequisites:

  1. Visual Studio C++.
  2. Git from Github. I think this comes with visual studio, but I don’t know for certain.
  3. Cmake from https://cmake.org/download/. Place it into your PATH variable. If you already have cmake then in a cmd prompt, run-as administrator, run cmake --self-upgrade.
  4. Sw from https://software-network.org/client/. Download and unzip sw-master-windows-client.zip and place it into your PATH variable. If you already have sw then in a cmd prompt, run-as administrator, run sw --self-upgrade.
  5. Run “sw setup”.
  6. Cppan from https://cppan.org/client/. Download and unzip cppan-master-windows-client.zip. Place it into your PATH variable. If you already have cppan then in a cmd prompt, run-as administrator, run cppan --self-upgrade.

NOTE! The source is frequently updated in ways that require the very latest versions of the prerequisites. If you have problems it may be that you skipped running --self-upgrgade on one of these tools.

  1. Make a folder to hold the projects. For example, D:\Petri\50b.
  2. Start a cmd prompt and change to the folder you created in set #1.
  3. In the cmd prompt, type “git clone “ but don’t press enter.
  4. In a browser visit the web site github.com/danbloomberg/leptonica and press the green button “Clone or download”. Copy the URL that is displayed and paste this into the cmd prompt to complete the command started in step 3. This causes leptonica source to be downloaded.
  5. In the cmd prompt, type “git clone “ but don’t press enter.
  6. In a browser visit the web site github.com/tesseract-ocr/tesseract and press the green button “Clone or download”. Copy the URL that is displayed and paste this into the cmd prompt to complete the command started in step 5. This causes tesseract source to be downloaded.

Build Debug Leptonica with statically linked libraries.

  1. Change directories into leptonica.
  2. Run the command Mkdir build
  3. Run the command cd build
  4. cmake .. -G "Visual Studio 16 2019" -A x64 -DCPPAN_BUILD_SHARED_LIBS=0 –DBUILD_SHARED_LIBS=ON
  5. Open leptonica.sln that was created in your current folder.
  6. Optional – turn off console messages: right click “leptonica”project in the solution view and select Properties | Preprocessor | Preprocessor Definitions and add NO_CONSOLE_IO and apply the changes.
  7. Right-click “leptonica” project and select “Build” from the menu.

Build Debug Tesseract library.

  1. Change directories into tesseract.
  2. Run the command Mkdir build && cd build
  3. Cmake .. -G "Visual Studio 16 2019" -A x64
  4. Open tesseract.sln that was created in your current folder.
  5. Use the leptonica library created above: right click “libtesseract” in the solution view and select Properties | Linker | Additional Dependencies and change the leptonica path and apply the changes. The “lib” you want will be D:\Petri\50b\leptonica\build\src\Debug\leptonica-1.80.0d.lib, or similar.
  6. Optional – turn off console messages: right click “libtesseract” project in the solution view and select Properties | Preprocessor | Preprocessor Definitions and add NO_CONSOLE_IO and apply the changes.
  7. Right-click “libtesseract” project and select “Build” from the menu.
stweil commented 4 years ago

The problem is in Build Debug Tesseract library step 3. It creates a solution with AVX, FMA and SSE compiler flags for each compilation unit. That is wrong and causes the crash. It might be possible to fix that problem manually in tesseract.sln: only files with "avx" in their name must have the AVX flag and so on.

zdenop commented 4 years ago

@stweil : I did not get your reasoning: compiler options -DHAVE_AVX -DHAVE_AVX2 -DHAVE_CONFIG_H -DHAVE_FMA -DHAVE_SSE4_1 are internal tesseract definition that are used in src/arch/simddetect.cpp exclusively (excluding configuration). This can be check with # git grep 'HAVE_AVX\|HAVE_AVX2\|HAVE_FMA\|DHAVE_SSE4_1' So using them globally should have no side effect. Right?

For compiler there are important flags '-mavx2' resp. '/arch:AVX2'... And cmake should use them only for dedicated files similar as autotools: https://github.com/tesseract-ocr/tesseract/blob/2269a500ef04b0ef41d533dc58adda692c3f2ab0/CMakeLists.txt#L525-L540

stweil commented 4 years ago

And cmake should use them only for dedicated files similar as autotools

That's how it should work. But it sets -mavx2 (or /ARCH:AVX2) for all files.

tdhintz commented 4 years ago

Which build log shows /ARCH:AVX2? I can't spot that.

stweil commented 4 years ago

There is another unrelated problem with newer cmake (3.16.3-3 in my case) on Linux:

CMake Error at /usr/share/cmake-3.16/Modules/CheckIPOSupported.cmake:143 (message):
  Policy CMP0069 is not set
stweil commented 4 years ago

Which build log shows /ARCH:AVX2? I can't spot that.

Do you see AVX2 in tesseract.sln? And does the build log show any compiler flags at all?

zdenop commented 4 years ago

@tdhintz : Just for test: can you please try this build? https://send.firefox.com/download/af306d90630ba764/#bKEkX1u8PaOwr0QZ0z65uQ

tdhintz commented 4 years ago

SLN is just a wrapper grouping the vcxproj files. The vcxproj files only have the following. I don't see architecture set here. I presume its just a front for cmake? I don't know where the log is but a full-text search through all files only came up with one hit for ARCH:AVX.

WIN32;_WINDOWS;TESS_EXPORTS;_CRT_SECURE_NO_WARNINGS;HAVE_SSE4_1;HAVE_AVX;HAVE_FMA;HAVE_AVX2;HAVE_CONFIG_H;_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1;LEPT_DLL=SW_IMPORT;SW_EXPORT=__declspec(dllexport);SW_IMPORT=__declspec(dllimport);SW_LIBARCHIVE_API=SW_IMPORT;ARCHIVE_CRYPTO_MD5_NETTLE;ARCHIVE_CRYPTO_RMD160_NETTLE;ARCHIVE_CRYPTO_SHA1_NETTLE;ARCHIVE_CRYPTO_SHA256_NETTLE;ARCHIVE_CRYPTO_SHA384_NETTLE;ARCHIVE_CRYPTO_SHA512_NETTLE;HAVE_BZLIB_H;HAVE_ICONV;HAVE_ICONV_H;HAVE_LIBLZ4;HAVE_LIBLZMA;HAVE_LIBNETTLE;HAVE_LIBXML_XMLREADER_H;HAVE_LIBXML_XMLWRITER_H;HAVE_LOCALCHARSET_H;HAVE_LOCALE_CHARSET;HAVE_LZ4HC_H;HAVE_LZ4_H;HAVE_LZMA_H;HAVE_LZO_LZO1X_H;HAVE_LZO_LZOCONF_H;HAVE_NETTLE_AES_H;HAVE_NETTLE_HMAC_H;HAVE_NETTLE_MD5_H;HAVE_NETTLE_PBKDF2_H;HAVE_NETTLE_RIPEMD160_H;HAVE_NETTLE_SHA_H;HAVE_ZLIB_H;HAVE_ZSTD_H;BZ_IMPORT;BZ_SHARED;LZ4_DLL_IMPORT;LIBICONV_DLL_EXPORTED=SW_IMPORT;ICONV_CONST=const;LIBCHARSET_DLL_EXPORTED=SW_IMPORT;LIBDIR=".";LOCALEDIR="./locale";__LZO_EXPORT1=SW_IMPORT;ZSTD_DLL_IMPORT;CMAKE_INTDIR="Debug";libtesseract_EXPORTS;%(PreprocessorDefinitions)
tdhintz commented 4 years ago

@zdenop That version crashes too.

Fault bucket , type 0 Event Name: APPCRASH Response: Not available Cab Id: 0

Problem signature: P1: tesseract.exe P2: 5.0.0.0 P3: 5ef4ee08 P4: tesseract50.dll P5: 5.0.0.0 P6: 5ef4ee07 P7: c000001d P8: 000000000024c543 P9: P10:

Attached files: \?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER7C18.tmp.WERInternalMetadata.xml

These files may be available here: C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_tesseract.exe_da1ab7f34e5f4bc9792c93aabf9b31d6cf6e70cd_4d083c0e_0758c3a1

Analysis symbol: Rechecking for solution: 0 Report Id: e153496c-3e14-4291-ab29-d60b333d91e0 Report Status: 97 Hashed bucket:

tdhintz commented 4 years ago

libtesseract_vcxproj.txt

The attached vcxproj (renamed to .txt) does have AVX defined on several files. I'll try removing those defines.

tdhintz commented 4 years ago

Rebuilt with hand edited libtesseract.vcxproj and it still crashes. Hard for me to tell if it is an identical crash because the target VM doesn't have a debugger. libtesseract_vcxproj.txt

tdhintz commented 4 years ago

Found the build log.

CL.command.1.tlog.txt

zdenop commented 4 years ago

@stweil : I tried to create new test for msvc. I hit this problem: Result of my test is definition: HAVE_AVX. Compilation then fails (lld-link: error: undefined symbol: public: static struct tesseract::IntSimdMatrix const tesseract::IntSimdMatrix::intSimdMatrixSSE) because intSimdMatrixSSE is compiled only with HAVE_SSE4_1. So either there is missing implementation of intSimdMatrixAVX function or HAVE_AVX must requires HAVE_SSE4_1...

zdenop commented 4 years ago

@tdhintz : can you try this build https://send.firefox.com/download/0bee1b522136b332/#3xRo1g_Od5YNvQGckAWSqQ

tdhintz commented 4 years ago

@zdennop that worked.

zdenop commented 4 years ago

@tdhintz : can you try the latest tesseract code? I have VS 2017, but compilation does not work for me. I use clang with MSVC compatibility mode (and it works as you tested.)

tdhintz commented 4 years ago

I get a link error:


1>------ Build started: Project: BUILD_DEPENDENCIES, Configuration: Debug x64 ------
1>sw: building dependencies
2>------ Build started: Project: libtesseract, Configuration: Debug x64 ------
2>Auto build dll exports
2>   Creating library D:/Petri/50b/tesseract/build/Debug/tesseract50d.lib and object D:/Petri/50b/tesseract/build/Debug/tesseract50d.exp
2>simddetect.obj : error LNK2001: unresolved external symbol "public: static struct tesseract::IntSimdMatrix const tesseract::IntSimdMatrix::intSimdMatrixSSE" (?intSimdMatrixSSE@IntSimdMatrix@tesseract@@2U12@B)
2>D:\Petri\50b\tesseract\build\bin\Debug\tesseract50d.dll : fatal error LNK1120: 1 unresolved externals
2>Done building project "libtesseract.vcxproj" -- FAILED.
========== Build: 1 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

The end of the configuration output:


-- Compiler: MSVC
-- Used standard: C++17
-- CXX compiler options: /DWIN32 /D_WINDOWS /W3 /GR /EHsc /utf-8 /MP /O2 /Ob2 /DNDEBUG /wd4244 /wd4305 /wd4267
-- Compile definitions = HAVE_AVX;HAVE_AVX2;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H
-- Linker options: /machine:x64
-- Install directory: C:/Program Files (x86)/tesseract
-- Architecture flags: /arch:AVX2
-- Vector unit list: sse2;sse3;ssse3;sse4.1;sse4.2;avx;fma;bmi2;avx2
-- HAVE_AVX: ON
-- HAVE_AVX2: ON
-- HAVE_FMA:
-- HAVE_SSE4_1:
-- MARCH_NATIVE_OPT:
-- HAVE_NEON:
-- Link-time optimization: FALSE
-- --------------------------------------------------------
-- Build with sw [SW_BUILD]: ON
-- Build with openmp support [OPENMP_BUILD]: OFF
-- Disable disable graphics (ScrollView) [GRAPHICS_DISABLED]: OFF
-- Disable the legacy OCR engine [DISABLED_LEGACY_ENGINE]: OFF
-- Build training tools [BUILD_TRAINING_TOOLS]: ON
-- Build tests [BUILD_TESTS]: OFF
-- Use system ICU Library [USE_SYSTEM_ICU]: OFF
-- --------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Petri/50b/tesseract/build
zdenop commented 4 years ago

@tdhintz : try to replace in CMakeLists.txt:

https://github.com/tesseract-ocr/tesseract/blob/e910b3c20b831017b3152378bdaa4c567e62c65a/CMakeLists.txt#L209-L216

with:

    if(NOT HAVE_AVX2)
        CHECK_CXX_COMPILER_FLAG("/arch:AVX2" HAVE_AVX2_MSVC)
        if(HAVE_AVX2_MSVC)
            set(AVX2_COMPILE_FLAGS "/arch:AVX2")
            set(HAVE_AVX2 ON)
            set(HAVE_SSE4_1 ON)
            set(SSE4_1_COMPILE_FLAGS "/arch:AVX2 -D__SSE4_1__")
            add_definitions("-DHAVE_AVX2 -DHAVE_SSE4_1")
        endif()
    endif()

then remove build directory and:

mkdir build && cd build
Cmake .. -G "Visual Studio 16 2019" -A x64
tdhintz commented 4 years ago

It builds now but crashes:

C:\DevOps\Temp\Debug>tesseract --version
tesseract 5.0.0-alpha-753-ge910
 leptonica-1.80.0 (Jul  1 2020, 07:57:07) [MSC v.1926 LIB Debug x64]
  libgif 5.2.1 : libjpeg 9d : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 1.0.3 : libopenjp2 2.3.1
 Found SSE

C:\DevOps\Temp\Debug>tesseract bw_300.tif TessOut -l eng --psm 11 --oem 1 --tessdata-dir ../TrainedData/Fast -c lstm_choice_mode=2
Tesseract Open Source OCR Engine v5.0.0-alpha-753-ge910 with Leptonica
Page 1
zdenop commented 4 years ago

@tdhintz : can you please try to build (cl ssecheck.cpp /Fe:ssecheck.exe) this program and provide it result (from destination platform/machine)?

tdhintz commented 4 years ago
C:\DevOps\Temp\Debug>ssecheck
SSE:1
SSE2:1
SSE3:1
SSE4.1:1
SSE4.2:1
SSE4a:0
SSE5:0
AVX:0
tdhintz commented 4 years ago

^D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCT.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCT.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\SIMDDETECT.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\SIMDDETECT.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIX.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIX.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCTAVX.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /arch:AVX /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCTAVX.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIXAVX2.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /arch:AVX2 /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIXAVX2.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCTSSE.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D __SSE4_1__ /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /arch:AVX2 /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\DOTPRODUCTSSE.CPP
^D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIXSSE.CPP
/c /ID:\PETRI\50B\TESSERACT\BUILD /ID:\PETRI\50B\TESSERACT\BUILD\INCLUDE /ID:\PETRI\50B\TESSERACT\INCLUDE /ID:\PETRI\50B\TESSERACT\SRC\ARCH /ID:\PETRI\50B\TESSERACT\SRC\CCMAIN /ID:\PETRI\50B\TESSERACT\SRC\CCSTRUCT /ID:\PETRI\50B\TESSERACT\SRC\CCUTIL /ID:\PETRI\50B\TESSERACT\SRC\CLASSIFY /ID:\PETRI\50B\TESSERACT\SRC\CUTIL /ID:\PETRI\50B\TESSERACT\SRC\DICT /ID:\PETRI\50B\TESSERACT\SRC\LSTM /ID:\PETRI\50B\TESSERACT\SRC\OPENCL /ID:\PETRI\50B\TESSERACT\SRC\TEXTORD /ID:\PETRI\50B\TESSERACT\SRC\VIEWER /ID:\PETRI\50B\TESSERACT\SRC\WORDREC /ID:\PETRI\50B\TESSERACT\SRC\TRAINING /ID:\PETRI\50B\TESSERACT\SRC\VS2010\TESSERACT /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\SRC\SDIR\SRC /ID:\PETRI\50B\TESSERACT\BUILD\.SW\CMAKE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\75\6A\600E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\SRC\SDIR\LIBARCHIVE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\77\D7\6038\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\EB\0C\8FAA\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\00\4D\7BE6\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\42\70\B9E7\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\63\C5\6249\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\41\DD\3FD5\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\5F\22\3837\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\SRC\SDIR /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\CE\99\B2F8\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\SRC\SDIR\INCLUDE /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\B8\73\733E\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\SRC\SDIR\SRC\LIBLZMA\API /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\2A\68\57CB\OBJ\BLD\183203\BD /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\SRC\SDIR\LIB /IC:\USERS\TDHINTZ\.SW\STORAGE\PKG\6F\1F\98E6\OBJ\BLD\183203\BD /Zi /nologo /W4 /WX- /diagnostics:column /Od /Ob0 /D __SSE4_1__ /D WIN32 /D _WINDOWS /D HAVE_AVX2 /D HAVE_SSE4_1 /D TESS_EXPORTS /D HAVE_AVX /D _CRT_SECURE_NO_WARNINGS /D HAVE_CONFIG_H /D _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1 /D LEPT_DLL=SW_IMPORT /D "SW_EXPORT=__declspec(dllexport)" /D "SW_IMPORT=__declspec(dllimport)" /D SW_LIBARCHIVE_API=SW_IMPORT /D ARCHIVE_CRYPTO_MD5_NETTLE /D ARCHIVE_CRYPTO_RMD160_NETTLE /D ARCHIVE_CRYPTO_SHA1_NETTLE /D ARCHIVE_CRYPTO_SHA256_NETTLE /D ARCHIVE_CRYPTO_SHA384_NETTLE /D ARCHIVE_CRYPTO_SHA512_NETTLE /D HAVE_BZLIB_H /D HAVE_ICONV /D HAVE_ICONV_H /D HAVE_LIBLZ4 /D HAVE_LIBLZMA /D HAVE_LIBNETTLE /D HAVE_LIBXML_XMLREADER_H /D HAVE_LIBXML_XMLWRITER_H /D HAVE_LOCALCHARSET_H /D HAVE_LOCALE_CHARSET /D HAVE_LZ4HC_H /D HAVE_LZ4_H /D HAVE_LZMA_H /D HAVE_LZO_LZO1X_H /D HAVE_LZO_LZOCONF_H /D HAVE_NETTLE_AES_H /D HAVE_NETTLE_HMAC_H /D HAVE_NETTLE_MD5_H /D HAVE_NETTLE_PBKDF2_H /D HAVE_NETTLE_RIPEMD160_H /D HAVE_NETTLE_SHA_H /D HAVE_ZLIB_H /D HAVE_ZSTD_H /D BZ_IMPORT /D BZ_SHARED /D LZ4_DLL_IMPORT /D LIBICONV_DLL_EXPORTED=SW_IMPORT /D ICONV_CONST=const /D LIBCHARSET_DLL_EXPORTED=SW_IMPORT /D "LIBDIR=\".\"" /D "LOCALEDIR=\"./locale\"" /D __LZO_EXPORT1=SW_IMPORT /D ZSTD_DLL_IMPORT /D "CMAKE_INTDIR=\"Debug\"" /D libtesseract_EXPORTS /D _WINDLL /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /arch:AVX2 /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /std:c++17 /FAcs /Fa"LIBTESSERACT.DIR\DEBUG\\" /Fo"LIBTESSERACT.DIR\DEBUG\\" /Fd"LIBTESSERACT.DIR\DEBUG\VC142.PDB" /Gd /TP  /utf-8 /bigobj D:\PETRI\50B\TESSERACT\SRC\ARCH\INTSIMDMATRIXSSE.CPP
tdhintz commented 4 years ago

I manually built just the 2 SSE files, DOTPRODUCTSSE.CPP and INTSIMDMATRIXSSE.CPP, without the /Arch:avx2 switches and it works - no crash.

zdenop commented 4 years ago

So the setting that should work for you is this?

    if(NOT HAVE_AVX2)
        CHECK_CXX_COMPILER_FLAG("/arch:AVX2" HAVE_AVX2_MSVC)
        if(HAVE_AVX2_MSVC)
            set(AVX2_COMPILE_FLAGS "/arch:AVX2")
            set(HAVE_AVX2 ON)
            set(HAVE_SSE4_1 ON)
            set(SSE4_1_COMPILE_FLAGS "-D__SSE4_1__")
            add_definitions("-DHAVE_AVX2 -DHAVE_SSE4_1")
        endif()
    endif()
tdhintz commented 4 years ago

Yes, that works. Thank you!

stweil commented 4 years ago

PR #3052 tries to fix the MSVC build. I cannot test it myself, but maybe you can give it a try.

stweil commented 4 years ago

@zdenop, I think the latest problems were caused by /arch:FMA and /arch:SSE4.1 which are not supported by MSVC (see https://docs.microsoft.com/de-de/cpp/build/reference/arch-x86?view=vs-2019).

zdenop commented 4 years ago

@stweil : As I already point out I am able to use clang-cl (which is MSVC compatibility mode) at it has support for /arch:FMA and /arch:SSE4.1 (and -mfma -msse4.1, so it is a little bit seek&hide game for me ;-)

stweil commented 4 years ago

I see. Up to now I had neither clang-cl nor Visual Studio, so I am not in a better position. :-)

tdhintz commented 4 years ago

We ran a comparison between a pre-release of 4.0 and the current 5.0 on AVX2 and SSE hardware on Windows that I'll share just for grins. The 4.0 was built with floating point set to fast, COMDAT folding, OpenMP and was PGO optimized. The 5.0 build also used floating point 'fast' and COMDAT folding, but without OpenMP and without PGO optimization.

2,880 combinations of settings and images were tested for each AVX2 and SSE platform. The tests are by no means comprehensive of all possible combinations. For example, only Eng traindata was used, although the Fast, Best and Blended data were all used.

Accuracy: 373 tests had identical accuracy between v4 and v5 on both architectures. 271 tests were more accurate with v4 on both architectures. 2,236 tests were more accurate with v5 on both architectures.

In other words, architecture did not impact accuracy.

Performance numbers are generally more difficult to capture because the environments had different work loads which could skew results.

Performance: 251 tests had the same performance on AVX2. 223 tests had the same performance on SSE. 2,160 tests had better performance on AVX2 using v4. 2,527 tests had better performance on SSE using v4. 469 tests had better performance on AVX2 using v5. 130 tests had better performance on SSE using v5.

I don't know yet how much performance difference there was between v4 and v5. OpenMP is now disabled because occasionally it can seriously degrade performance. PGO optimization I'm told generally gains only a couple percentage points with performance.

tdhintz commented 4 years ago

One final followup. With the same configurations noted in the previous post, Tesseract 5.0 is substantially faster with OpenMP enabled on AVX2 and mixed results on SSE when compared to 4.0 with OpenMP. On SSE 5.0 w/OpenMP was faster than 4.0 w/OpenMP more than 50% of the time for the configurations that were measured.