From ac643c85efd999cd5a3f2d972415e3c185f47b49 Mon Sep 17 00:00:00 2001 From: "raphael.bach" <raphael.bach@etu.hesge.ch> Date: Tue, 21 Jun 2022 00:09:51 +0200 Subject: [PATCH] Split `fmpi_type.h` in two files --- include/fmpi_data.h | 2 +- include/internal/fmpi_futhark.h | 2 +- include/internal/fmpi_type.h | 73 +++++++++++++++++++ include/internal/generic/fmpi_data_generic.h | 1 + .../internal/generic/fmpi_futhark_generic.h | 1 + include/internal/generic/fmpi_generic.h | 2 - .../internal/generic/fmpi_reduce_generic.h | 1 + .../{fmpi_type.h => fmpi_type_generic.h} | 41 +---------- src/fmpi_data.c | 2 +- src/fmpi_futhark.c | 1 + src/fmpi_reduce.c | 1 + src/fmpi_task.c | 1 + 12 files changed, 83 insertions(+), 45 deletions(-) create mode 100644 include/internal/fmpi_type.h rename include/internal/generic/{fmpi_type.h => fmpi_type_generic.h} (77%) diff --git a/include/fmpi_data.h b/include/fmpi_data.h index cf6dd06..c119434 100644 --- a/include/fmpi_data.h +++ b/include/fmpi_data.h @@ -30,8 +30,8 @@ #include <stddef.h> // size_t // Internal #include "internal/fmpi_common.h" +#include "internal/fmpi_type.h" #include "internal/generic/fmpi_data_generic.h" -#include "internal/generic/fmpi_type.h" /*============================================================================== TYPE ==============================================================================*/ diff --git a/include/internal/fmpi_futhark.h b/include/internal/fmpi_futhark.h index 1d93ac4..f96d0e2 100644 --- a/include/internal/fmpi_futhark.h +++ b/include/internal/fmpi_futhark.h @@ -30,8 +30,8 @@ #include <stddef.h> // size_t // Internal #include "fmpi_error.h" +#include "internal/fmpi_type.h" #include "internal/generic/fmpi_futhark_generic.h" -#include "internal/generic/fmpi_type.h" /*============================================================================== STRUCT ==============================================================================*/ diff --git a/include/internal/fmpi_type.h b/include/internal/fmpi_type.h new file mode 100644 index 0000000..8f9df15 --- /dev/null +++ b/include/internal/fmpi_type.h @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: 0BSD +/*! + * @file + * @date 20.06.2022 + * @license{ + * BSD Zero Clause License + * + * Copyright (c) 2022 by Raphael Bach + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * } + */ +/*============================================================================== + GUARD +==============================================================================*/ +#ifndef FMPI_TYPE_H_20220620234502 +#define FMPI_TYPE_H_20220620234502 +/*============================================================================== + INCLUDE +==============================================================================*/ +// C Standard Library +#include <stddef.h> // size_t +// Internal +#include "internal/generic/fmpi_type_generic.h" +/*============================================================================== + TYPE +==============================================================================*/ +typedef enum fmpi_type_base { + FMPI_TYPE_START = 0, + FMPI_TYPE_i8 = 0, + FMPI_TYPE_i16 = 1, + FMPI_TYPE_i32 = 2, + FMPI_TYPE_i64 = 3, + FMPI_TYPE_u8 = 4, + FMPI_TYPE_u16 = 5, + FMPI_TYPE_u32 = 6, + FMPI_TYPE_u64 = 7, + FMPI_TYPE_f32 = 8, + FMPI_TYPE_f64 = 9, + FMPI_TYPE_bool = 10, + FMI_TYPE_END +} fmpi_type_base; +/** + * Derived types + * + * - The Futhark C API passes parameters to a Futhark function differently + * depending on their type being an `arithmetic type`, a `struct type` or an + * `array type`. + * - Loosely based on the definition of derived types in C17 6.2.5 + */ +typedef enum fmpi_type_derived { + FMPI_TYPE_NONE, //!< Arithmetic type + FMPI_TYPE_ARRAY //!< Array type +} fmpi_type_derived; + +typedef struct fmpi_type { + enum fmpi_type_base base; + enum fmpi_type_derived derived; + size_t size; +} fmpi_type; +/*============================================================================== + GUARD +==============================================================================*/ +#endif // FMPI_TYPE_H_20220620234502 diff --git a/include/internal/generic/fmpi_data_generic.h b/include/internal/generic/fmpi_data_generic.h index 5bfdb9e..1a5fb5f 100644 --- a/include/internal/generic/fmpi_data_generic.h +++ b/include/internal/generic/fmpi_data_generic.h @@ -30,6 +30,7 @@ #include <stddef.h> // size_t // Internal #include "fmpi_generic.h" +#include "fmpi_type_generic.h" /*============================================================================== MACRO ==============================================================================*/ diff --git a/include/internal/generic/fmpi_futhark_generic.h b/include/internal/generic/fmpi_futhark_generic.h index 29732ce..f97b4e2 100644 --- a/include/internal/generic/fmpi_futhark_generic.h +++ b/include/internal/generic/fmpi_futhark_generic.h @@ -33,6 +33,7 @@ // Internal #include "../fmpi_common.h" #include "fmpi_generic.h" +#include "fmpi_type_generic.h" /*============================================================================== MACRO ==============================================================================*/ diff --git a/include/internal/generic/fmpi_generic.h b/include/internal/generic/fmpi_generic.h index 3b0e175..18c6232 100644 --- a/include/internal/generic/fmpi_generic.h +++ b/include/internal/generic/fmpi_generic.h @@ -30,8 +30,6 @@ #include "../../../external/cpl/cpl_map.h" #include "../../../external/cpl/cpl_token.h" #include "../../../external/cpl/cpl_util.h" -// Internal -#include "fmpi_type.h" /*============================================================================== MACRO ==============================================================================*/ diff --git a/include/internal/generic/fmpi_reduce_generic.h b/include/internal/generic/fmpi_reduce_generic.h index 4372a1d..034b263 100644 --- a/include/internal/generic/fmpi_reduce_generic.h +++ b/include/internal/generic/fmpi_reduce_generic.h @@ -30,6 +30,7 @@ #include <stddef.h> // size_t // Internal #include "fmpi_generic.h" +#include "fmpi_type_generic.h" /*============================================================================== MACRO ==============================================================================*/ diff --git a/include/internal/generic/fmpi_type.h b/include/internal/generic/fmpi_type_generic.h similarity index 77% rename from include/internal/generic/fmpi_type.h rename to include/internal/generic/fmpi_type_generic.h index 3bef07f..4b62047 100644 --- a/include/internal/generic/fmpi_type.h +++ b/include/internal/generic/fmpi_type_generic.h @@ -27,10 +27,9 @@ INCLUDE ==============================================================================*/ // C Standard Library -#include <stddef.h> // size_t #include <stdint.h> /*============================================================================== - TYPEDEF + TYPE ==============================================================================*/ // Match C type name with Futhark type name typedef int8_t i8; @@ -44,44 +43,6 @@ typedef uint64_t u64; typedef float f32; typedef double f64; typedef _Bool bool; -/*============================================================================== - ENUM -==============================================================================*/ -typedef enum fmpi_type_base { - FMPI_TYPE_START = 0, - FMPI_TYPE_i8 = 0, - FMPI_TYPE_i16 = 1, - FMPI_TYPE_i32 = 2, - FMPI_TYPE_i64 = 3, - FMPI_TYPE_u8 = 4, - FMPI_TYPE_u16 = 5, - FMPI_TYPE_u32 = 6, - FMPI_TYPE_u64 = 7, - FMPI_TYPE_f32 = 8, - FMPI_TYPE_f64 = 9, - FMPI_TYPE_bool = 10, - FMI_TYPE_END -} fmpi_type_base; -/** - * Derived types - * - * - The Futhark C API passes parameters to a Futhark function differently - * depending on their type being an `arithmetic type`, a `struct type` or an - * `array type`. - * - Loosely based on the definition of derived types in C17 6.2.5 - */ -typedef enum fmpi_type_derived { - FMPI_TYPE_NONE, //!< Arithmetic type - FMPI_TYPE_ARRAY //!< Array type -} fmpi_type_derived; -/*============================================================================== - STRUCT -==============================================================================*/ -typedef struct fmpi_type { - enum fmpi_type_base base; - enum fmpi_type_derived derived; - size_t size; -} fmpi_type; /*============================================================================== DEFINE ==============================================================================*/ diff --git a/src/fmpi_data.c b/src/fmpi_data.c index b333b62..bf8cf93 100644 --- a/src/fmpi_data.c +++ b/src/fmpi_data.c @@ -29,7 +29,7 @@ // Internal #include "internal/fmpi_common.h" #include "internal/fmpi_ctx.h" -#include "internal/generic/fmpi_type.h" +#include "internal/fmpi_type.h" /*============================================================================== PUBLIC FUNCTION DEFINITION ==============================================================================*/ diff --git a/src/fmpi_futhark.c b/src/fmpi_futhark.c index d09ef97..7709cb6 100644 --- a/src/fmpi_futhark.c +++ b/src/fmpi_futhark.c @@ -30,6 +30,7 @@ // Internal #include "internal/fmpi_common.h" #include "internal/fmpi_futhark_entry.h" +#include "internal/fmpi_type.h" #include "internal/generic/fmpi_generic.h" /*============================================================================== STATIC diff --git a/src/fmpi_reduce.c b/src/fmpi_reduce.c index c0191d8..572df19 100644 --- a/src/fmpi_reduce.c +++ b/src/fmpi_reduce.c @@ -34,6 +34,7 @@ #include "internal/fmpi_futhark_entry.h" #include "internal/fmpi_mpi.h" #include "internal/generic/fmpi_generic.h" +#include "internal/generic/fmpi_type_generic.h" /*============================================================================== PUBLIC FUNCTION DEFINITION ==============================================================================*/ diff --git a/src/fmpi_task.c b/src/fmpi_task.c index 4c37be6..f5ac963 100644 --- a/src/fmpi_task.c +++ b/src/fmpi_task.c @@ -60,6 +60,7 @@ struct fmpi_task fmpi_task_register( if(task.domains[i].parts == NULL) { FMPI_RAISE_ERROR(ctx->err_handler, "FMPI", "fmpi_new_domain() failed!"); continue; + struct fmpi_type t; } void * start = fmpi_futhark_new_data( ctx->fut, task.domains[i].parts[rank].start, task.domains[i].data.type.base, -- GitLab