This commit is contained in:
2026-04-14 14:17:16 -04:00
parent caf347e8f5
commit 3afe18f188
41 changed files with 123 additions and 100 deletions

View File

@ -26,7 +26,7 @@ __global__ void dbuff_rand_dpr32_kf(float *devbuffer, int N, int32_t *seeds)
lseed = seeds[I0];
for(I=I0;I<N;I=I+Is)
{
f = dpr32_randf(&lseed);
f = amscuda::random::lcg::dpr32_randf(&lseed);
devbuffer[I] = f;
}
@ -53,7 +53,7 @@ void dbuff_rand_dpr32(float *devbuffer, int N, int32_t *rseedinout, int nblocks
for(I=0;I<nblocks*nthreads;I++)
{
lseed = lseed + I + 1;
dpr32_nextseed(&lseed);
amscuda::random::lcg::dpr32_nextseed(&lseed);
seeds[I] = lseed;
}
@ -86,7 +86,7 @@ __global__ void dbuff_rand_dpr32n_kf(float *devbuffer, int N, int32_t *seeds)
lseed = seeds[I0];
for(I=I0;I<N;I=I+Is)
{
f = dpr32_randnf(&lseed);
f = amscuda::random::lcg::dpr32_randnf(&lseed);
devbuffer[I] = f;
}
@ -113,7 +113,7 @@ void dbuff_rand_dpr32n(float *devbuffer, int N, int32_t *rseedinout, int nblock
for(I=0;I<nblocks*nthreads;I++)
{
lseed = lseed + I + 1;
dpr32_nextseed(&lseed);
amscuda::random::lcg::dpr32_nextseed(&lseed);
seeds[I] = lseed;
}

View File

@ -0,0 +1,51 @@
#include <amsculib3/amsculib3.hpp>
namespace amscuda
{
namespace random
{
namespace fhash
{
__device__ __host__ float fhash1d_su(float x)
{
float ret;
ret = x*(x>0.0f) + -x*(x<0.0f); //sign without conditionals?
ret = fmodf(ret,10000.0f); //restrain domain
ret = fmodf(ret*(ret+3678.453f)+7890.453f,10000.0f);
ret = fmodf(ret*(ret+8927.2134f),10000.0f);
ret = fmodf(ret*(ret+3656.234f),10000.0f);
//ret = fmodf(ret*(ret+892.2134f),1000.0f);
//ret = fmodf(ret,1000.0f);
ret = ret/10000.0f;
return ret;
}
__device__ __host__ float fhash3d_su(float x, float y=0.0f, float z=0.0f)
{
float ret = 0.0f;
ret = fhash1d_su(z);
ret = fhash1d_su(1000.0f*ret*ret + y);
ret = fhash1d_su(1000.0f*ret*ret + x);
return ret;
}
__device__ __host__ float fhash4d_su(float x, float y=0.0f, float z=0.0f, float w=0.0f)
{
float ret = 0.0f;
ret = fhash1d_su(w);
ret = fhash1d_su(1000.0f*ret*ret + z);
ret = fhash1d_su(1000.0f*ret*ret + y);
ret = fhash1d_su(1000.0f*ret*ret + x);
return ret;
}
};
};
}; //end namespaces

View File

@ -2,44 +2,10 @@
namespace amscuda
{
__device__ __host__ float fhash1d_su(float x)
namespace random
{
float ret;
ret = x*(x>0.0f) + -x*(x<0.0f); //sign without conditionals?
ret = fmodf(ret,10000.0f); //restrain domain
ret = fmodf(ret*(ret+3678.453f)+7890.453f,10000.0f);
ret = fmodf(ret*(ret+8927.2134f),10000.0f);
ret = fmodf(ret*(ret+3656.234f),10000.0f);
//ret = fmodf(ret*(ret+892.2134f),1000.0f);
//ret = fmodf(ret,1000.0f);
ret = ret/10000.0f;
return ret;
}
__device__ __host__ float fhash3d_su(float x, float y=0.0f, float z=0.0f)
namespace lcg
{
float ret = 0.0f;
ret = fhash1d_su(z);
ret = fhash1d_su(1000.0f*ret*ret + y);
ret = fhash1d_su(1000.0f*ret*ret + x);
return ret;
}
__device__ __host__ float fhash4d_su(float x, float y=0.0f, float z=0.0f, float w=0.0f)
{
float ret = 0.0f;
ret = fhash1d_su(w);
ret = fhash1d_su(1000.0f*ret*ret + z);
ret = fhash1d_su(1000.0f*ret*ret + y);
ret = fhash1d_su(1000.0f*ret*ret + x);
return ret;
}
//////////////////////////////////////////////////
// Deterministic Pseudorandom int32_t Generator //
@ -218,5 +184,6 @@ void test_dprg32()
// return;
}
}; //namespace amscuda
};
};
}; //end namespaces

View File

@ -0,0 +1,21 @@
#include <amsculib3/amsculib3.hpp>
namespace amscuda
{
namespace random
{
__host__ void amscurand_tests1()
{
using namespace random;
printf("Random number generator basic function test:\n");
rand_seed(0);
return;
}
}; //end namespaces
};

View File

@ -23,5 +23,7 @@ int main(int argc, char* argv[])
//test_amscurarray1();
random::amscurand_tests1();
return 0;
}