Memory Dependency with IVDEP Directive

The -ivdep_parallel option discussed below is used for Itanium(TM)-based applications only.

The -ivdep_parallel option indicates there is absolutely no loop-carried memory dependency in the loop where IVDEP directive is specified. This technique is useful for some sparse matrix applications.

For example,  the following loop  requires -ivdep_parallel in addition to the directive IVDEP to indicate there is no loop-carried dependencies.

!DIR$IVDEP
do i=1,n
 e(ix(2,i))=e(ix(2,i))+1.0
 e(ix(3,i))=e(ix(3,i))+2.0
enddo

The following example shows that using this option and the IVDEP directive ensures there is no loop-carried dependency for the store into a().

!DIR$IVDEP
do i=1,n
a(b(j)) = a(b(j))+1
enddo

See IVDEP directive for IA-32 applications.