Skip to content

Array wrappers for working with aligned memory allocations in Julia

License

Notifications You must be signed in to change notification settings

analytech-solutions/AlignedArrays.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlignedArrays.jl

Build Status

Array wrappers for working with aligned memory allocations suitable for efficient GPU and RDMA transfers.

Usage

AlignedArrays.jl is still in early development, and currently only works for Linux systems. Basic usage follows that of standard Array, Vector, Matrix types, but with the added parameter depicting the alignment of the array's memory. Use AlignedArray, AlignedVector, or AlignedMatrix to specify memory alignment as a type parameter. We provide PageAlignedArray, PageAlignedVector, and PageAlignedMatrix for convenience when allocations using the system's page-alignment is desired.

julia> using AlignedArrays

julia> x = Vector{Int32}(undef, 5)
5-element Array{Int32,1}:
 1897413280
      32662
 1826880912
      32662
 1730212208

julia> y = PageAlignedVector{Int32}(undef, 5)
5-element Array{Int32,1}:
 0
 0
 0
 0
 0

julia> z = AlignedVector{Int32, 1024}(undef, 5)
5-element Array{Int32,1}:
 -1
 -1
 -1
 -1
 -1

julia> typeof(y)
AlignedArray{Int32,1,4096}

julia> typeof(z)
AlignedArray{Int32,1,1024}

julia> pointer(x)
Ptr{Int32} @0x00007f966a213850

julia> pointer(y)
Ptr{Int32} @0x00000000029cf000

julia> pointer(z)
Ptr{Int32} @0x00000000029fd800

julia> y .= x
5-element Array{Int32,1}:
 1897413280
      32662
 1826880912
      32662
 1730212208

julia> for i in y
           println(i)
       end
1897413280
32662
1826880912
32662
1730212208

About

Array wrappers for working with aligned memory allocations in Julia

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages