소스 검색

Vector scal example: fix cuda implementation. Thanks to Satoshi Ohshima for reporting the error.

Nathalie Furmento 14 년 전
부모
커밋
d05a008dbb
4개의 변경된 파일9개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 1
      doc/starpu.texi
  2. 1 1
      doc/vector_scal_cuda.texi
  3. 5 3
      examples/basic_examples/vector_scal.c
  4. 2 2
      examples/basic_examples/vector_scal_cuda.cu

+ 1 - 1
doc/starpu.texi

@@ -789,7 +789,7 @@ driver.
 static __global__ void vector_mult_cuda(float *val, unsigned n,
                                         float factor)
 @{
-    unsigned i = threadIdx.x;
+    unsigned i =  blockIdx.x*blockDim.x + threadIdx.x;
     if (i < n)
         val[i] *= factor;
 @}

+ 1 - 1
doc/vector_scal_cuda.texi

@@ -3,7 +3,7 @@
 static __global__ void vector_mult_cuda(float *val, unsigned n,
                                         float factor)
 @{
-        unsigned i = threadIdx.x;
+        unsigned i =  blockIdx.x*blockDim.x + threadIdx.x;
         if (i < n)
                val[i] *= factor;
 @}

+ 5 - 3
examples/basic_examples/vector_scal.c

@@ -72,9 +72,10 @@ int main(int argc, char **argv)
 	float vector[NX];
 	unsigned i;
 	for (i = 0; i < NX; i++)
-		vector[i] = 1.0f;
+                vector[i] = (i+1.0f);
 
-	FPRINTF(stderr, "BEFORE : First element was %f\n", vector[0]);
+	FPRINTF(stderr, "BEFORE: First element was %f\n", vector[0]);
+	FPRINTF(stderr, "BEFORE: Last element was %f\n", vector[NX-1]);
 
 	/* Initialize StarPU with default configuration */
 	starpu_init(NULL);
@@ -133,7 +134,8 @@ int main(int argc, char **argv)
 	/* terminate StarPU, no task can be submitted after */
 	starpu_shutdown();
 
-	FPRINTF(stderr, "AFTER First element is %f\n", vector[0]);
+	FPRINTF(stderr, "AFTER: First element is %f\n", vector[0]);
+	FPRINTF(stderr, "AFTER: Last element is %f\n", vector[NX-1]);
 
 	return 0;
 }

+ 2 - 2
examples/basic_examples/vector_scal_cuda.cu

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010  Centre National de la Recherche Scientifique
+ * Copyright (C) 2010, 2011  Centre National de la Recherche Scientifique
  * Copyright (C) 2010  Université de Bordeaux 1
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -25,7 +25,7 @@
 static __global__ void vector_mult_cuda(float *val, unsigned n,
                                         float factor)
 {
-        unsigned i = threadIdx.x;
+        unsigned i =  blockIdx.x*blockDim.x + threadIdx.x;
 
 	if (i < n)
                val[i] *= factor;