a dynamic memory allocation library for high level
play

A Dynamic Memory Allocation Library for High-Level Synthesis - PowerPoint PPT Presentation

A Dynamic Memory Allocation Library for High-Level Synthesis Nicholas V. Giamblanco and Jason H. Anderson University of Toronto, Canada Dept. of Electrical and Computer Engineering FPL 2019 Dynamic Memory Allocation in HLS: Current Problems


  1. A Dynamic Memory Allocation Library for High-Level Synthesis Nicholas V. Giamblanco and Jason H. Anderson University of Toronto, Canada Dept. of Electrical and Computer Engineering FPL 2019

  2. Dynamic Memory Allocation in HLS: Current Problems No Obvious Way TO include it! Where and How Big Performance & Which Allocator? should the Area Problems Arena(Heap) Be? 2

  3. Dynamic Memory Allocation in HLS: Why Include it? ● No More Code-Refactoring! ● No More Memory Over-Provisioning ● Portability ● Marginal Performance and Area Impacts!!! 3

  4. The Allocators gnumem Linked-List Allocator. bitmem Bitmap Allocator. linmem Linear Allocator. budmem Buddy Allocator. lutmem Look-Up Table Allocator. 4

  5. Our Approach Implement Algorithms in HLS-friendly C Library ● Arena (heap) implemented as BRAM Automate Transform with LLVM Pass ● User can select ○ Allocator Algorithm ○ Heap Size Available on Github: https://github.com/ngiambla/libmem 5

  6. Example: // USER PROGRAM #TCL PARAMETERS FOR USER libmem void check_this_out() { int * arr = (int*)malloc(SIZE); set_parameter HEAP_SZ 65536 //… do stuff here set_parameter ALLOC_S gnu free(arr); } void check_this_out() { int * arr = (int*)gnu_malloc(SIZE); //… do stuff here gnu_free(arr); 6 }

  7. Allocator Evaluation 7

  8. Results: Area 8

  9. Results: Performance 9

  10. Benchmarks Typical Memory Request Patterns Real world apps list hash Random: random request, random release priq Square: request-do-release dfs stack Triangular: iterative-request do iterative-release Available on Github: https://github.com/ngiambla/dmbenchhls 10

  11. Take-away Suggest an allocator based on Memory Pattern AND User Requirements 11

  12. Conclusions ● One Allocator does not ‘rule them all’ ● Performance and area are marginally affected by allocators! ● Allocators within HLS work and are useful 12

  13. THANKS! SEE ME AT THE POSTER Downloads: https://github.com/ngiambla/libmem https://github.com/ngiambla/dmbenchhls 13

Recommend


More recommend