[dpdk-dev] [PATCH v7 1/7] hash: replace existing hash library with cuckoo hash implementation

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Fri Jul 17 09:34:39 CEST 2015



> -----Original Message-----
> From: Tony Lu [mailto:zlu at ezchip.com]
> Sent: Friday, July 17, 2015 4:35 AM
> To: De Lara Guarch, Pablo; dev at dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v7 1/7] hash: replace existing hash library
> with cuckoo hash implementation
> 
> Hi, Pablo
> 
> >-----Original Message-----
> >From: De Lara Guarch, Pablo [mailto:pablo.de.lara.guarch at intel.com]
> >Sent: Friday, July 17, 2015 4:42 AM
> >To: Tony Lu; dev at dpdk.org
> >Subject: RE: [dpdk-dev] [PATCH v7 1/7] hash: replace existing hash library
> with
> >cuckoo hash implementation
> >
> >Hi Tony,
> >
> >> -----Original Message-----
> >> From: Tony Lu [mailto:zlu at ezchip.com]
> >> Sent: Thursday, July 16, 2015 10:40 AM
> >> To: De Lara Guarch, Pablo; dev at dpdk.org
> >> Subject: RE: [dpdk-dev] [PATCH v7 1/7] hash: replace existing hash
> >> library with cuckoo hash implementation
> >>
> >> >diff --git a/lib/librte_hash/rte_cuckoo_hash.c
> >> b/lib/librte_hash/rte_cuckoo_hash.c
> >> >new file mode 100644
> >> >index 0000000..50e3acd
> >> >--- /dev/null
> >> >+++ b/lib/librte_hash/rte_cuckoo_hash.c
> >> >@@ -0,0 +1,1027 @@
> >> ...
> >> >+
> >> >+/* Functions to compare multiple of 16 byte keys (up to 128 bytes)
> >> >+*/ static int rte_hash_k16_cmp_eq(const void *key1, const void
> >> >+*key2, size_t key_len
> >> >__rte_unused)
> >> >+{
> >> >+	const __m128i k1 = _mm_loadu_si128((const __m128i *) key1);
> >> >+	const __m128i k2 = _mm_loadu_si128((const __m128i *) key2);
> >> >+	const __m128i x = _mm_xor_si128(k1, k2);
> >> >+
> >> >+	return !_mm_test_all_zeros(x, x);
> >> >+}
> >> ...
> >>
> >> When compiling the latest dev DPDK for non-x86 arch, it fails on the
> >> above code, as the SSE is x86 specific defined in <emmintrin.h>.  Is
> >> it possible to replace this function with platform independent code?
> >
> >Thanks for spotting this. I just sent a patch that should fix the problem.
> >Can you check if it works?
> 
> Thanks for your quick response, but __m128i and all the _mm_ related
> functions
> are X86 specific defined in <emmintrin.h>.  This header file is only
> available in X86
> compiler library, but no-X86 archs do not have this file.  So if we can
> replace all
> the X86 specific code in the above function, that would be great.
> 
With the patch that I sent, if you are compiling for a non-x86 arch, you should not have any problem,
since all that code will only be used if using x86 arch. Have you tried compiling DPDK with the patch?

Pablo

> Thanks
> -Tony
> 
> 
> >Thanks,
> >Pablo
> >>
> >> Thanks
> >> -Zhigang Lu
> 



More information about the dev mailing list