Procházet zdrojové kódy

cope with systems which don't have drand48

Samuel Thibault před 15 roky
rodič
revize
ce7cc373c2

+ 6 - 0
configure.ac

@@ -66,6 +66,12 @@ AC_CHECK_FUNCS(pthread_setaffinity_np)
 # There is no posix_memalign on Mac OS X, only memalign
 AC_CHECK_FUNCS([posix_memalign memalign])
 
+# Some systems don't have drand48
+AC_CHECK_FUNCS([drand48],
+  AC_DEFINE([starpu_drand48()],[drand48()],[drand48 equivalent function]),
+  AC_DEFINE([starpu_drand48()],[((double)rand() / RAND_MAX)],[drand48 equivalent function])
+)
+
 AC_CHECK_HEADERS([malloc.h])
 
 # This defines HAVE_SYNC_BUILTINS

+ 2 - 2
examples/axpy/axpy.c

@@ -97,8 +97,8 @@ int main(int argc, char **argv)
 	unsigned i;
 	for (i = 0; i < N; i++)
 	{
-		vec_x[i] = 1.0f;//(TYPE)drand48();
-		vec_y[i] = 4.0f;//(TYPE)drand48();
+		vec_x[i] = 1.0f;//(TYPE)starpu_drand48();
+		vec_y[i] = 4.0f;//(TYPE)starpu_drand48();
 	}
 
 	fprintf(stderr, "BEFORE x[0] = %2.2f\n", vec_x[0]);

+ 2 - 2
examples/basic-examples/mult.c

@@ -166,13 +166,13 @@ static void init_problem_data(void)
 	srand(2009);
 	for (j=0; j < ydim; j++) {
 		for (i=0; i < zdim; i++) {
-			A[j+i*ydim] = (float)(drand48());
+			A[j+i*ydim] = (float)(starpu_drand48());
 		}
 	}
 
 	for (j=0; j < zdim; j++) {
 		for (i=0; i < xdim; i++) {
-			B[j+i*zdim] = (float)(drand48());
+			B[j+i*zdim] = (float)(starpu_drand48());
 		}
 	}
 

+ 1 - 1
examples/cholesky/dw_cholesky_models.c

@@ -29,7 +29,7 @@
 
 
 #ifdef USE_PERTURBATION
-#define PERTURBATE(a)	((drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
+#define PERTURBATE(a)	((starpu_drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
 #else
 #define PERTURBATE(a)	(a)
 #endif

+ 1 - 1
examples/heat/lu_kernels_model.c

@@ -29,7 +29,7 @@
 
 
 #ifdef USE_PERTURBATION
-#define PERTURBATE(a)	((drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
+#define PERTURBATE(a)	((starpu_drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
 #else
 #define PERTURBATE(a)	(a)
 #endif

+ 1 - 1
examples/lu/lu_example.c

@@ -139,7 +139,7 @@ static void init_matrix(void)
 	{
 		for (i = 0; i < size; i++)
 		{
-			A[i + j*size] = (TYPE)drand48();
+			A[i + j*size] = (TYPE)starpu_drand48();
 		}
 	}
 

+ 2 - 2
examples/mult/dw_mult.c

@@ -129,13 +129,13 @@ static void init_problem_data(void)
 #endif
 		for (j=0; j < ydim; j++) {
 			for (i=0; i < zdim; i++) {
-				A[j+i*ydim] = (float)(drand48());
+				A[j+i*ydim] = (float)(starpu_drand48());
 			}
 		}
 	
 		for (j=0; j < zdim; j++) {
 			for (i=0; i < xdim; i++) {
-				B[j+i*zdim] = (float)(drand48());
+				B[j+i*zdim] = (float)(starpu_drand48());
 			}
 		}
 	}

+ 2 - 2
examples/mult/dw_mult_no_stride.c

@@ -128,7 +128,7 @@ static void init_problem_data(void)
 				for (j = 0; j < BLOCKSIZEY; j++)
 					for (i = 0; i < BLOCKSIZEZ; i++)
 					{
-						A[blocky][blockz][i*BLOCKSIZEY + j] = (float)(drand48());
+						A[blocky][blockz][i*BLOCKSIZEY + j] = (float)(starpu_drand48());
 					}
 
 		for (blockz = 0; blockz < nslicesz; blockz++)
@@ -136,7 +136,7 @@ static void init_problem_data(void)
 				for (j = 0; j < BLOCKSIZEZ; j++)
 					for (i = 0; i < BLOCKSIZEX; i++)
 					{
-						B[blockz][blockx][i*BLOCKSIZEZ + j] = (float)(drand48());
+						B[blockz][blockx][i*BLOCKSIZEZ + j] = (float)(starpu_drand48());
 					}
 
 	}

+ 2 - 2
examples/mult/dw_mult_no_stride_no_tag.c

@@ -144,7 +144,7 @@ static void init_problem_data(void)
 				for (j = 0; j < BLOCKSIZEY; j++)
 					for (i = 0; i < BLOCKSIZEZ; i++)
 					{
-						A[blocky][blockz][i*BLOCKSIZEY + j] = (float)(drand48());
+						A[blocky][blockz][i*BLOCKSIZEY + j] = (float)(starpu_drand48());
 					}
 
 		for (blockz = 0; blockz < nslicesz; blockz++)
@@ -152,7 +152,7 @@ static void init_problem_data(void)
 				for (j = 0; j < BLOCKSIZEZ; j++)
 					for (i = 0; i < BLOCKSIZEX; i++)
 					{
-						B[blockz][blockx][i*BLOCKSIZEZ + j] = (float)(drand48());
+						B[blockz][blockx][i*BLOCKSIZEZ + j] = (float)(starpu_drand48());
 					}
 
 	}

+ 2 - 2
examples/mult/xgemm.c

@@ -110,13 +110,13 @@ static void init_problem_data(void)
 	else {
 		for (j=0; j < ydim; j++) {
 			for (i=0; i < zdim; i++) {
-				A[j+i*ydim] = (TYPE)(drand48());
+				A[j+i*ydim] = (TYPE)(starpu_drand48());
 			}
 		}
 	
 		for (j=0; j < zdim; j++) {
 			for (i=0; i < xdim; i++) {
-				B[j+i*zdim] = (TYPE)(drand48());
+				B[j+i*zdim] = (TYPE)(starpu_drand48());
 			}
 		}
 	}

+ 1 - 1
examples/starpufft/testx.c

@@ -81,7 +81,7 @@ int main(int argc, char *argv[]) {
 	STARPUFFT(complex) *in = STARPUFFT(malloc)(size * sizeof(*in));
 	srand48(0);
 	for (i = 0; i < size; i++)
-		in[i] = drand48() + I * drand48();
+		in[i] = starpu_drand48() + I * starpu_drand48();
 
 	STARPUFFT(complex) *out = STARPUFFT(malloc)(size * sizeof(*out));
 

+ 1 - 1
examples/starpufft/testx_threads.c

@@ -74,7 +74,7 @@ int main(int argc, char *argv[]) {
 	_FFTW(complex) *in = _FFTW(malloc)(size * sizeof(*in));
 	srand48(0);
 	for (i = 0; i < size; i++)
-		in[i] = drand48() + I * drand48();
+		in[i] = starpu_drand48() + I * starpu_drand48();
 
 	_FFTW(complex) *out_fftw = _FFTW(malloc)(size * sizeof(*out_fftw));
 

+ 1 - 1
examples/strassen/strassen_models.c

@@ -31,7 +31,7 @@
 
 
 #ifdef USE_PERTURBATION
-#define PERTURBATE(a)	((drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
+#define PERTURBATE(a)	((starpu_drand48()*2.0f*(AMPL) + 1.0f - (AMPL))*(a))
 #else
 #define PERTURBATE(a)	(a)
 #endif

+ 2 - 2
examples/strassen/test_strassen.c

@@ -139,13 +139,13 @@ void init_problem(void)
 		srand(2008);
 		for (j=0; j < dim; j++) {
 			for (i=0; i < dim; i++) {
-				A[i+j*dim] = (float)(drand48());
+				A[i+j*dim] = (float)(starpu_drand48());
 			}
 		}
 	
 		for (j=0; j < dim; j++) {
 			for (i=0; i < dim; i++) {
-				B[i+j*dim] = (float)(drand48());
+				B[i+j*dim] = (float)(starpu_drand48());
 			}
 		}
 	}

+ 2 - 0
include/starpu_config.h.in

@@ -36,4 +36,6 @@
 
 #undef HAVE_LIBNUMA
 
+#undef starpu_drand48
+
 #endif

+ 2 - 2
mpi/examples/mpi_lu/plu_example.c

@@ -119,7 +119,7 @@ static void fill_block_with_random(TYPE *blockptr, unsigned size, unsigned nbloc
 	for (i = 0; i < block_size; i++)
 	for (j = 0; j < block_size; j++)
 	{
-		blockptr[j+i*block_size] = (TYPE)drand48();
+		blockptr[j+i*block_size] = (TYPE)starpu_drand48();
 	}
 }
 
@@ -455,7 +455,7 @@ int main(int argc, char **argv)
 		{
 			unsigned ind;
 			for (ind = 0; ind < size; ind++)
-				x[ind] = (TYPE)drand48();
+				x[ind] = (TYPE)starpu_drand48();
 		}
 
 		a_r = STARPU_PLU(reconstruct_matrix)(size, nblocks);

+ 1 - 1
src/core/policies/random-policy.c

@@ -44,7 +44,7 @@ static int _random_push_task(struct jobq_s *q __attribute__ ((unused)), job_t ta
 		alpha_sum += queue_array[worker]->alpha;
 	}
 
-	double rand = drand48()*alpha_sum;
+	double rand = starpu_drand48()*alpha_sum;
 //	fprintf(stderr, "my rand is %e\n", rand);
 
 	double alpha = 0.0;