Return-Path: <tiff-bounces@lists.osgeo.org>
Received: from mailgate226.isp.belgacom.be ([195.238.22.91])
          by mailfep009.skynet.be
          (InterMail vM.8.04.03.28.4 201-2389-100-182-103-20180124)
          with ESMTP
          id <20210502103354.MABK7576.mailfep009.skynet.be@mailgate226.isp.belgacom.be>
          for <chris.lindelaan@skynet.be>; Sun, 2 May 2021 12:33:54 +0200
Received-SPF: None (mx201.skynet.be: no sender authenticity
  information available from domain of
  tiff-bounces@lists.osgeo.org) identity=pra;
  client-ip=140.211.15.3; receiver=mx201.skynet.be;
  envelope-from="tiff-bounces@lists.osgeo.org";
  x-sender="tiff-bounces@lists.osgeo.org";
  x-conformance=sidf_compatible
Received-SPF: Pass (mx201.skynet.be: domain of
  tiff-bounces@lists.osgeo.org designates 140.211.15.3 as
  permitted sender) identity=mailfrom; client-ip=140.211.15.3;
  receiver=mx201.skynet.be;
  envelope-from="tiff-bounces@lists.osgeo.org";
  x-sender="tiff-bounces@lists.osgeo.org";
  x-conformance=sidf_compatible; x-record-type="v=spf1";
  x-record-text="v=spf1 mx a:mail.osgeo.org a:lists.osgeo.org
  a:mail.osgeo.osuosl.org a:tracsvn.osgeo.osuosl.org -all"
Received-SPF: Pass (mx201.skynet.be: domain of
  postmaster@lists.osgeo.org designates 140.211.15.3 as
  permitted sender) identity=helo; client-ip=140.211.15.3;
  receiver=mx201.skynet.be;
  envelope-from="tiff-bounces@lists.osgeo.org";
  x-sender="postmaster@lists.osgeo.org";
  x-conformance=sidf_compatible; x-record-type="v=spf1";
  x-record-text="v=spf1 mx a:mail.osgeo.org a:lists.osgeo.org
  a:mail.osgeo.osuosl.org a:tracsvn.osgeo.osuosl.org -all"
Authentication-Results: mx201.skynet.be; spf=None smtp.pra=tiff-bounces@lists.osgeo.org; spf=Pass smtp.mailfrom=tiff-bounces@lists.osgeo.org; spf=Pass smtp.helo=postmaster@lists.osgeo.org; dkim=hardfail (body hash did not verify [final]) header.i=@gmail.com; dkim=hardfail (body hash did not verify [final]) header.i=@gmail.com; dmarc=fail (p=none dis=none) d=gmail.com
IronPort-SDR: N2tkgh23AOeWTRlRGSPVfbQWNuljvapUg76Zmz/ggPVRUOUG+kO7ecfpNUIxencqCDXZfDPudg
 2D9dLAO1mou1DebieWt6G25wmtwhtQfjs74bfDeYhid5crKCXlNTwYfIAqRXQ+2dEi5EthovvA
 7Yz8mGItkLcGz6sqLSxCM9CIYa9PKrRa1fVSXmtR63qzyG0ClLR8RYiw1dfccm1U1cegnLEyJn
 pj1MSzK+OZ9gVg9JrFr1Q9fKM7msbPc1C//E8u53oHQOiPxXTEi8R875foqfPV0ZVA1E09auOp
 tSXhXxZRmVxliuOG/u7Ig62+
X-IPAS-Result: =?us-ascii?q?A0FcBDNjf45ghwMP04xCGB4BAQsSDECBGoJhARgBZFcBJ?=
 =?us-ascii?q?gMHOYREiQSIcAOBDIo2iRSHaRsYFAEBAgEBAQEBCR0BDggEAQEBAgEDgRBEg?=
 =?us-ascii?q?nVTCYEjHwYBBDQTAgECAQEBAQMCAwEBAQEBAQQBAQECAQECAwICAQECEAEBA?=
 =?us-ascii?q?YEBBn4DAT4EYgZbBDUBgTYMAjENgjgFAgMfAQYLBF5NAwMDAQEBAQEBAQEBA?=
 =?us-ascii?q?QEBAQEiAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQENAg1SH0gBAQECA?=
 =?us-ascii?q?QEBAQ8RHQEFCgUHEAILAQIBAQEBAgYBAQUFCyAPBAQCAgMBHgEEAQwBBQEcB?=
 =?us-ascii?q?hMFHYJPAYJUAQMOIQUKmwqBBD2LMAKBFQUBF4EBggUGBQIBA4EyAYM8ChkoD?=
 =?us-ascii?q?WMDgTgCBxKBKIcFAQGEO4IeQ4FJQnobNoI2Nj6BUYEPAQECAYEYcoJqgmEEg?=
 =?us-ascii?q?gJGehMUCA8BBRJEcTcBQR6QU403DYsgkWtYgkKBKAuIRowMhykng1SBQI9pk?=
 =?us-ascii?q?CWfEIIekj9GhHUQI4FIIQKBWk0jFTsxgjgJRAECAQINAgEBAQMBAgECAgEBA?=
 =?us-ascii?q?gIBAQEBi0SCNiKDcIUUhUs/ATELLQIGAQkBAQMJiyOBbAEB?=
IronPort-PHdr: A9a23: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
 vEjFZaYp0Du
IronPort-HdrOrdr: A9a23:IQc8kq9cGrs4WHFxpkhuk+E6db1zdoIgy1knxilNYDZeG/bo5P
 yGtvIdyBPylXItSGgt8OrwSpWobFH90dpO4YcXNaq/RwWOggeVBaxr8IeK+UyGJwTT7fVazr
 0lTq4WMqyEMXFUlsD/iTPId+oI4N7Cy6ywgPeb8nEFd3AOV4hE7x1lTieWF1Qefng2ObMdFI
 CAoupLzgDQBUg/S8SgGz09WfLfzue76q7ORB4dGloc9AKVhyip47KSKWnp4j46UylThYsk63
 TPiQbj5q6u2svLtSP080/2w9BolMD6yt1Fbfb86fQ9Djn3kA6naMBAdtS5zVYIidi15Fwnnd
 XKqRtIBbUP11rrcmu4oQTg1mDbuV5EgRLf4GSVjnf5rcvySChSMbsiuatifhzV51FIhqAJ7I
 tww2mbu5BLZCmw5BjV2t6gbWASqmOE5VEvnekvjnBFXeIlGcRshL1a0kcQNJsbBir15MQcDe
 FyAKjnisp+QBe1aXbWu2Uq7f6NejAIHhmASlUfocD96VdrtUE84U0fyskS2k0F6Yt4cZ9Z/O
 7JW54IqJh+Cusfbad4DOBEfsetEGzKRnv3QRivCGWiL60MN3LTp5Of2tUI2N0=
X-IronPort-Anti-Spam-Filtered: true
X-MGA-submission: =?us-ascii?q?MDF1Qrx6cpebeewCZ3G4T7pNlR690c2nGK5Vw8?=
 =?us-ascii?q?A6geLq60sMcQnwuimVaguMh2nofNJwVPFmdDEZuPC41Bb9I1bD2r6nYM?=
 =?us-ascii?q?3QO4/UlGFN8gpsmF92zZx8GuOMU6ZnHOgjVj4=3D?=
Received: from osgeo6.osgeo.osuosl.org (HELO lists.osgeo.org) ([140.211.15.3])
  by mx201.skynet.be with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 May 2021 12:33:52 +0200
Received: from osgeo6.osgeo.osuosl.org (localhost [127.0.0.1])
	by lists.osgeo.org (Postfix) with ESMTP id 18B436145915;
	Sun,  2 May 2021 03:33:46 -0700 (PDT)
Received: from mail-io1-f41.google.com (mail-io1-f41.google.com
 [209.85.166.41])
 by lists.osgeo.org (Postfix) with ESMTPS id A86796146DC9
 for <tiff@lists.osgeo.org>; Sun,  2 May 2021 03:33:44 -0700 (PDT)
Received: by mail-io1-f41.google.com with SMTP id v123so1859322ioe.10
 for <tiff@lists.osgeo.org>; Sun, 02 May 2021 03:33:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc; bh=PZxY4+OmLl0hEEHtVKQPh6DqZrdKTjCPa5QgIxVBuzk=;
 b=FeA9B8QyPIcdkk1x/uDpuYh19wbQyxz7JZOdyTWr/J8NrOj61io8dWS666Y2qI47LS
 SNlZpycPMNqM6W+HB8kLDCKJG9lHFEvn9vncdUh8YF2aasJZl9eAipZjh541GNp+ShaW
 sTMfthjQ4TO9wgp74PF09a7/ap1uugJ7e7t5U0xog5cugMhzyvZKRnYFNjKB5FsvYtDd
 7V9rWvAOD+fkhwUYweSsyh/yE+wJNQFzQPxeigsj6PFfL/cx8mrjhFTZcPv3iJsDxAlh
 Q8cJyFIsFlX0yjQOER8Y15lmxMSbq3YmXhUXPHHgDU1qZTAOsXJY3zLp/fziCTw0Hf+i
 jb6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc;
 bh=PZxY4+OmLl0hEEHtVKQPh6DqZrdKTjCPa5QgIxVBuzk=;
 b=TaylcL30QwjFIQbI4My3qiEa0d4ld896GaHC3B4FeqE0blVPGIkK5m+OIBdVE1Foaz
 ni9HlIhIZrNfZNntJTp+mc2bRfo+EVmPIKOJoHgZrw8H5WPXQwXdYbOTwYRbzsNdwYCm
 fighvTXghaY1UQ+XN62iuT6eAfk03UC4D5r1jmqSSqmcRv4Lswq5xCXtiTYmpgR7xpQd
 H1shWNflS1oj9JEg46UxfjEk0ZHA54Af/SjXZZlAs9n5JycLyC6gtAsN0mp5e8LlozpN
 1T1tsLpq1RfwkMEonKfV+weg2FJtrKnmEwjwYSeb0Sey0JaE5zZCxgxIMkQtVBRz6qnu
 F9AQ==
X-Gm-Message-State: AOAM531OFEBqLg1odRt7SVWLHlblIG/I65BxQI7W/SXalXWdfjlm77V3
 JITlx7i54SO0lh//eEWVPCVm8zgNwSmS2WjO7jc=
X-Google-Smtp-Source: ABdhPJwdm0hPep6DExMmrAcAATraUs4Ch2IvWx2YOCCwckzIT5edlgQG+TPULHmm5SOEGNSnsb1LI5M0v6UPuhYKtgY=
X-Received: by 2002:a5e:9e4a:: with SMTP id j10mr3852461ioq.52.1619951623953; 
 Sun, 02 May 2021 03:33:43 -0700 (PDT)
MIME-Version: 1.0
References: <CAHYwHP5NmH+--ckEVeidjxrBVHbFSptCH0CD5d600t8gq7Xafw@mail.gmail.com>
 <07baca89-e473-8e24-1d54-309152b05774@spatialys.com>
In-Reply-To: <07baca89-e473-8e24-1d54-309152b05774@spatialys.com>
From: ZdPo Ster <zdposter@gmail.com>
Date: Sun, 2 May 2021 12:33:32 +0200
Message-ID: <CAC=ZCwwd-k+VHNtLcSbqpo3yxhwuVZLXp1=O4QBq_+tpngRqvQ@mail.gmail.com>
To: Even Rouault <even.rouault@spatialys.com>
Subject: Re: [Tiff] SIMD optimizations
X-BeenThere: tiff@lists.osgeo.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: TIFF and libtiff discussion <tiff.lists.osgeo.org>
List-Unsubscribe: <https://lists.osgeo.org/mailman/options/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=unsubscribe>
List-Post: <mailto:tiff@lists.osgeo.org>
List-Help: <mailto:tiff-request@lists.osgeo.org?subject=help>
List-Subscribe: <https://lists.osgeo.org/mailman/listinfo/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=subscribe>
Cc: tiff@lists.osgeo.org
Content-Type: multipart/mixed; boundary="===============1723007873663752918=="
Errors-To: tiff-bounces@lists.osgeo.org
Sender: "Tiff" <tiff-bounces@lists.osgeo.org>

--===============1723007873663752918==
Content-Type: multipart/alternative; boundary="0000000000001960cf05c15661ac"

--0000000000001960cf05c15661ac
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

tesseract[1] (also) has runtime detection of available instructions.

If runtime detection is implemented then maintaining (several) build
systems [2] should be easy: just need to check if compiler accept
optimization flags.
See also tesseract - there is autoconf and cmake support.

Zdenko


[1] https://github.com/tesseract-ocr/tesseract
[2]
https://github.com/tesseract-ocr/tesseract/blob/a9682bb6e2c32797f455c95de66=
ea87e00624dbe/configure.ac#L126

On Sun, 2 May 2021 at 11:52, Even Rouault <even.rouault@spatialys.com>
wrote:

> Larry,
>
> That sounds interesting. I've given a try at your branch.
>
> - The build error is due to a missing -mssse3 flag that is required for
> gcc. Otherwise for x86_64, it fallbacks to the baseline sse2 which is the
> only SIMD instruction set guaranteed to be available at runtime
>
> - ideally we should have a generic build, that contains the base SSE2 cod=
e
> path (or just x86 for x86 32 bit) and the SSSE3 optimized code path, but
> only takes the later if SSSE3 is available at runtime (for detection of
> instruction sets, I've code for that in
> https://github.com/OSGeo/gdal/blob/master/gdal/port/cpl_cpu_features.cpp
> / https://github.com/OSGeo/gdal/blob/master/gdal/port/cpl_cpu_features.h
> that's compatible of libtiff license). The SSSE3 code should be put in a
> separate .c file that would be the only one built with -mssse3. I'm not
> familiar about the situation on the Arm / NEON side, but I presume this
> might be similar (or perhaps we could just live with an explicit
> turn-neon-simd flag at build time)
>
> - we'd probably want autoconf support. (That's where maintaining several
> build systems is painful...)
>
> - there is a bug in the SSSE3 code path. The pixel values I get after
> decompression are altered. The tiny attached file can demonstrate that.
>
> - valgrind isn't happy either (not on the attached file, but on a slightl=
y
> larger one : 400x200, stripped with strip height of 6, 3 interleaved
> channels of 8-bit each)
>
> =3D=3D2742662=3D=3D Invalid read of size 16
> =3D=3D2742662=3D=3D    at 0x4890D68: _mm_loadu_si128 (emmintrin.h:703)
> =3D=3D2742662=3D=3D    by 0x4890D68: horAcc8 (tif_predict.c:376)
>
> - the libtiff test suite is seriously lacking (but we already knew that)
> as "make check" is happy despite those bugs. We should definitely have
> additions into it that verify the good working of the modified code paths=
.
> For ARM that would be a bit tricky as our CI is x86 only. I guess we coul=
d
> use a gcc cross-compiler and qemu user-mode emulation to build & test for
> ARM as well from x86 machines.
>
> - regarding performance gains, I only got a 5% improvement however on a
> 8000x8000 large image, lzw compressed, predictor 2, tiles of 512x512, 4
> channels, interleaved, 16bit, compression ratio
> (uncompressed_size/compressed_size) of 1.6. That seems a bit too low to
> justify all the above efforts.
>
> Even
> Le 02/05/2021 =C3=A0 02:36, Larry Bank a =C3=A9crit :
>
> Hi All,
> I've begun writing SIMD optimized code for libtiff. My last note to this
> mailing list didn't get any responses, but I still would appreciate
> support/feedback from interested parties. I don't have any experience wit=
h
> the automatic build process on Gitlab, but it's throwing an error from my
> changes for a certain target platform. The code requires at least SSSE3 o=
n
> Intel and NEON on Arm. This latest round of code speeds up overall decode
> by 20+% if the 'predictor' is used. There is a lot more code which needs
> optimization. I don't use libtiff, so it would be helpful for people to
> speak up and tell me what type of images they encode/decode with it. I ca=
n
> do similar improvements to the encode side if it would be useful. I forke=
d
> libtiff and my latest changes are here:
>
> https://gitlab.com/bitbank/libtiff
>
> Larry B.
>
>
> _______________________________________________
> Tiff mailing listTiff@lists.osgeo.orghttps://lists.osgeo.org/mailman/list=
info/tiff
>
> -- http://www.spatialys.com
> My software is free, but my time generally not.
>
> _______________________________________________
> Tiff mailing list
> Tiff@lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/tiff
>

--0000000000001960cf05c15661ac
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><div>tesseract[1] (also) has runtime dete=
ction of available instructions.</div><div><br></div><div>If runtime detect=
ion is implemented then maintaining (several) build systems
[2]

 should be easy: just need to check if compiler accept optimization flags.<=
/div><div>See also tesseract - there is autoconf and cmake support.</div><d=
iv><br></div><div>Zdenko<br></div><div><br></div><div><br></div><div>[1] <a=
 href=3D"https://github.com/tesseract-ocr/tesseract">https://github.com/tes=
seract-ocr/tesseract</a></div><div>[2] <a href=3D"https://github.com/tesser=
act-ocr/tesseract/blob/a9682bb6e2c32797f455c95de66ea87e00624dbe/configure.a=
c#L126">https://github.com/tesseract-ocr/tesseract/blob/a9682bb6e2c32797f45=
5c95de66ea87e00624dbe/configure.ac#L126</a></div></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, 2 May 2021 at 11:5=
2, Even Rouault &lt;<a href=3D"mailto:even.rouault@spatialys.com">even.roua=
ult@spatialys.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex">
 =20
   =20
 =20
  <div>
    <p>Larry,</p>
    <p>That sounds interesting. I&#39;ve given a try at your branch.</p>
    <p>- The build error is due to a missing -mssse3 flag that is
      required for gcc. Otherwise for x86_64, it fallbacks to the
      baseline sse2 which is the only SIMD instruction set guaranteed to
      be available at runtime<br>
    </p>
    <p>- ideally we should have a generic build, that contains the base
      SSE2 code path (or just x86 for x86 32 bit) and the SSSE3
      optimized code path, but only takes the later if SSSE3 is
      available at runtime (for detection of instruction sets, I&#39;ve cod=
e
      for that in
      <a href=3D"https://github.com/OSGeo/gdal/blob/master/gdal/port/cpl_cp=
u_features.cpp" target=3D"_blank">https://github.com/OSGeo/gdal/blob/master=
/gdal/port/cpl_cpu_features.cpp</a>
      /
      <a href=3D"https://github.com/OSGeo/gdal/blob/master/gdal/port/cpl_cp=
u_features.h" target=3D"_blank">https://github.com/OSGeo/gdal/blob/master/g=
dal/port/cpl_cpu_features.h</a>
      that&#39;s compatible of libtiff license). The SSSE3 code should be
      put in a separate .c file that would be the only one built with
      -mssse3. I&#39;m not familiar about the situation on the Arm / NEON
      side, but I presume this might be similar (or perhaps we could
      just live with an explicit turn-neon-simd flag at build time)</p>
    <p>- we&#39;d probably want autoconf support. (That&#39;s where maintai=
ning
      several build systems is painful...)<br>
    </p>
    <p>- there is a bug in the SSSE3 code path. The pixel values I get
      after decompression are altered. The tiny attached file can
      demonstrate that.</p>
    <p>- valgrind isn&#39;t happy either (not on the attached file, but on =
a
      slightly larger one : 400x200, stripped with strip height of 6, 3
      interleaved channels of 8-bit each)<br>
    </p>
    <p>=3D=3D2742662=3D=3D Invalid read of size 16<br>
      =3D=3D2742662=3D=3D=C2=A0=C2=A0=C2=A0 at 0x4890D68: _mm_loadu_si128 (=
emmintrin.h:703)<br>
      =3D=3D2742662=3D=3D=C2=A0=C2=A0=C2=A0 by 0x4890D68: horAcc8 (tif_pred=
ict.c:376)<br>
      <br>
    </p>
    <p>- the libtiff test suite is seriously lacking (but we already
      knew that) as &quot;make check&quot; is happy despite those bugs. We =
should
      definitely have additions into it that verify the good working of
      the modified code paths. For ARM that would be a bit tricky as our
      CI is x86 only. I guess we could use a gcc cross-compiler and qemu
      user-mode emulation to build &amp; test for ARM as well from x86
      machines.<br>
    </p>
    <p>- regarding performance gains, I only got a 5% improvement
      however on a 8000x8000 large image, lzw compressed, predictor 2,
      tiles of 512x512, 4 channels, interleaved, 16bit, compression
      ratio (uncompressed_size/compressed_size) of 1.6. That seems a bit
      too low to justify all the above efforts.<br>
    </p>
    <p>Even<br>
    </p>
    <div>Le 02/05/2021 =C3=A0 02:36, Larry Bank a
      =C3=A9crit=C2=A0:<br>
    </div>
    <blockquote type=3D"cite">
      <div dir=3D"ltr">
        <div>Hi All,</div>
        <div>I&#39;ve begun writing SIMD optimized
          code for libtiff. My last note to this mailing list didn&#39;t ge=
t
          any responses, but I still would appreciate support/feedback
          from interested parties. I don&#39;t have any experience with the
          automatic build process on Gitlab, but it&#39;s throwing an error
          from my changes for a certain target platform. The code
          requires at least SSSE3 on Intel and NEON on Arm. This latest
          round of code speeds up overall decode by 20+% if the
          &#39;predictor&#39; is used. There is a lot more code which needs
          optimization. I don&#39;t use libtiff, so it would be helpful for
          people to speak up and tell me what type of images they
          encode/decode with it. I can do similar improvements to the
          encode side if it would be useful. I forked libtiff and my
          latest changes are here:</div>
        <div><br>
        </div>
        <div><a href=3D"https://gitlab.com/bitbank/libtiff" target=3D"_blan=
k">https://gitlab.com/bitbank/libtiff</a></div>
        <div><br>
        </div>
        <div>Larry B.</div>
        <div><br>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <pre>_______________________________________________
Tiff mailing list
<a href=3D"mailto:Tiff@lists.osgeo.org" target=3D"_blank">Tiff@lists.osgeo.=
org</a>
<a href=3D"https://lists.osgeo.org/mailman/listinfo/tiff" target=3D"_blank"=
>https://lists.osgeo.org/mailman/listinfo/tiff</a>
</pre>
    </blockquote>
    <pre cols=3D"72">--=20
<a href=3D"http://www.spatialys.com" target=3D"_blank">http://www.spatialys=
.com</a>
My software is free, but my time generally not.</pre>
  </div>

_______________________________________________<br>
Tiff mailing list<br>
<a href=3D"mailto:Tiff@lists.osgeo.org" target=3D"_blank">Tiff@lists.osgeo.=
org</a><br>
<a href=3D"https://lists.osgeo.org/mailman/listinfo/tiff" rel=3D"noreferrer=
" target=3D"_blank">https://lists.osgeo.org/mailman/listinfo/tiff</a><br>
</blockquote></div></div>

--0000000000001960cf05c15661ac--

--===============1723007873663752918==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Tiff mailing list
Tiff@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/tiff

--===============1723007873663752918==--
