Prechádzať zdrojové kódy

Fix estimating sizes: cholesky and lu complexities are cubic

Samuel Thibault 8 rokov pred
rodič
commit
eae30ebdab
2 zmenil súbory, kde vykonal 25 pridanie a 18 odobranie
  1. 14 10
      examples/cholesky/cholesky.h
  2. 11 8
      examples/lu/lu_example.c

+ 14 - 10
examples/cholesky/cholesky.h

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009-2016  Université de Bordeaux
+ * Copyright (C) 2009-2017  Université de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2016  CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -119,24 +119,28 @@ static unsigned nbigblocks;
 
 static inline void init_sizes(void) {
 	int power = starpu_cpu_worker_get_count() + 32 * starpu_cuda_worker_get_count();
-	int power_sqrt = sqrt(power)/2;
-	if (power_sqrt < 1)
-		power_sqrt = 1;
+	int power_cbrt = cbrt(power);
+#ifndef STARPU_LONG_CHECK
+	power_cbrt /= 2;
+#endif
+
+	if (power_cbrt < 1)
+		power_cbrt = 1;
 
 #ifdef STARPU_QUICK_CHECK
 	if (!size)
-		size = 320*2*power_sqrt;
+		size = 320*2*power_cbrt;
 	if (!nblocks)
-		nblocks = 2*power_sqrt;
+		nblocks = 2*power_cbrt;
 	if (!nbigblocks)
-		nbigblocks = power_sqrt;
+		nbigblocks = power_cbrt;
 #else
 	if (!size)
-		size = 960*8*power_sqrt;
+		size = 960*8*power_cbrt;
 	if (!nblocks)
-		nblocks = 8*power_sqrt;
+		nblocks = 8*power_cbrt;
 	if (!nbigblocks)
-		nbigblocks = 4*power_sqrt;
+		nbigblocks = 4*power_cbrt;
 #endif
 }
 

+ 11 - 8
examples/lu/lu_example.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2009-2016  Université de Bordeaux
+ * Copyright (C) 2009-2017  Université de Bordeaux
  * Copyright (C) 2010, 2011, 2012, 2013, 2015, 2016  CNRS
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -314,20 +314,23 @@ int main(int argc, char **argv)
 	STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
 
 	int power = starpu_cpu_worker_get_count() + 32 * starpu_cuda_worker_get_count();
-	int power_sqrt = sqrt(power)/2;
-	if (power_sqrt < 1)
-		power_sqrt = 1;
+	int power_cbrt = cbrt(power);
+#ifndef STARPU_LONG_CHECK
+	power_cbrt /= 2;
+#endif
+	if (power_cbrt < 1)
+		power_cbrt = 1;
 
 #ifdef STARPU_QUICK_CHECK
 	if (!size)
-		size = 320*2*power_sqrt;
+		size = 320*2*power_cbrt;
 	if (!nblocks)
-		nblocks = 2*power_sqrt;
+		nblocks = 2*power_cbrt;
 #else
 	if (!size)
-		size = 960*8*power_sqrt;
+		size = 960*8*power_cbrt;
 	if (!nblocks)
-		nblocks = 8*power_sqrt;
+		nblocks = 8*power_cbrt;
 #endif
 
 	parse_args(argc, argv);