I want to support the following operation in C++:
void generate_random_simd(T* array, T upper_bound, T lower_bound) {
// uses simd instructions for rng in range [lower_bound, upper_bound]
}
The type T could be any uint, int or float type - 32 or 64 bit. Is there an efficient implementation either available directly or some literature on this material?
I did find a few implementations, such as this and this. But they don't support all the above types nor do they support supplying an upper-lower bound. Using them might in turn require additional processing to achieve the result whose overhead Im afraid would end up being equivalent to simply looping and using a standard C++ random number generator(non-simd).
Aucun commentaire:
Enregistrer un commentaire