diff options
author | Birte Kristina Friesel <birte.friesel@uos.de> | 2025-05-22 14:46:44 +0200 |
---|---|---|
committer | Birte Kristina Friesel <birte.friesel@uos.de> | 2025-05-22 14:46:44 +0200 |
commit | f930c70e477d97eb65c0a1e005a03e8d760ece6a (patch) | |
tree | 2183cc29fff9d545fbae4a1de8348f231a71e4c2 | |
parent | f3b7b26a87eb6ff5a45f4ff3fe71666c2dc4fc99 (diff) |
BFS: Throw out copyFromDPU, copyToDPU wrappers
They're incompatible with dfatool tracing
-rw-r--r-- | BFS/host/app.c | 84 | ||||
-rw-r--r-- | BFS/host/mram-management.h | 22 |
2 files changed, 44 insertions, 62 deletions
diff --git a/BFS/host/app.c b/BFS/host/app.c index 763ff7a..66b4792 100644 --- a/BFS/host/app.c +++ b/BFS/host/app.c @@ -186,19 +186,27 @@ int main(int argc, char **argv) PRINT_INFO(p.verbosity >= 2, " Copying data to DPU"); startTimer(&timer, 2, t0ini++); - copyToDPU(dpu, (uint8_t *) dpuNodePtrs_h, dpuNodePtrs_m, - (dpuNumNodes + 1) * sizeof(uint32_t)); - copyToDPU(dpu, (uint8_t *) dpuNeighborIdxs_h, - dpuNeighborIdxs_m, - dpuNumNeighbors * sizeof(uint32_t)); - copyToDPU(dpu, (uint8_t *) dpuNodeLevel_h, - dpuNodeLevel_m, - dpuNumNodes * sizeof(uint32_t)); - copyToDPU(dpu, (uint8_t *) visited, dpuVisited_m, - numNodes / 64 * sizeof(uint64_t)); - copyToDPU(dpu, (uint8_t *) nextFrontier, - dpuNextFrontier_m, - numNodes / 64 * sizeof(uint64_t)); + + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuNodePtrs_m, (uint8_t *) dpuNodePtrs_h, + ROUND_UP_TO_MULTIPLE_OF_8((dpuNumNodes + 1) * sizeof(uint32_t)))); + + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuNeighborIdxs_m, (uint8_t *) dpuNeighborIdxs_h, + ROUND_UP_TO_MULTIPLE_OF_8(dpuNumNeighbors * sizeof(uint32_t)))); + + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuNodeLevel_m, (uint8_t *) dpuNodeLevel_h, + ROUND_UP_TO_MULTIPLE_OF_8(dpuNumNodes * sizeof(uint32_t)))); + + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuVisited_m, (uint8_t *) visited, + ROUND_UP_TO_MULTIPLE_OF_8(numNodes / 64 * sizeof(uint64_t)))); + + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuNextFrontier_m, (uint8_t *) nextFrontier, + ROUND_UP_TO_MULTIPLE_OF_8(numNodes / 64 * sizeof(uint64_t)))) + // NOTE: No need to copy current frontier because it is written before being read stopTimer(&timer, 2); //loadTime += getElapsedTime(timer); @@ -208,8 +216,9 @@ int main(int argc, char **argv) PRINT_INFO(p.verbosity >= 2, " Copying parameters to DPU"); startTimer(&timer, 2, t1ini++); - copyToDPU(dpu, (uint8_t *) & dpuParams[dpuIdx], - dpuParams_m[dpuIdx], sizeof(struct DPUParams)); + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams_m[dpuIdx], (uint8_t *) & dpuParams[dpuIdx], + ROUND_UP_TO_MULTIPLE_OF_8(sizeof(struct DPUParams)))); stopTimer(&timer, 2); //loadTime += getElapsedTime(timer); @@ -248,19 +257,15 @@ int main(int argc, char **argv) uint32_t dpuNumNodes = dpuParams[dpuIdx].dpuNumNodes; if (dpuNumNodes > 0) { if (dpuIdx == 0) { - copyFromDPU(dpu, - dpuParams[dpuIdx]. - dpuNextFrontier_m, - (uint8_t *) currentFrontier, - numNodes / 64 * - sizeof(uint64_t)); + DPU_ASSERT(dpu_copy_from(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams[dpuIdx].dpuNextFrontier_m, + (uint8_t *) currentFrontier, + ROUND_UP_TO_MULTIPLE_OF_8(numNodes / 64 * sizeof(uint64_t)))); } else { - copyFromDPU(dpu, - dpuParams[dpuIdx]. - dpuNextFrontier_m, - (uint8_t *) nextFrontier, - numNodes / 64 * - sizeof(uint64_t)); + DPU_ASSERT(dpu_copy_from(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams[dpuIdx].dpuNextFrontier_m, + (uint8_t *) nextFrontier, + ROUND_UP_TO_MULTIPLE_OF_8(numNodes / 64 * sizeof(uint64_t)))); for (uint32_t i = 0; i < numNodes / 64; ++i) { currentFrontier[i] |= @@ -287,19 +292,15 @@ int main(int argc, char **argv) dpuParams[dpuIdx].dpuNumNodes; if (dpuNumNodes > 0) { // Copy current frontier to all DPUs (place in next frontier and DPU will update visited and copy to current frontier) - copyToDPU(dpu, - (uint8_t *) currentFrontier, - dpuParams[dpuIdx]. - dpuNextFrontier_m, - numNodes / 64 * - sizeof(uint64_t)); + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams[dpuIdx].dpuNextFrontier_m, + (uint8_t *) currentFrontier, + ROUND_UP_TO_MULTIPLE_OF_8(numNodes / 64 * sizeof(uint64_t)))); // Copy new level to DPU dpuParams[dpuIdx].level = level; - copyToDPU(dpu, - (uint8_t *) & - dpuParams[dpuIdx], - dpuParams_m[dpuIdx], - sizeof(struct DPUParams)); + DPU_ASSERT(dpu_copy_to(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams_m[dpuIdx], (uint8_t *) &dpuParams[dpuIdx], + ROUND_UP_TO_MULTIPLE_OF_8(sizeof(struct DPUParams)))); ++dpuIdx; } } @@ -317,9 +318,10 @@ int main(int argc, char **argv) uint32_t dpuNumNodes = dpuParams[dpuIdx].dpuNumNodes; if (dpuNumNodes > 0) { uint32_t dpuStartNodeIdx = dpuIdx * numNodesPerDPU; - copyFromDPU(dpu, dpuParams[dpuIdx].dpuNodeLevel_m, - (uint8_t *) (nodeLevel + dpuStartNodeIdx), - dpuNumNodes * sizeof(float)); + DPU_ASSERT(dpu_copy_from(dpu, DPU_MRAM_HEAP_POINTER_NAME, + dpuParams[dpuIdx].dpuNodeLevel_m, + (uint8_t *) (nodeLevel + dpuStartNodeIdx), + ROUND_UP_TO_MULTIPLE_OF_8(dpuNumNodes * sizeof(float)))); } ++dpuIdx; } diff --git a/BFS/host/mram-management.h b/BFS/host/mram-management.h index 61616da..a953d6a 100644 --- a/BFS/host/mram-management.h +++ b/BFS/host/mram-management.h @@ -1,6 +1,4 @@ - -#ifndef _MRAM_MANAGEMENT_H_ -#define _MRAM_MANAGEMENT_H_ +#pragma once #include "common.h" #include "utils.h" @@ -29,21 +27,3 @@ static uint32_t mram_heap_alloc(struct mram_heap_allocator_t *allocator, } return ret; } - -static void copyToDPU(struct dpu_set_t dpu, uint8_t *hostPtr, uint32_t mramIdx, - uint32_t size) -{ - DPU_ASSERT(dpu_copy_to - (dpu, DPU_MRAM_HEAP_POINTER_NAME, mramIdx, hostPtr, - ROUND_UP_TO_MULTIPLE_OF_8(size))); -} - -static void copyFromDPU(struct dpu_set_t dpu, uint32_t mramIdx, - uint8_t *hostPtr, uint32_t size) -{ - DPU_ASSERT(dpu_copy_from - (dpu, DPU_MRAM_HEAP_POINTER_NAME, mramIdx, hostPtr, - ROUND_UP_TO_MULTIPLE_OF_8(size))); -} - -#endif |