You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@arrow.apache.org by "mapleFU (via GitHub)" <gi...@apache.org> on 2024/03/04 02:43:42 UTC
[I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
mapleFU opened a new issue, #40333:
URL: https://github.com/apache/arrow/issues/40333
### Describe the usage question you have. Please include as many useful details as possible.
In Arrow, we have two SIMD flag in CMake listed below:
```cmake
define_option_string(ARROW_SIMD_LEVEL
"Compile-time SIMD optimization level"
"DEFAULT" # default to SSE4_2 on x86, NEON on Arm, NONE otherwise
"NONE"
"SSE4_2"
"AVX2"
"AVX512"
"NEON"
"SVE" # size agnostic SVE
"SVE128" # fixed size SVE
"SVE256" # "
"SVE512" # "
"DEFAULT")
define_option_string(ARROW_RUNTIME_SIMD_LEVEL
"Max runtime SIMD optimization level"
"MAX" # default to max supported by compiler
"NONE"
"SSE4_2"
"AVX2"
"AVX512"
"MAX")
```
They're added in the two patches:
1. https://github.com/apache/arrow/commit/c15637d594daa17c91071476f38787f3c60bc5ca
2. https://github.com/apache/arrow/commit/f8c9c8bd47b9e32885b4d3829a418ce7a567f2e1
However, `ARROW_RUNTIME_SIMD_LEVEL` would also be checked in compile time. So, what's the difference between these two flags? Or do I misunderstand the meaning of "runtime" here(I mean dynamicly checking it when runing the program)?
### Component(s)
C++
--
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: issues-unsubscribe@arrow.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "wjones127 (via GitHub)" <gi...@apache.org>.
wjones127 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977153483
> who wants to use Arrow on, say, a <SSE4.2 machine would still need a custom build of Arrow so I'm still a bit confused.
Yes, but SSE4 goes back to 2008. AVX2 was available in 2013 on Haswell. I'm not sure it would be that surprising you need a custom build to run on a machine built in 2005.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976845042
Ideally, all CPU-specific optimizations should be selected at runtime. It's just more work.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "amoeba (via GitHub)" <gi...@apache.org>.
amoeba commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977176335
Thanks @pitrou, I'll put up a PR with this and @wjones127's idea for us to look at.
> Yes, but SSE4 goes back to 2008. AVX2 was available in 2013 on Haswell. I'm not sure it would be that surprising you need a custom build to run on a machine built in 2005.
Fair point :)
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "zanmato1984 (via GitHub)" <gi...@apache.org>.
zanmato1984 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976082113
> I guess it doesn't 🤔?
>
> `ARROW_USER_SIMD_LEVEL` env controls the dynamically dispatch the instr, and controls the `CpuInfo` struct. However, some code are under `ARROW_HAVE_RUNTIME_{}` flag[1], and some are under `ARROW_HAVE_{}` flag[2]...
>
> 1. https://github.com/apache/arrow/blob/640667664abbdb9ddf38d32781715cc783a69885/cpp/src/parquet/level_comparison.cc#L30
> 2. https://github.com/apache/arrow/blob/640667664abbdb9ddf38d32781715cc783a69885/cpp/src/arrow/csv/lexing_internal.h#L122
Oh I got your point.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976870697
Perhaps we can find a way to better explain / document these variables? @amoeba @wjones127 Would you have an idea?
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976751134
The wording could probably be improved, but there are two categories of SIMD optimizations in Arrow:
1) some optimizations are enabled statically at compile-time; these are governed by `ARROW_SIMD_LEVEL`. If you compile with `ARROW_SIMD_LEVEL=AVX2` and execute on non-AVX2 CPU, the code will crash.
2) some optimizations are selected dynamically at runtime; these are governed by `ARROW_RUNTIME_SIMD_LEVEL`. If you compile with `ARROW_RUNTIME_SIMD_LEVEL=AVX2` and execute on non-AVX2 CPU, a non-AVX2 code path (perhaps SSE2) will be executed. If you compile with `ARROW_RUNTIME_SIMD_LEVEL=AVX2` and execute on AVX2 CPU, a AVX2 code path will be executed (but not AVX512, because for that you would have needed `ARROW_RUNTIME_SIMD_LEVEL=AVX512`)
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976756798
Also, `ARROW_USER_SIMD_LEVEL` is tied to `ARROW_RUNTIME_SIMD_LEVEL`. The concrete SIMD level selected is `MIN(ARROW_RUNTIME_SIMD_LEVEL, ARROW_USER_SIMD_LEVEL, CPU support)`.
For example, if you compiled with `ARROW_RUNTIME_SIMD_LEVEL=AVX512` and execute on a AVX2 CPU, you will get a AVX2 code path by default. But you can force Arrow to use a SSE2 code path by setting `ARROW_USER_SIMD_LEVEL=SSE4_2`.
(why it's called "user" I don't remember...)
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "zanmato1984 (via GitHub)" <gi...@apache.org>.
zanmato1984 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977057179
> I think "theoretically" in this context means "there is no technical reason, outside of implementing the runtime selection, for this not to be managed by `ARROW_RUNTIME_SIMD_LEVEL`".
Precisely!
> Which I guess you answered with your previous comment :D
>
> > Ideally, all CPU-specific optimizations should be selected at runtime. It's just more work.
Also precisely!
Thank you!
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1978465370
> I agree this is useful. Previous days I meet a problem that pdep is slow on amd zen2.
The code is there to help you. See https://github.com/apache/arrow/blob/3ba6d286caad328b8572a3b9228045da8c8d2043/cpp/src/arrow/util/cpu_info.h#L101-L104
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "zanmato1984 (via GitHub)" <gi...@apache.org>.
zanmato1984 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976353367
After some research on the code history, it appears to me that:
1. The naming similarity between `ARROW_SIMD_LEVEL`/`ARROW_RUNTIME_SIMD_LEVEL` and `ARROW_HAVE_* `/`ARROW_HAVE_RUNTIME_*` seems to be a (unfortunate?) coincidence. They don't really relate to each other.
2. The cmake option `ARROW_RUNTIME_SIMD_LEVEL` seems to be introduced in https://github.com/apache/arrow/pull/8049 to solely tailor the SIMD level specified by `ARROW_SIMD_LEVEL` at compile time.
3. The `ARROW_HAVE_RUNTIME_*` (introduced in https://github.com/apache/arrow/pull/7607) macros seem to be duplicated with `ARROW_HAVE_*` (introduced in https://github.com/apache/arrow/pull/6794) and need some cleanup.
@pitrou I'm not familiar with the full story so please correct me if I get anything wrong.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977142577
The use case is being able to compare performance with or without those specific code paths if you have a machine that supports them. In some (very?) rare cases it might also help to work around issues with bad CPU support. (I think we had bugs where some CPU instruction set was supposed to be supported, but the kernel/VM hypervisor didn't handle it correctly)
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977853012
> In some (very?) rare cases it might also help to work around issues with bad CPU support.
I agree this is useful. Previous days I meet a problem that pdep is slow on amd zen2.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] [C++] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-2003625304
Issue resolved by pull request 40374
https://github.com/apache/arrow/pull/40374
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU closed issue #40333: What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL`
URL: https://github.com/apache/arrow/issues/40333
--
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: issues-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "wjones127 (via GitHub)" <gi...@apache.org>.
wjones127 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977121154
> Perhaps we can find a way to better explain / document these variables?
It seems like the only thing that is missing from the docs at https://arrow.apache.org/docs/cpp/env_vars.html#envvar-ARROW_USER_SIMD_LEVEL is an explanation of what `ARROW_RUNTIME_SIMD_LEVEL` does and why one would use it.
Perhaps something like:
> In addition to `ARROW_SIMD_LEVEL` there is another CMake flag `ARROW_RUNTIME_SIMD_LEVEL`. This controls the maximum runtime-selectable SIMD path that is compiled. For example, if set to `AVX2` on x86, then all `AVX512` code paths with be omitted from the compiled code.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976965810
> Does it mean that, theoretically, all the simd code in arrow can be fully managed by `ARROW_RUNTIME_SIMD_LEVEL`?
I'm not sure what you mean by "theoretically"? It would require implementing runtime selection for the optimizations that are currently enabled statically.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976842088
Oh, sorry seems I just regard it as `ARROW_RUNTIME_SIMD_LEVEL`. it means we have two kinds of optimizations here. So how to choosing between them when choosing to use an SIMD optimization?
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976015427
I guess it doesn't 🤔?
`ARROW_USER_SIMD_LEVEL` env controls the dynamically dispatch the instr, and controls the `CpuInfo` struct. However, some code are under `ARROW_HAVE_RUNTIME_{}` flag, and some are under `ARROW_HAVE_{}` flag...
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "amoeba (via GitHub)" <gi...@apache.org>.
amoeba commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1979532038
Hi all, I put up a PR to improve the docs around these variables at https://github.com/apache/arrow/pull/40374. Please have a look and leave any and all feedback.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "zanmato1984 (via GitHub)" <gi...@apache.org>.
zanmato1984 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1975989105
Hi @mapleFU , maybe you can see if this section [1] in arrow doc answers your question.
[1] https://arrow.apache.org/docs/cpp/env_vars.html#envvar-ARROW_USER_SIMD_LEVEL
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976790707
Aha I got to understand this, so for some user like pyarrow, x86 lib might compile with avx2 avx512 but only uses avx2, and arm compiles with neon? And other user compile C++ directly might define them themselves?
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "pitrou (via GitHub)" <gi...@apache.org>.
pitrou commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976827174
No, it's as I explained in https://github.com/apache/arrow/issues/40333#issuecomment-1976751134
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "zanmato1984 (via GitHub)" <gi...@apache.org>.
zanmato1984 commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976961849
> The wording could probably be improved, but there are two categories of SIMD optimizations in Arrow:
>
> 1. some optimizations are enabled statically at compile-time; these are governed by `ARROW_SIMD_LEVEL`. If you compile with `ARROW_SIMD_LEVEL=AVX2` and execute on non-AVX2 CPU, the code will crash.
> 2. some optimizations are selected dynamically at runtime; these are governed by `ARROW_RUNTIME_SIMD_LEVEL`. If you compile with `ARROW_RUNTIME_SIMD_LEVEL=AVX2` and execute on non-AVX2 CPU, a non-AVX2 code path (perhaps SSE2) will be executed. If you compile with `ARROW_RUNTIME_SIMD_LEVEL=AVX2` and execute on AVX2 CPU, a AVX2 code path will be executed (but not AVX512, because for that you would have needed `ARROW_RUNTIME_SIMD_LEVEL=AVX512`)
This is very clear. Thank you.
IIUC, macro family `ARROW_HAVE_*` is defined by `ARROW_SIMD_LEVEL` and macro family `ARROW_HAVE_RUNTIME_*` is defined by `ARROW_SIMD_RUNTIME_LEVEL`. But I'm still a little confused about the relationship between these two families, specifically: is one of them superior than the other?
For example, function
https://github.com/apache/arrow/blob/2b194ad222f4dc8ecf2eb73539ab8cab5b1fc5e7/cpp/src/arrow/compute/kernels/aggregate_basic_internal.h#L55
and its call site
https://github.com/apache/arrow/blob/2b194ad222f4dc8ecf2eb73539ab8cab5b1fc5e7/cpp/src/arrow/compute/kernels/aggregate_basic.cc#L1063-L1067
seem to be completely controlled by the "runtime" family. Does it mean that, theoretically, all the simd code in arrow can be fully managed by `ARROW_RUNTIME_SIMD_LEVEL`?
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "assignUser (via GitHub)" <gi...@apache.org>.
assignUser commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977013234
I think "theoretically" in this context means "there is no technical reason, outside of implementing the runtime selection, for this not to be managed by `ARROW_RUNTIME_SIMD_LEVEL`".
Which I guess you answered with your previous comment :D
>Ideally, all CPU-specific optimizations should be selected at runtime. It's just more work.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "amoeba (via GitHub)" <gi...@apache.org>.
amoeba commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1977125677
What's the real use case for `ARROW_USER_SIMD_LEVEL`? I think putting the example use case right at the top of the env var's text would be an improvement. It looks like we guard all runtime selection with compile-time guards anyway and someone who wants to use Arrow on, say, a <SSE4.2 machine would still need a custom build of Arrow so I'm still a bit confused.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU commented on issue #40333:
URL: https://github.com/apache/arrow/issues/40333#issuecomment-1976866711
Thanks! Close this first.
--
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: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] [C++] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL` [arrow]
Posted by "mapleFU (via GitHub)" <gi...@apache.org>.
mapleFU closed issue #40333: [C++] What's the difference between `ARROW_SIMD_LEVEL` and `ARROW_RUNTIME_SIMD_LEVEL`
URL: https://github.com/apache/arrow/issues/40333
--
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: issues-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org