- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm using Intel Fortran 18.0.1.163 on a system with KNL cpus on the compute nodes. Here is my test code,
module align_test_module
implicit none
contains
subroutine do_something(nVertLevels)
integer, pointer :: nVertLevels
integer :: i
real, dimension(:), allocatable :: uTemp
allocate(uTemp(nVertLevels))
!$omp simd aligned(uTemp:64)
do i = 1, nVertLevels
uTemp(i) = 0.0
end do
end subroutine do_something
end module align_test_module
And here is my compile line,
$ ifort -c align_test.f90 -convert big_endian -FR -xmic-avx512 -fimf-use-svml -qopt-report-phase=vec -qopt-report=5 -align array64byte
And here is the optrpt output,
Intel(R) Advisor can now assist with vectorization and show optimization
report messages with your source code.
See "https://software.intel.com/en-us/intel-advisor-xe" for details.
Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 18.0.1.163 Build 20171018
Compiler options: -c -convert big_endian -FR -xmic-avx512 -fimf-use-svml -qopt-report-phase=vec -qopt-report=5 -align array64byte
Begin optimization report for: ALIGN_TEST_MODULE::DO_SOMETHING
Report from: Vector optimizations [vec]
LOOP BEGIN at align_test.f90(17,5)
remark #15542: loop was not vectorized: inner loop was already vectorized
LOOP BEGIN at align_test.f90(18,7)
remark #15542: loop was not vectorized: inner loop was already vectorized
LOOP BEGIN at align_test.f90(18,7)
remark #15389: vectorization support: reference UTEMP(:) has unaligned access
remark #15381: vectorization support: unaligned access used inside loop body
remark #15305: vectorization support: vector length 16
remark #15309: vectorization support: normalized vectorization overhead 0.600
remark #15300: LOOP WAS VECTORIZED
remark #15451: unmasked unaligned unit stride stores: 1
remark #15475: --- begin vector cost summary ---
remark #15476: scalar cost: 3
remark #15477: vector cost: 0.310
remark #15478: estimated potential speedup: 4.000
remark #15488: --- end vector cost summary ---
LOOP END
LOOP BEGIN at align_test.f90(18,7)
<Remainder loop for vectorization>
remark #15389: vectorization support: reference UTEMP(:) has unaligned access
remark #15381: vectorization support: unaligned access used inside loop body
remark #15305: vectorization support: vector length 8
remark #15309: vectorization support: normalized vectorization overhead 1.250
remark #15301: REMAINDER LOOP WAS VECTORIZED
LOOP END
LOOP END
LOOP END
===========================================================================
Now if I remove the -xmic-avx512 flag then the "unaligned access" message goes away but then I know longer have a binary that is optimized for the KNL.
Link Copied
0 Replies
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page