Skip to content

Commit 2f9ce1f

Browse files
authored
Revise docs for Highway (libvips#3711)
1 parent 74adb39 commit 2f9ce1f

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

doc/How-it-works.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,18 @@ set of mechanisms to copy image areas by just adjusting pointers. Most of
109109
the time no actual copying is necessary and you can perform operations on
110110
large images at low cost.
111111
112-
**Run-time code generation**
112+
**SIMD optimisations**
113113
114-
VIPS uses
115-
<ulink url="https://gstreamer.freedesktop.org/modules/orc.html">Orc</ulink>, a
116-
run-time compiler, to generate code for some operations. For example, to
117-
compute a convolution on an 8-bit image, VIPS will examine the convolution
118-
matrix and the source image and generate a tiny program to calculate the
119-
convolution. This program is then "compiled" to the vector instruction set
120-
for your CPU, for example SSE3 on most x86 processors.
114+
VIPS uses
115+
<ulink url="https://github.com/google/highway">Highway</ulink>, a
116+
C++ library, to optimise various operations with SIMD/vector
117+
instructions. These optimised code paths are flexible and can adapt to
118+
different instruction sets, including those with 'scalable' vectors
119+
(size unknown at compile time). At runtime, dynamic dispatch selects
120+
the best available implementation based on the processor's capabilities,
121+
ensuring optimal performance.
121122
122-
Run-time vector code generation typically speeds operations up by a factor
123-
of three or four.
123+
SIMD typically speeds operations up by a factor of three or four.
124124
125125
**Joining operations together**
126126
@@ -229,7 +229,7 @@ time you call an operation, VIPS searches the cache for a previous call to
229229
the same operation with the same arguments. If it finds a match, you get
230230
the previous result again. This can give a huge speedup.
231231
232-
By default, VIPS caches the last 1,000 operation calls. You can also control
232+
By default, VIPS caches the last 100 operation calls. You can also control
233233
the cache size by memory use or by files opened.
234234
235235
(\* Some vips operations DO have side effects, for example,

doc/How-it-works.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ g_object_unref(region);
9595
Like most threaded image processing systems, all VIPS operations have to be free of side-effects. In other words, operations cannot modify images, they can only create new images. This could result in a lot of copying if an operation is only making a small change to a large image so VIPS has a set of mechanisms to copy image areas by just adjusting pointers. Most of the time no actual copying is necessary and you can perform operations on large images at low cost.
9696
</para>
9797
<para>
98-
<emphasis role="strong">Run-time code generation</emphasis>
98+
<emphasis role="strong">SIMD optimisations</emphasis>
9999
</para>
100100
<para>
101-
VIPS uses <ulink url="https://gstreamer.freedesktop.org/modules/orc.html">Orc</ulink>, a run-time compiler, to generate code for some operations. For example, to compute a convolution on an 8-bit image, VIPS will examine the convolution matrix and the source image and generate a tiny program to calculate the convolution. This program is then <quote>compiled</quote> to the vector instruction set for your CPU, for example SSE3 on most x86 processors.
101+
VIPS uses <ulink url="https://github.com/google/highway">Highway</ulink>, a C++ library, to optimise various operations with SIMD/vector instructions. These optimised code paths are flexible and can adapt to different instruction sets, including those with <quote>scalable</quote> vectors (size unknown at compile time). At runtime, dynamic dispatch selects the best available implementation based on the processor’s capabilities, ensuring optimal performance.
102102
</para>
103103
<para>
104-
Run-time vector code generation typically speeds operations up by a factor of three or four.
104+
SIMD typically speeds operations up by a factor of three or four.
105105
</para>
106106
<para>
107107
<emphasis role="strong">Joining operations together</emphasis>
@@ -191,7 +191,7 @@ g_object_unref(region);
191191
Because VIPS operations are free of side-effects*, you can cache them. Every time you call an operation, VIPS searches the cache for a previous call to the same operation with the same arguments. If it finds a match, you get the previous result again. This can give a huge speedup.
192192
</para>
193193
<para>
194-
By default, VIPS caches the last 1,000 operation calls. You can also control the cache size by memory use or by files opened.
194+
By default, VIPS caches the last 100 operation calls. You can also control the cache size by memory use or by files opened.
195195
</para>
196196
<para>
197197
(* Some vips operations DO have side effects, for example, <literal>vips_draw_circle()</literal> will draw a circle on an image. These operations emit an <quote>invalidate</quote> signal on the image they are called on and this signal makes all downstream operations and caches drop their contents.)

0 commit comments

Comments
 (0)