From ac581c6b5c38331e05e20d00e994b959286c63b1 Mon Sep 17 00:00:00 2001 From: Sam Yates <yates@cscs.ch> Date: Tue, 31 Jul 2018 13:00:13 +0200 Subject: [PATCH] Split multi_event_stream.cu implementation. (#556) * Remove dependency on memory library and range utils from `multi_event_stream.cu` source. Fixes #545 --- arbor/CMakeLists.txt | 1 + arbor/backends/gpu/multi_event_stream.cpp | 17 +++++++++++++++++ arbor/backends/gpu/multi_event_stream.cu | 15 ++------------- arbor/backends/gpu/multi_event_stream.hpp | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 arbor/backends/gpu/multi_event_stream.cpp diff --git a/arbor/CMakeLists.txt b/arbor/CMakeLists.txt index f3ff1c4d..b07fddd6 100644 --- a/arbor/CMakeLists.txt +++ b/arbor/CMakeLists.txt @@ -58,6 +58,7 @@ if(ARB_WITH_CUDA) backends/gpu/matrix_assemble.cu backends/gpu/matrix_interleave.cu backends/gpu/matrix_solve.cu + backends/gpu/multi_event_stream.cpp backends/gpu/multi_event_stream.cu backends/gpu/shared_state.cu backends/gpu/stimulus.cu diff --git a/arbor/backends/gpu/multi_event_stream.cpp b/arbor/backends/gpu/multi_event_stream.cpp new file mode 100644 index 00000000..858c9978 --- /dev/null +++ b/arbor/backends/gpu/multi_event_stream.cpp @@ -0,0 +1,17 @@ +#include <arbor/common_types.hpp> + +#include "backends/gpu/multi_event_stream.hpp" +#include "memory/memory.hpp" + +namespace arb { +namespace gpu { + +void multi_event_stream_base::clear() { + memory::fill(span_begin_, 0u); + memory::fill(span_end_, 0u); + memory::fill(mark_, 0u); + n_nonempty_stream_[0] = 0; +} + +} // namespace gpu +} // namespace arb diff --git a/arbor/backends/gpu/multi_event_stream.cu b/arbor/backends/gpu/multi_event_stream.cu index 5e4e5cf9..1ed5631b 100644 --- a/arbor/backends/gpu/multi_event_stream.cu +++ b/arbor/backends/gpu/multi_event_stream.cu @@ -2,10 +2,6 @@ #include "backends/event.hpp" #include "backends/gpu/multi_event_stream.hpp" -#include "memory/array.hpp" -#include "memory/copy.hpp" -#include "util/rangeutil.hpp" - #include "cuda_common.hpp" namespace arb { @@ -90,17 +86,10 @@ namespace kernels { } } // namespace kernels -void multi_event_stream_base::clear() { - memory::fill(span_begin_, 0u); - memory::fill(span_end_, 0u); - memory::fill(mark_, 0u); - n_nonempty_stream_[0] = 0; -} - // Designate for processing events `ev` at head of each event stream `i` // until `event_time(ev)` > `t_until[i]`. void multi_event_stream_base::mark_until_after(const_view t_until) { - arb_assert(n_streams()==util::size(t_until)); + arb_assert(n_streams()==t_until.size()); constexpr int block_dim = 128; @@ -113,7 +102,7 @@ void multi_event_stream_base::mark_until_after(const_view t_until) { // Designate for processing events `ev` at head of each event stream `i` // while `t_until[i]` > `event_time(ev)`. void multi_event_stream_base::mark_until(const_view t_until) { - arb_assert(n_streams()==util::size(t_until)); + arb_assert(n_streams()==t_until.size()); constexpr int block_dim = 128; unsigned n = n_stream_; diff --git a/arbor/backends/gpu/multi_event_stream.hpp b/arbor/backends/gpu/multi_event_stream.hpp index 217c1992..82842558 100644 --- a/arbor/backends/gpu/multi_event_stream.hpp +++ b/arbor/backends/gpu/multi_event_stream.hpp @@ -1,6 +1,6 @@ #pragma once -// Indexed collection of pop-only event queues --- multicore back-end implementation. +// Indexed collection of pop-only event queues --- CUDA back-end implementation. #include <arbor/arbexcept.hpp> #include <arbor/common_types.hpp> -- GitLab