Thread (199 messages) 199 messages, 9 authors, 2020-10-28

Re: [dpdk-dev] [PATCH 1/6] eal: introduce zmm type for AVX 512-bit

From: Jerin Jacob <hidden>
Date: 2020-03-20 08:23:56

On Tue, Mar 10, 2020 at 8:14 PM Medvedkin, Vladimir
[off-list ref] wrote:
Hi Jerin,
Hi Vladimir,

Are we missing __attribute__((aligned(64))) here?

Agree. While modern compilers align __m512i by default, some old could failure to align. Please correct me if I'm wrong.
Yes.
+} rte_zmm_t;

IMO, Due to legacy reason, we have selected  rte_xmm_t, rte_ymm_t for
128 and 256 operations in public APIs[1]

As for me, since these functions are inlined, prototype should be changed to uint32_t ip[4] instead of passing vector type as an argument.
OK. Makes sense.
# Not sure where xmm_t and ymm_t and new zmm_t come from? Is this name
x86 arch-specific?

Yes, that's why they are in arch/x86/rte_vect.h
See the last comment.
If so,
why not give the more generic name rte_512i_t or something?
# Currently, In every arch file, we are repeating the definition for
rte_xmm_t, Why not make, this generic definition
in common file. ie.  rte_zmm_t or rte_512i_t definition in common
file(./lib/librte_eal/common/include/generic/rte_vect.h)

I think there could be some arch specific thing that prevents it from being generic.

# Currently ./lib/librte_eal/common/include/generic/rte_vect.h has
defintion for rte_vXsY_t for vector representation, would that
be enough for public API? Do we need to new type?

Definitions for rte_vXsY_tare almost the same as compiler's __m[128,256,512]i apart from alignment.
Union types such as rte_zmm_t are very useful because of the ability to access parts of a wide vector register with an arbitrary granularity. For example, some old compiler don't support _mm512_set_epi8()/_mm512_set_epi16() intrinsics, so accessing ".u8[]" of ".u16[]" solves the problem.
Yes. We are on the same page.

I think, the only difference in thought is, the x86 specific
definition(rte_zmm_t) name should be something
it needs to be reflected as internal or arch-specific. Earlier APIs
such rte_lpm_lookupx4 has leaked
the xmm_t  definition to public API.
To avoid that danger, please make rte_zmm_t as internal/arch-specific.
Something __rte_x86_zmm_t or
so that denotes it is not a public symbol.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help