Skip to content

Commit

Permalink
Bugfixing
Browse files Browse the repository at this point in the history
  • Loading branch information
davschneller committed May 21, 2024
1 parent 0e6cd91 commit dd69ff0
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 16 deletions.
6 changes: 5 additions & 1 deletion async/ExecInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,11 @@ class ExecInfo {

std::vector<BufferOrigin*> m_bufferOrigin;

HostBufferOrigin* hostBuffer;

public:
ExecInfo() { hostBuffer = new HostBufferOrigin(); }

virtual ~ExecInfo() = default;

/**
Expand Down Expand Up @@ -83,7 +87,7 @@ class ExecInfo {
protected:
void _addBuffer(size_t size) {
m_bufferSize.push_back(size);
m_bufferOrigin.push_back(new HostBufferOrigin());
m_bufferOrigin.push_back(hostBuffer);
}

void _resizeBuffer(unsigned int id, size_t size) {
Expand Down
3 changes: 2 additions & 1 deletion async/as/MPIAsync.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,9 @@ class MPIAsync : public MPIBase<Executor, InitParameter, Parameter> {
}

const void* buffer(unsigned int id) const override {
if (MPIBase<Executor, InitParameter, Parameter>::scheduler().isExecutor())
if (MPIBase<Executor, InitParameter, Parameter>::scheduler().isExecutor()) {
return MPIBase<Executor, InitParameter, Parameter>::buffer(id);
}

return Base<Executor, InitParameter, Parameter>::_buffer(id);
}
Expand Down
26 changes: 13 additions & 13 deletions async/as/MPIBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -244,19 +244,19 @@ class MPIBase : public ThreadBase<Executor, InitParameter, Parameter>, private S
it->position = 0;
}

unsigned int paramSize() const { return std::max(sizeof(InitParameter), sizeof(Parameter)); }

virtual bool useAsyncCopy() const = 0;
unsigned int paramSize() const override {
return std::max(sizeof(InitParameter), sizeof(Parameter));
}

bool useAsyncCopy(unsigned int id) const {
bool useAsyncCopy(unsigned int id) const override {
assert(id < m_executorBuffer.size());

return useAsyncCopy() && !m_executorBuffer[id].sync;
}

unsigned int numBufferChunks() const { return m_numBufferChunks; }
unsigned int numBufferChunks() const override { return m_numBufferChunks; }

void _addBuffer(bool sync) { _addBuffer(0L, 0, false, sync); }
void _addBuffer(bool sync) override { _addBuffer(0L, 0, false, sync); }

unsigned int
_addBuffer(const void* origin, unsigned long size, bool clone = false, bool sync = true) {
Expand Down Expand Up @@ -329,7 +329,7 @@ class MPIBase : public ThreadBase<Executor, InitParameter, Parameter>, private S
return Base<Executor, InitParameter, Parameter>::numBuffers() - 1;
}

void _resizeBuffer(unsigned int id) { _resizeBuffer(id, 0L, 0); }
void _resizeBuffer(unsigned int id) override { _resizeBuffer(id, 0L, 0); }

void _resizeBuffer(unsigned int id, const void* buffer, size_t size) {
if (!m_scheduler->isExecutor()) {
Expand Down Expand Up @@ -384,7 +384,7 @@ class MPIBase : public ThreadBase<Executor, InitParameter, Parameter>, private S
}
}

void _removeBuffer(unsigned int id) {
void _removeBuffer(unsigned int id) override {
assert(id < m_executorBuffer.size());

m_numBufferChunks -= m_executorBuffer[id].bufferChunks;
Expand All @@ -398,7 +398,7 @@ class MPIBase : public ThreadBase<Executor, InitParameter, Parameter>, private S
Base<Executor, InitParameter, Parameter>::removeBuffer(id);
}

void* getBufferPos(unsigned int id, int rank, int size) {
void* getBufferPos(unsigned int id, int rank, int size) override {
assert(rank < m_scheduler->groupSize() - 1);
assert(bufferOffset(id, rank) + size <=
(Base<Executor, InitParameter, Parameter>::bufferSize(id)));
Expand All @@ -408,25 +408,25 @@ class MPIBase : public ThreadBase<Executor, InitParameter, Parameter>, private S
return buf;
}

void _execInit(const void* paramBuffer) {
void _execInit(const void* paramBuffer) override {
const InitParameter* param = reinterpret_cast<const InitParameter*>(paramBuffer);
Base<Executor, InitParameter, Parameter>::callInit(*param);

resetBufferPositionOnExecutor();
}

void _exec(const void* paramBuffer) {
void _exec(const void* paramBuffer) override {
const Parameter* param = reinterpret_cast<const Parameter*>(paramBuffer);
ThreadBase<Executor, InitParameter, Parameter>::call(*param);
}

void _wait() {
void _wait() override {
ThreadBase<Executor, InitParameter, Parameter>::wait();

resetBufferPositionOnExecutor();
}

void _finalize() {
void _finalize() override {
for (typename std::vector<ExecutorBufInfo>::iterator it = m_executorBuffer.begin();
it != m_executorBuffer.end();
++it) {
Expand Down
3 changes: 2 additions & 1 deletion async/as/Thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,9 @@ class Thread : public ThreadBase<Executor, InitParameter, Parameter> {
void sendBuffer(unsigned int id, size_t size) {
assert(id < (Base<Executor, InitParameter, Parameter>::numBuffers()));

if (m_buffer[id].init)
if (m_buffer[id].init || size == 0) {
return;
}

assert((Base<Executor, InitParameter, Parameter>::_buffer(id)));

Expand Down

0 comments on commit dd69ff0

Please sign in to comment.