60f3962675425e7369fc763aa06c51b19dbe5f1b
[jump.git] / dol / examples / example4 / src / generator.c
1 #include <stdio.h>
2 #include <string.h>
3
4 #include "generator.h"
5
6
7 Input_generator_State input_generator_state =
8   { matrixA: MATRIX_A_INITIAL_VALUE, matrixB: MATRIX_B_INITIAL_VALUE };
9
10 void input_generator_init(DOLProcess *p)
11 {
12   for (p->local->row = 0; p->local->row < NUMBER_OF_ROWS_COLS; p->local->row++)
13   {
14     for (p->local->col = 0; p->local->col < NUMBER_OF_ROWS_COLS; p->local->col++)
15     {
16       p->local->matrixA[p->local->row][p->local->col] = (NUMBER_OF_ROWS_COLS * p->local->row) + p->local->col + 1;
17       p->local->matrixB[p->local->row][p->local->col] = -((NUMBER_OF_ROWS_COLS * p->local->row) + p->local->col);
18     }
19   }
20 }
21
22
23 int input_generator_fire(DOLProcess *p)
24 {
25   CREATEPORTVAR(port);
26
27   for (p->local->row = 0; p->local->row < NUMBER_OF_ROWS_COLS; p->local->row++)
28   {
29     for (p->local->col = 0; p->local->col < NUMBER_OF_ROWS_COLS; p->local->col++)
30     {
31       CREATEPORT(port, PORT_ZEROINPUT, 1,
32               p->local->row * NUMBER_OF_ROWS_COLS + p->local->col, NUMBER_OF_ROWS_COLS
33               * NUMBER_OF_ROWS_COLS);
34       printf("%15s: Write to zeroinput_%d: %f\n", "input_generator",
35              p->local->row * NUMBER_OF_ROWS_COLS + p->local->col, 0.0);
36       DOL_write((void*)port, &(p->local->zero), sizeof(float), p);
37
38       for (p->local->i = 0; p->local->i < NUMBER_OF_ROWS_COLS; p->local->i++)
39       {
40         CREATEPORT(port, PORT_MATRIXA, 3,
41                 p->local->row, NUMBER_OF_ROWS_COLS,
42                 p->local->col, NUMBER_OF_ROWS_COLS,
43                 p->local->i, NUMBER_OF_ROWS_COLS);
44         printf("%15s: Write to matrixA_%d_%d_%d: %f\n",
45                "input_generator", p->local->i, p->local->row, p->local->col,
46                p->local->matrixA[p->local->row][p->local->col]);
47         DOL_write((void*)port, &(p->local->matrixA[p->local->row][p->local->col]),
48                   sizeof(float), p);
49         CREATEPORT(port, PORT_MATRIXB, 3,
50                 p->local->row, NUMBER_OF_ROWS_COLS,
51                 p->local->col, NUMBER_OF_ROWS_COLS,
52                 p->local->i, NUMBER_OF_ROWS_COLS);
53         printf("%15s: Write to matrixB_%d_%d_%d: %f\n",
54                "input_generator", p->local->i, p->local->row, p->local->col,
55                p->local->matrixB[p->local->row][p->local->col]);
56         DOL_write((void*)port, &(p->local->matrixB[p->local->row][p->local->col]),
57                   sizeof(float), p);
58       }
59     }
60   }
61
62   DOL_detach(p);
63   return -1;
64 }
65