Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28384 Discussions

how to check if the array is aligned at 64 byte

Yulong_Ao
Beginner
583 Views
I use the directive to align the array at 64 byte, and I want to check whether this works. The following code is my try. However, it is likely that the alignment directive doesn't work because the mod result isn't zero.
program aligntest
       integer ,dimension(9) :: a
       integer ,dimension(9) :: b
       !dir$ attributes align: 64 :: a,b
     
       a=0
       b=1
       !use the address mod 64*8=512 
       print *,mod(loc(a),512)
       print *,mod(loc(b),512)     
 end program aligntest

 

0 Kudos
1 Solution
mecej4
Honored Contributor III
583 Views

You specified that the variables should be aligned to a multiple of 64 bytes. Why, then, do you expect alignment to 512-byte boundaries? Replace 512 by 64 throughout, or vice versa.

View solution in original post

0 Kudos
1 Reply
mecej4
Honored Contributor III
584 Views

You specified that the variables should be aligned to a multiple of 64 bytes. Why, then, do you expect alignment to 512-byte boundaries? Replace 512 by 64 throughout, or vice versa.

0 Kudos
Reply