File: testitr.c

package info (click to toggle)
ga 5.9.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,472 kB
  • sloc: ansic: 192,963; fortran: 53,761; f90: 11,218; cpp: 5,784; makefile: 2,248; sh: 1,945; python: 1,734; perl: 534; csh: 134; asm: 106
file content (94 lines) | stat: -rw-r--r-- 2,015 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#if HAVE_CONFIG_H
#   include "config.h"
#endif

#if HAVE_STDIO_H
#   include <stdio.h>
#endif
#if HAVE_STDLIB_H
#   include <stdlib.h>
#endif
#if HAVE_STRING_H
#   include <string.h>
#endif
#if HAVE_ASSERT_H
#   include <assert.h>
#endif
#include "iterator.h"

int main(int argc, char **argv)
{
  stride_info_t sinfo, dinfo;
  int a[10][10], b[11][11];
  int asr[1] = {10 * sizeof(int)};
  int bsr[1] = {11 * sizeof(int)};
  int count[2] = {5 * sizeof(int), 5};
  int i, j;

  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      a[i][j] = i * 10 + j;
    }
  }
  for (i = 0; i < 11; i++) {
    for (j = 0; j < 11; j++) {
      b[i][j] = 0;
    }
  }

  armci_stride_info_init(&sinfo, &a[2][3], 1, asr, count);
  armci_stride_info_init(&dinfo, &b[3][4], 1, bsr, count);

  assert(armci_stride_info_size(&sinfo) == 5);
  assert(armci_stride_info_size(&dinfo) == 5);
  assert(armci_stride_info_pos(&sinfo) == 0);
  assert(armci_stride_info_pos(&dinfo) == 0);

  while (armci_stride_info_has_more(&sinfo)) {
    int bytes;
    char *ap, *bp;
    assert(armci_stride_info_has_more(&dinfo));

    bytes = armci_stride_info_seg_size(&sinfo);
    assert(bytes == armci_stride_info_seg_size(&dinfo));

    ap = armci_stride_info_seg_ptr(&sinfo);
    bp = armci_stride_info_seg_ptr(&dinfo);

    memcpy(bp, ap, bytes);

    armci_stride_info_next(&sinfo);
    armci_stride_info_next(&dinfo);
  }
  armci_stride_info_destroy(&sinfo);
  armci_stride_info_destroy(&dinfo);

#if 0
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      printf("%3d  ", a[i][j]);
    }
    printf("\n");
  }

  for (i = 0; i < 11; i++) {
    for (j = 0; j < 11; j++) {
      printf("%3d  ", b[i][j]);
    }
    printf("\n");
  }
#endif

  for (i = 2; i < 2 + 5; i++) {
    for (j = 3; j < 3 + 5; j++) {
      if (a[i][j] != b[i+1][j+1]) {
        printf("a[%d][%d]=%d b[%d][%d]=%d\n", i, j, a[i][j], i, j, b[i][j]);
        printf("Test Failed\n");
        return 0;
      }
    }
  }
  printf("Success\n");
  return 0;
}