pitrou commented on code in PR #40374:
URL: https://github.com/apache/arrow/pull/40374#discussion_r1520397630


##########
docs/source/cpp/env_vars.rst:
##########
@@ -148,19 +152,29 @@ that changing their value later will have an effect.
    platforms currently do not implement any form of runtime dispatch.
 
    .. note::
-      In addition to runtime dispatch, the compile-time SIMD level can
-      be set using the ``ARROW_SIMD_LEVEL`` CMake configuration variable.
-      Unlike runtime dispatch, compile-time SIMD optimizations cannot be
-      changed at runtime (for example, if you compile Arrow C++ with AVX512
-      enabled, the resulting binary will only run on AVX512-enabled CPUs).
-      Setting ``ARROW_USER_SIMD_LEVEL=NONE`` prevents the execution of
-      explicit SIMD optimization code, but it does not rule out the execution
-      of compiler generated SIMD instructions.  E.g., on x86_64 platform,
-      Arrow is built with ``ARROW_SIMD_LEVEL=SSE4_2`` by default.  Compiler
-      may generate SSE4.2 instructions from any C/C++ source code.  On legacy
-      x86_64 platforms do not support SSE4.2, Arrow binary may fail with
-      SIGILL (Illegal Instruction).  User must rebuild Arrow and PyArrow from
-      scratch by setting cmake option ``ARROW_SIMD_LEVEL=NONE``.
+      In addition to runtime dispatch, Arrow's build system supports two

Review Comment:
   Ok, perhaps instead of framing this note in terms of CMake configuration 
variables, we should explain the two different kinds of SIMD optimizations? 
This would be more user-oriented (this is a page about environment variables 
after all).
   
   Something like:
   > In addition to runtime-selected SIMD optimizations dispatch, Arrow C++ can 
also be compiled
   > with SIMD optimizations that are cannot be disabled at runtime. For 
example, by default, SSE4.2
   > optimizations are enabled on x86 builds: therefore, with this default 
setting, Arrow C++ does
   > not work at all on a CPU without support for SSE4.2. This setting can be 
changed using
   > the``ARROW_SIMD_LEVEL`` CMake variable so as to either raise or lower the 
optimization level.
   >
   > Finally, the ``ARROW_RUNTIME_SIMD_LEVEL`` CMake variable sets a 
compile-time upper bound
   > to runtime-selected SIMD optimizations. This useful in cases where a 
compiler reports support
   > for an instruction set but does not actually support it in full.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to