From 0de631431b3d2cf40aa8903d015132ad128eeee5 Mon Sep 17 00:00:00 2001 From: Sam Yates <yates@cscs.ch> Date: Tue, 5 Sep 2017 14:52:33 +0300 Subject: [PATCH] Move common primitive types across fvm implementations to common header (#344) * Add `backends/fvm_types.hpp` as a single location for shared types across multicore and gpu fvm implementations. * Use the `fvm_value_type` and `fvm_size_type` defined in `fvm_types.hpp` for the corresponding class-local `value_type` and `size_type` definitions. --- src/backends/fvm_types.hpp | 14 ++++++++++++++ src/backends/gpu/fvm.hpp | 5 +++-- src/backends/multicore/fvm.hpp | 5 +++-- src/fvm_multicell.hpp | 5 +++-- 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 src/backends/fvm_types.hpp diff --git a/src/backends/fvm_types.hpp b/src/backends/fvm_types.hpp new file mode 100644 index 00000000..71dfcbfa --- /dev/null +++ b/src/backends/fvm_types.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include <common_types.hpp> + +// Basic types shared across FVM implementations/backends. + +namespace nest { +namespace mc { + +using fvm_value_type = double; +using fvm_size_type = cell_local_size_type; + +} // namespace mc +} // namespace nest diff --git a/src/backends/gpu/fvm.hpp b/src/backends/gpu/fvm.hpp index c7a4dbb6..28a48ec5 100644 --- a/src/backends/gpu/fvm.hpp +++ b/src/backends/gpu/fvm.hpp @@ -4,6 +4,7 @@ #include <string> #include <backends/event.hpp> +#include <backends/fvm_types.hpp> #include <common_types.hpp> #include <mechanism.hpp> #include <memory/memory.hpp> @@ -26,8 +27,8 @@ struct backend { } /// define the real and index types - using value_type = double; - using size_type = nest::mc::cell_lid_type; + using value_type = fvm_value_type; + using size_type = fvm_size_type; /// define storage types using array = memory::device_vector<value_type>; diff --git a/src/backends/multicore/fvm.hpp b/src/backends/multicore/fvm.hpp index fa3b1b14..4c9e7618 100644 --- a/src/backends/multicore/fvm.hpp +++ b/src/backends/multicore/fvm.hpp @@ -4,6 +4,7 @@ #include <string> #include <backends/event.hpp> +#include <backends/fvm_types.hpp> #include <common_types.hpp> #include <event_queue.hpp> #include <mechanism.hpp> @@ -28,8 +29,8 @@ struct backend { } /// define the real and index types - using value_type = double; - using size_type = nest::mc::cell_lid_type; + using value_type = fvm_value_type; + using size_type = fvm_size_type; /// define storage types using array = memory::host_vector<value_type>; diff --git a/src/fvm_multicell.hpp b/src/fvm_multicell.hpp index 37aba8de..f74298e2 100644 --- a/src/fvm_multicell.hpp +++ b/src/fvm_multicell.hpp @@ -8,6 +8,7 @@ #include <vector> #include <algorithms.hpp> +#include <backends/fvm_types.hpp> #include <cell.hpp> #include <compartment.hpp> #include <event_queue.hpp> @@ -48,10 +49,10 @@ public: using backend = Backend; /// the real number type - using value_type = typename backend::value_type; + using value_type = fvm_value_type; /// the integral index type - using size_type = typename backend::size_type; + using size_type = fvm_size_type; /// the container used for values using array = typename backend::array; -- GitLab