Browse Source

gcc-plugin/examples/: add hello world example from the documentation

Nathalie Furmento 12 years ago
parent
commit
0695d3adf5
2 changed files with 44 additions and 1 deletions
  1. 1 1
      gcc-plugin/examples/Makefile.am
  2. 43 0
      gcc-plugin/examples/hello-starpu.c

+ 1 - 1
gcc-plugin/examples/Makefile.am

@@ -16,7 +16,7 @@
 if STARPU_USE_CPU
 
 noinst_PROGRAMS =				\
-  matrix-mult stencil5 vector_scal/vector_scal
+  hello-starpu matrix-mult stencil5 vector_scal/vector_scal
 
 if !NO_BLAS_LIB
 noinst_PROGRAMS +=				\

+ 43 - 0
gcc-plugin/examples/hello-starpu.c

@@ -0,0 +1,43 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2012  INRIA
+ *
+ * StarPU is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * StarPU is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+#include <stdio.h>
+
+/* Task declaration. */
+static void my_task (int x) __attribute__ ((task));
+
+/* Definition of the CPU implementation of ‘my task’. */
+static void my_task (int x)
+{
+	printf ("Hello, world! With x = %d\n", x);
+}
+
+int main ()
+{
+/* Initialize StarPU. */
+#pragma starpu initialize
+
+/* Do an asynchronous call to ‘my task’. */
+	my_task (42);
+
+/* Wait for the call to complete. */
+#pragma starpu wait
+
+/* Terminate. */
+#pragma starpu shutdown
+	return 0;
+}
+