Browse Source

update example in doc

Corentin Salingue 12 years ago
parent
commit
5a06c2c528
1 changed files with 31 additions and 4 deletions
  1. 31 4
      doc/doxygen/chapters/code/disk_compute.c

+ 31 - 4
doc/doxygen/chapters/code/disk_compute.c

@@ -54,6 +54,7 @@ int main(int argc, char **argv)
 	for(j = 0; j < NX; ++j)
 	{
 		A[j] = j;
+		C[j] = 0;
 	}
 
 
@@ -61,7 +62,6 @@ int main(int argc, char **argv)
 
 	/* you create a file to store the vector ON the disk */
 	FILE * f = fopen("/tmp/STARPU_DISK_COMPUTE_DATA", "wb+");
-	/* fail */
 	if (f == NULL)
 		goto enoent;
 
@@ -71,9 +71,23 @@ int main(int argc, char **argv)
 	/* close the file */
 	fclose(f);
 
+
+	/* create a file to store result */
+	f = fopen("/tmp/STARPU_DISK_COMPUTE_DATA_RESULT", "wb+");
+	if (f == NULL)
+		goto enoent;
+
+	/* replace all datas by 0 */
+	fwrite(C, sizeof(int), NX, f);
+
+	/* close the file */
+	fclose(f);
+
 	/* And now, you want to use your datas in StarPU */
 	/* Open the file ON the disk */
 	void * data = starpu_disk_open(dd, (void *) "STARPU_DISK_COMPUTE_DATA", NX*sizeof(int));
+	void * data_result = starpu_disk_open(dd, (void *) "STARPU_DISK_COMPUTE_DATA_RESULT", NX*sizeof(int));
+
 
 	starpu_data_handle_t vector_handleA, vector_handleC;
 
@@ -81,7 +95,7 @@ int main(int argc, char **argv)
 	starpu_vector_data_register(&vector_handleA, dd, (uintptr_t) data, NX, sizeof(int));
 
 	/* and do what you want with it, here we copy it into an other vector */ 
-	starpu_vector_data_register(&vector_handleC, STARPU_MAIN_RAM, (uintptr_t) C, NX, sizeof(int));	
+	starpu_vector_data_register(&vector_handleC, dd, (uintptr_t) data_result, NX, sizeof(int));	
 
 	starpu_data_cpy(vector_handleC, vector_handleA, 0, NULL, NULL);
 
@@ -89,9 +103,20 @@ int main(int argc, char **argv)
 	starpu_data_unregister(vector_handleA);
 	starpu_data_unregister(vector_handleC);
 
-	/* close it in StarPU */
+	/* close them in StarPU */
 	starpu_disk_close(dd, data, NX*sizeof(int));
-	
+	starpu_disk_close(dd, data_result, NX*sizeof(int));
+
+	/* check results */	
+	f = fopen("/tmp/STARPU_DISK_COMPUTE_DATA_RESULT", "rb+");
+	if (f == NULL)
+		goto enoent;
+	/* take datas */
+	int size = fread(C, sizeof(int), NX, f);
+
+	/* close the file */
+	fclose(f);
+
 	int try = 1;
 	for (j = 0; j < NX; ++j)
 		if (A[j] != C[j])
@@ -104,6 +129,7 @@ int main(int argc, char **argv)
 	starpu_free_flags(C, NX*sizeof(double), STARPU_MALLOC_COUNT);
 
 	unlink("/tmp/STARPU_DISK_COMPUTE_DATA");
+	unlink("/tmp/STARPU_DISK_COMPUTE_DATA_RESULT");
 
 	/* terminate StarPU, no task can be submitted after */
 	starpu_shutdown();
@@ -119,4 +145,5 @@ enodev:
 enoent:
 	return 77;
 }
+
 //! [To be included]