Commit 8927ccbf authored by Robert Kimball's avatar Robert Kimball

wip

parent 9970c680
...@@ -119,25 +119,24 @@ runtime::Backend::AsyncEvent::AsyncEvent(size_t buffer_number, ...@@ -119,25 +119,24 @@ runtime::Backend::AsyncEvent::AsyncEvent(size_t buffer_number,
{ {
} }
void runtime::Backend::post_async_read_event(void* p, future<void>
size_t size_in_bytes, runtime::Backend::post_async_read_event(void* p, size_t size_in_bytes, size_t buffer_number)
size_t buffer_number,
std::promise<void>& promise)
{ {
auto event = make_shared<AsyncEvent>(AsyncEvent::Type::READ, buffer_number, p, size_in_bytes);
m_event_queue.post_event(event);
return event->get_future();
} }
void runtime::Backend::post_async_write_event(const void* p, future<void> runtime::Backend::post_async_write_event(const void* p,
size_t size_in_bytes, size_t size_in_bytes,
size_t buffer_number, size_t buffer_number)
std::promise<void>& promise)
{ {
} }
void runtime::Backend::post_async_execute_event( future<void> runtime::Backend::post_async_execute_event(
const std::shared_ptr<Executable>& executable, const std::shared_ptr<Executable>& executable,
const std::vector<std::shared_ptr<runtime::Tensor>>& outputs, const std::vector<std::shared_ptr<runtime::Tensor>>& outputs,
const std::vector<std::shared_ptr<runtime::Tensor>>& inputs, const std::vector<std::shared_ptr<runtime::Tensor>>& inputs,
size_t buffer_number, size_t buffer_number)
std::promise<void>& promise)
{ {
} }
...@@ -153,6 +153,11 @@ protected: ...@@ -153,6 +153,11 @@ protected:
WRITE, WRITE,
EXECUTE EXECUTE
}; };
AsyncEvent(Type type, size_t buffer_number, void* p, size_t size_in_bytes);
AsyncEvent(size_t buffer_number,
const std::shared_ptr<Executable>& m_executable,
const std::vector<std::shared_ptr<runtime::Tensor>>& m_outputs,
const std::vector<std::shared_ptr<runtime::Tensor>>& m_inputs);
void* get_data() const { return m_data; } void* get_data() const { return m_data; }
bool get_size_in_bytes() const { return m_size_in_bytes; } bool get_size_in_bytes() const { return m_size_in_bytes; }
Type get_type() const { return m_type; } Type get_type() const { return m_type; }
...@@ -162,12 +167,8 @@ protected: ...@@ -162,12 +167,8 @@ protected:
return m_outputs; return m_outputs;
} }
const std::vector<std::shared_ptr<runtime::Tensor>>* get_inputs() const { return m_inputs; } const std::vector<std::shared_ptr<runtime::Tensor>>* get_inputs() const { return m_inputs; }
std::future<void> get_future() { return m_promise.get_future(); }
private: private:
AsyncEvent(Type type, size_t buffer_number, void* p, size_t size_in_bytes);
AsyncEvent(size_t buffer_number,
const std::shared_ptr<Executable>& m_executable,
const std::vector<std::shared_ptr<runtime::Tensor>>& m_outputs,
const std::vector<std::shared_ptr<runtime::Tensor>>& m_inputs);
const Type m_type; const Type m_type;
size_t m_buffer_number; size_t m_buffer_number;
void* m_data; void* m_data;
...@@ -175,19 +176,15 @@ protected: ...@@ -175,19 +176,15 @@ protected:
std::shared_ptr<Executable> m_executable; std::shared_ptr<Executable> m_executable;
const std::vector<std::shared_ptr<runtime::Tensor>>* m_outputs; const std::vector<std::shared_ptr<runtime::Tensor>>* m_outputs;
const std::vector<std::shared_ptr<runtime::Tensor>>* m_inputs; const std::vector<std::shared_ptr<runtime::Tensor>>* m_inputs;
std::promise<void> m_promise;
}; };
void post_async_read_event(void* p, std::future<void> post_async_read_event(void* p, size_t size_in_bytes, size_t buffer_number);
size_t size_in_bytes, std::future<void>
size_t buffer_number, post_async_write_event(const void* p, size_t size_in_bytes, size_t buffer_number);
std::promise<void>& promise); std::future<void>
void post_async_write_event(const void* p, post_async_execute_event(const std::shared_ptr<Executable>& executable,
size_t size_in_bytes, const std::vector<std::shared_ptr<runtime::Tensor>>& outputs,
size_t buffer_number, const std::vector<std::shared_ptr<runtime::Tensor>>& inputs,
std::promise<void>& promise); size_t buffer_number);
void post_async_execute_event(const std::shared_ptr<Executable>& executable,
const std::vector<std::shared_ptr<runtime::Tensor>>& outputs,
const std::vector<std::shared_ptr<runtime::Tensor>>& inputs,
size_t buffer_number,
std::promise<void>& promise);
}; };
...@@ -102,9 +102,8 @@ future<void> runtime::Tensor::begin_write(const void* p, size_t size_in_bytes, s ...@@ -102,9 +102,8 @@ future<void> runtime::Tensor::begin_write(const void* p, size_t size_in_bytes, s
{ {
if (m_backend) if (m_backend)
{ {
auto f = m_promise.get_future(); // auto f = m_promise.get_future();
m_backend->post_async_write_event(p, size_in_bytes, buffer_number, m_promise); return m_backend->post_async_write_event(p, size_in_bytes, buffer_number);
return f;
} }
else else
{ {
...@@ -121,9 +120,8 @@ future<void> runtime::Tensor::begin_read(void* p, size_t size_in_bytes, size_t b ...@@ -121,9 +120,8 @@ future<void> runtime::Tensor::begin_read(void* p, size_t size_in_bytes, size_t b
{ {
if (m_backend) if (m_backend)
{ {
auto f = m_promise.get_future(); // auto f = m_promise.get_future();
m_backend->post_async_read_event(p, size_in_bytes, buffer_number, m_promise); return m_backend->post_async_read_event(p, size_in_bytes, buffer_number);
return f;
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment