Comments (7)
@shibatch, I don't think it is a good idea to merge all this files just before the release.
On the other end, I am happy for you to change the names from helper
to veal
, a name change is no problem.
If I may, I also have a couple of considerations.
- I think that the fact that the architectural name of the vector extension is in the current "helper" names helps in understanding what instruction set you are using in the code, so I'd avoid replacing it with the
arch/bitwidth
pair and leave them in the formvealavx, vealavx512, vealadvsim
and so on (veal
orhelper
, whatever you choose). - unifying things is usually good, so I am happy for you to merge
helpersse2
andhelperavx2_128
into one single file. My concern is: will this new file work on any 128-bit wide vector extension from intel? What if you mix avx2 and sse2 intrinsic in there an someone need to run sse2 only code? Or am I missing something? - About merging
helperadvsimd
andhelperneon32
: they come from different architectures.
Advanced SIMD is the vector extension of the Armv8 architecture. The Armv8 architecture has 2 execution modes: AArch32 and AArch64. In AArch32 mode the hardware is able to execute binaries for the previous architecture, the Armv7 architecture. The registers and the instructions of Armv8 are an extension of the Armv7 capabilities, in a 64-bit address space when the execution mode is AArch64.
AArch64 Advanced SIMD has 128-bit wide vector registers, but is operates also in double precision and has a richer FP instruction set. For example, in AArch64 it is possible to compute the square root in one instruction (both in single and double precision), while in NEON, which is the vector extension of Armv7, it can be done only with an iterative algorithm, and in single precision, as the vector are 64 bits wide.
Now, merging this two helper files would result in a bunch of#ifdef
s to test whether or not the AArch64 Advanced SIMD on 64-bit registers are executed or the Armv7 one are. It is doable in principle, but I'd avoid doing it now just before the release.
from sleef.
veal means meat of calves
As a non-meat eater myself, I'm not a fan of the usage of this word actually 😅
Why not just use a more explicit word like vector
(or even a short version vec
) instead of an acronym that nobody will understand at a first sight?
from sleef.
As a non-meat eater myself, I'm not a fan of the usage of this word actually 😅
I am now gradually understanding your personality. 😆
Do you mean that the filename will be like vectorintel_128.h?
I think vector is still too generic.
I would like to hear other people's opinions.
from sleef.
Do you mean that the filename will be like vectorintel_128.h?
vector_avx2.h
... or sleef_vec_avx2.h
if you fear a clashing problem with includes...
also not sure about this idea of using arch/bit, while avx2
is more familiar to how C++ compiler are typically configured via command line switch, so it rings a bell more easily when looking at the code.
from sleef.
The problem for using the name avx2 is that that file would contain the functions for other extensions.
If we divide the helper files in such a way that each file corresponds to a combination of a bit length and an extension, there would be many helper files and thus this would be bug-prone.
from sleef.
We never adopted this naming conventions for the header files. @shibatch shall we close this issue?
from sleef.
We never adopted this naming conventions for the header files. @shibatch shall we close this issue?
Yes.
from sleef.
Related Issues (20)
- Why is it recommended to compile with -ffp-contract? HOT 4
- FP64 sin_u10 is inaccurate
- Compilation fails (conflicting types) if mpfr-devel 4.2.0 is provided HOT 3
- No pkgconfig file for libsleefdft HOT 1
- FP32 coshf_u10 and FP64 cosh_u10 are inaccurate
- FP32 sinhf_u10 and FP64 sinh_u10 are inaccurate
- Bazel support in Sleef HOT 1
- ASAN: global-buffer-overflow in functions Sleef_sinf4_u10, Sleef_cosf4_u10, Sleef_tanf4_u10 on s390x
- FP64 tan_u10 is inaccurate for small values
- FP64 tan_u10 returns wrong sign for input `-0x1p-1074`
- Undefined reference `GOMP_critical_start' and `omp_init_lock' in dftcommon.c
- FP32 `hypotf_u05` and FP64 `hypot_u05` are inaccurate near underflow HOT 1
- Tests fail to compile with mpfr 4.2.0 HOT 2
- FP32 `log1pf_u10` and FP64 `log1p_u10` are infinitely inaccurate for large inputs
- Segfault when building with Apple Clang 15 HOT 12
- Unable to disable optional dependencies HOT 5
- Testvecabi fails to build on some x86 arch with `-march=native`
- unknown type name ‘__float128’ on loongarch64
- Tests fail to build with inline headers on for armhf
- Restart/Fix CI tests HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sleef.