[PATCH v2][Aarch64] Add vectorized mersenne twister

Jonathan Wakely jwakely@redhat.com
Tue Jul 25 17:33:00 GMT 2017


On 25/07/17 18:31 +0100, Jonathan Wakely wrote:
>On 18/07/17 05:53 +0000, Michael Collison wrote:
>>This is the second version of a patch for Aarc64 to add a vectorized mersenne twister to libstdc++. The first version used intrinsics and included "arm_neon.h". After feedback from the community this version uses only GCC vector extensions and Aarch64 simd data types.
>>
>>This patch adds an vectorized implementation of the mersenne twister random number generator. This implementation is approximately 2.6 times faster than the non-vectorized implementation.
>>
>>Sample code to use the new generator would look like this:
>>
>>#include <random>
>>#include <ext/random>
>>#include <iostream>
>>
>>int
>>main()
>>{
>> __gnu_cxx::sfmt19937 mt(1729);
>>
>> std::uniform_int_distribution<int> dist(0,1008);
>>
>> for (int i = 0; i < 16; ++i)
>>   {
>>     std::cout << dist(mt) << " ";
>>   }
>>}
>>
>>Okay for trunk?
>>
>>2017-07-16  Michael Collison  <michael.collison@arm.com>
>>
>>	Add optimized implementation of mersenne twister for aarch64
>>	* config/cpu/aarch64/opt/ext/opt_random.h: New file.
>>	(__arch64_recursion): New function.
>>	(__aarch64_lsr_128): New function.
>>	(__aarch64_lsl_128): New function.
>>	(operator==): New function.
>>	(simd_fast_mersenne_twister_engine): Implement
>>	method _M_gen_rand.
>>	* config/cpu/aarch64/opt/bits/opt_random.h: New file.
>>	* include/ext/random: (simd_fast_mersenne_twister_engine):
>>	add _M_state private array.
>>
>
>This has been committed, was it actually approved?
>

It looks OK anyway, apart from the doxygen comment on ext/opt_random.h
which names the wrong file: @file ext/random.tcc




More information about the Libstdc++ mailing list