map-ctx-test.c 4.96 KB
Newer Older
Jonathan Jenkins's avatar
Jonathan Jenkins committed
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
/*
 * Copyright (C) 2015 University of Chicago.
 * See COPYRIGHT notice in top-level directory.
 *
 */

#include <stdbool.h>
#include <mpi.h>
#include <codes/codes-mapping-context.h>
#include <codes/configuration.h>

#define ERR(_fmt, ...) \
    do { \
        fprintf(stderr, "Error at %s:%d: " _fmt "\n", __FILE__, __LINE__, \
                ##__VA_ARGS__); \
        return 1; \
    } while (0)

/* NOTE: hard-coded against configuration file */
int main(int argc, char *argv[])
{
    MPI_Init(&argc, &argv);
    int rc = configuration_load(argv[1], MPI_COMM_WORLD, &config);
    if (rc != 0)
        ERR("unable to load configuration file %s", argv[1]);

27 28
    struct codes_mctx direct, group_modulo, group_rmodulo, group_direct,
                      group_modulo_anno, group_rmodulo_anno, group_direct_anno;
Jonathan Jenkins's avatar
Jonathan Jenkins committed
29

30 31 32 33 34 35 36
    direct              = codes_mctx_set_global_direct(12ul);
    group_modulo        = codes_mctx_set_group_modulo(NULL, true);
    group_rmodulo       = codes_mctx_set_group_modulo_reverse(NULL, true);
    group_direct        = codes_mctx_set_group_direct(1, NULL, true);
    group_modulo_anno   = codes_mctx_set_group_modulo("baz", false);
    group_rmodulo_anno  = codes_mctx_set_group_modulo_reverse("baz", false);
    group_direct_anno   = codes_mctx_set_group_direct(1, "baz", false);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
37

38 39 40
    tw_lpid in;
    tw_lpid rtn_id;
    char const * rtn_anno;
Jonathan Jenkins's avatar
Jonathan Jenkins committed
41

42 43 44 45 46 47 48
    rtn_id = codes_mctx_to_lpid(&direct, NULL, 0);
    if (12ul != rtn_id)
        ERR("global_direct mapping: expected %lu, got %lu",
                12ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&direct, NULL, 0);
    if (rtn_anno)
        ERR("global_direct mapping: expected NULL anno, got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
49

50 51 52 53 54 55 56 57
    in = 8ul;
    rtn_id = codes_mctx_to_lpid(&group_modulo, "bar", in);
    if (rtn_id != 9ul)
        ERR("group_modulo mapping: expected %lu, got %lu",
                9ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_modulo, "bar", in);
    if (rtn_anno)
        ERR("group_modulo mapping: expected NULL anno, got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
58

59 60 61 62 63 64 65 66
    rtn_id = codes_mctx_to_lpid(&group_rmodulo, "bar", in);
    if (rtn_id != 9ul)
        ERR("group_rmodulo mapping: expected %lu, got %lu",
                9ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_rmodulo, "bar", in);
    if (rtn_anno)
        ERR("group_rmodulo mapping: expected NULL anno, got %s", rtn_anno);

67 68 69 70 71 72 73 74
    in = 12ul;
    rtn_id = codes_mctx_to_lpid(&group_modulo, "bar", in);
    if (rtn_id != 13ul)
        ERR("group_modulo mapping: expected %lu, got %lu",
                13ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_modulo, "bar", in);
    if (rtn_anno)
        ERR("group_modulo mapping: expected NULL anno, got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
75

76 77 78 79 80 81 82 83
    rtn_id = codes_mctx_to_lpid(&group_rmodulo, "bar", in);
    if (rtn_id != 14ul)
        ERR("group_rmodulo mapping: expected %lu, got %lu",
                14ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_rmodulo, "bar", in);
    if (rtn_anno)
        ERR("group_rmodulo mapping: expected NULL anno, got %s", rtn_anno);

84 85 86 87 88 89 90
    rtn_id = codes_mctx_to_lpid(CODES_MCTX_DEFAULT, "bar", in);
    if (rtn_id != 13ul)
        ERR("group_modulo mapping (default): expected %lu, got %lu",
                13ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(CODES_MCTX_DEFAULT, "bar", in);
    if (rtn_anno)
        ERR("group_modulo mapping: expected NULL anno, got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
91

92 93 94 95 96 97 98
    rtn_id = codes_mctx_to_lpid(&group_modulo_anno, "bar", in);
    if (rtn_id != 15ul)
        ERR("group_modulo annotated mapping: expected %lu, got %lu",
                15ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_modulo_anno, "bar", in);
    if (strcmp(rtn_anno,"baz") != 0)
        ERR("group_modulo mapping: expected anno \"baz\", got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
99

100 101 102 103 104 105 106 107
    rtn_id = codes_mctx_to_lpid(&group_rmodulo_anno, "bar", in);
    if (rtn_id != 16ul)
        ERR("group_rmodulo annotated mapping: expected %lu, got %lu",
                16ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_rmodulo_anno, "bar", in);
    if (strcmp(rtn_anno,"baz") != 0)
        ERR("group_rmodulo mapping: expected anno \"baz\", got %s", rtn_anno);

108 109 110 111 112 113 114 115
    in = 10ul;
    rtn_id = codes_mctx_to_lpid(&group_direct, "bar", in);
    if (rtn_id != 14ul)
        ERR("group_direct mapping (default): expected %lu, got %lu",
                14ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_direct, "bar", in);
    if (rtn_anno)
        ERR("group_modulo mapping: expected NULL anno, got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
116

117 118 119 120 121 122 123
    rtn_id = codes_mctx_to_lpid(&group_direct_anno, "bar", in);
    if (rtn_id != 16ul)
        ERR("group_direct mapping (default): expected %lu, got %lu",
                16ul, rtn_id);
    rtn_anno = codes_mctx_get_annotation(&group_direct_anno, "bar", in);
    if (strcmp(rtn_anno,"baz") != 0)
        ERR("group_modulo mapping: expected anno \"baz\", got %s", rtn_anno);
Jonathan Jenkins's avatar
Jonathan Jenkins committed
124 125 126 127 128 129 130 131 132 133 134 135 136

    return 0;
}

/*
 * Local variables:
 *  c-indent-level: 4
 *  c-basic-offset: 4
 *  indent-tabs-mode: nil
 * End:
 *
 * vim: ts=8 sts=4 sw=4 expandtab
 */