diff --git a/include/fmpi_data.h b/include/fmpi_data.h index cf6dd062a212639eb542e832e08cd6da51a7a11c..c119434484db02c39cfe2dcaa8361dc9671cee8e 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 1d93ac4178581665e1eae8885a8e8bebb58346c5..f96d0e21a11a7f7a59d1dfe171a6224ae2ed868e 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 0000000000000000000000000000000000000000..8f9df15d2acd881426f49f65acdf5ff919ad2acc --- /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 5bfdb9e5b18be47726fe488b00b07afa0db84b30..1a5fb5fda5a41d6618876cbe5a16b76a0f3a857c 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 29732ce2d22fbd357cdf2b7f30a334d4a466aaf6..f97b4e251af876b2d2be6db043b9563935be7c4a 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 3b0e175a773fbe57f739aad308ba9cab3730f815..18c6232521dac6e570ea77fb6b4213c83936f621 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 4372a1d69acbdeeb485d3abf8d662f633471ddd3..034b263ae58d8a1ef2084d3de45c1b160010bf64 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 3bef07f110397db24a5016b0682699f55c1864c0..4b6204706bebfb0fdcb4aff5349822bf88b43aad 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 b333b6225f06e9b18a9a5961b8b77b1a033c2db9..bf8cf93b90cabd9e85867f8eac52fd0bc4dbbea2 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 d09ef975d02cc9474c0b0ed4761269ff7d3c72ba..7709cb64410a0a125fe65f8eaafd5dd71ac31761 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 c0191d8e4c657dd81c163e229dc84bf19c8a8a3e..572df19a56aad35ff92e887214885424f99c5e09 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 4c37be67a9b3580f73930238626c5bf2b1e3b410..f5ac9634bd496f6855466bb1db21e6a25c092b58 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,