You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sections w.r.t. LLVM IR level will be removed from the main README, e.g.,
1.1.3 LLVM compiler pass - Analysis and instrumentation
The analysis pass finds all heap, stack and global allocations. An allocation data-flow filter discards all stack and
global allocations if they are not passed to a target API (default MPI calls). Subsequently, type layouts for
user-defined types (e.g., struct) of these allocations are serialized to a file and a so-called type-id number is
created for each such unique type.
The instrumentation pass adds the instrumentation callbacks to our runtime, passing 1) the memory pointer, 2) the
corresponding type-id and 3) the number of allocated elements (extent).
Example instrumentation in LLVM intermediate representation (IR)
C and corresponding LLVM IR code: A simple heap allocation with malloc of a double-array. It contains all
information needed for TypeART:
; Assume: %size == n * sizeof(double); Heap allocation -- %pointer holds the returned pointer value:%pointer = calli8*@malloc(i64%size)
; TypeART instrumentation -- compute the number of double-elements:%extent = udivi64%size, 8; TypeART runtime callback (pointer, type-id, length) -- 6 is the type-id for double:callvoid@__typeart_alloc(i8*%pointer, i326, i64%extent)
; Original bitcast:%pointer_double = bitcasti8*%pointertodouble*
The TypeART demo is not properly maintained currently.
Current status
Issues for release 1.6
apply
scriptIssues (future)
The text was updated successfully, but these errors were encountered: