
To get the CPU characteristics : sysctl -a > cpu.txt
L1 kernel.msgmni  or  kernel.sem
L2 vm.lowmem_reserve_ratio = 256   256     32 (maybe KB)

With nothing :
L3 : cat /proc/cpuinfo | grep "cache size"
Vectorial register size : cat /proc/cpuinfo | grep "cache_alignment"

With hwloc-ls :
	Get the RAM (7839MB) :
	hwloc-ls -c | grep Machine

	Get L3 cache (3072KB) :
	hwloc-ls -c | grep L3

	Get L2 cache (256KB) :
	hwloc-ls -c | grep L2

	Get L1 data cache (32KB) :
	hwloc-ls -c | grep L1d

	Get L1 instruction cache (32KB) :
	hwloc-ls -c | grep L1i





I have found the intrinsics for int and short vectorized in :
/usr/lib/gcc/x86_64-linux-gnu/5.2.1/include/emmintrin.h

There is line 690 _mm_load_si128 (__m128i const *__P) to load 128 packed int.

1017 : _mm_add_epi16 (__m128i __A, __m128i __B) to add packed short
1023 : _mm_add_epi32 (__m128i __A, __m128i __B) to add packed int
1029 : _mm_add_epi64 (__m128i __A, __m128i __B) to add packed long int
807  : _mm_cvtps_epi32 (__m128 __A)             to convert a packed float in a packed int    

I have and other idea if we can't use function for long unsigned int, to fill a long int like an long unsigned int.

