- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I've experienced a strange behaviour of the intel fortran compiler (ifort version 12.1.4) that I think is a bug
The with the label 10 in source code below is not vectorized by the 32-bit compiler because of a dependency whereas it is vectorized by the 64-bit compiler. This leads to differences in the output between the binary built using 32-bit compiler and the one built with the 64-bit compiler. Inserting a !DEC$ NOVECTOR before the loop prevents the compiler from vectorizing it and the 64-bit version no longer shows differences with the 32-bit. Could you please confirm that this is a bug in the compiler? If it is not the case could you give me some hints on how to avoid the issue. Many thanks Tarik
[fortran]
SUBROUTINE
CONV_DP (A, IA, B, IB, C, IC, N, M)
C
DOUBLE PRECISION A(*), B(*), C(*)
INTEGER IA, IB, IC, N, M
C C
INTEGER AI
C Pointer to A vector
INTEGER AJ
C Pointer to A vector
INTEGER BI
C Pointer to B vector
INTEGER CI
C Pointer to C vector
INTEGER I, J
C Indices for DO loops
CC
C Verify parameters
C
IF (N .LE. 0) GOTO 9999
IF (M .LE. 0) GOTO 9999
IF (IC .EQ. 0) GOTO 9999
C
C Initialize pointers C
AI = 1 BI = 1 CI = 1
C C To insure that C may overlay A, do the following C
IF (M .GT. 1) THEN
C
DO 20 I=1, N
BI = 1
AJ = AI
C(CI) = A(AJ) * B(BI)
C
DO 10 J=1, M-1
AJ = AJ + IA
BI = BI + IB
C(CI) = C(CI) + A(AJ) * B(BI)
10 CONTINUE
C
AI = AI + IA
CI = CI + IC
20 CONTINUE
C
ELSE
CALL VSMUL_DP (A, IA, B, C, IC, N)
ENDIF C
9999 CONTINUE
RETURN
END [/fortran]
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The problem is fixed by the latest compiler release available from registrationcenter.intel.com ( download package l_fcompxe_2013.2.146 ). I will mark this thread as closed
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page