- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I ran the compiler with the options:
-O2 -xhost -vec-report5
and I get some information, but it's not entirely useful. For example:
CompileOptions.f90(27): (col. 33) remark: vector dependence: assumed OUTPUT dependence between (unknown) line 27 and (unknown) line 27.
CompileOptions.f90(27): (col. 33) remark: vector dependence: assumed FLOW dependence between var$95 line 27 and var$95 line 27.
I have literally thousands of lines like that where they all refer to the same line number but have either (unknown) or var$ something. Did I miss a step somewhere?
Thanks,
Tim
I ran the compiler with the options:
-O2 -xhost -vec-report5
and I get some information, but it's not entirely useful. For example:
CompileOptions.f90(27): (col. 33) remark: vector dependence: assumed OUTPUT dependence between (unknown) line 27 and (unknown) line 27.
CompileOptions.f90(27): (col. 33) remark: vector dependence: assumed FLOW dependence between var$95 line 27 and var$95 line 27.
I have literally thousands of lines like that where they all refer to the same line number but have either (unknown) or var$ something. Did I miss a step somewhere?
Thanks,
Tim
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Perhaps if you would show an example you might get a more useful explanation. -vec-report2 would likely give you enough comments to get started. Usually, this means the compiler believes you have a part of an array left of = which may overlap part of the same array on the right side of =. The var$ hidden variables would be created by the compiler; it's hard to imagine what source code would give rise to this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This particular line corresponds to:
[fortran]DO i = 1, SIZE(compile_options,1) WRITE(fid,strfmt) '<', TRIM(compile_options(i,1)), '>', & TRIM(compile_options(i,2)), '' END DO[/fortran]
where
[fortran]CHARACTER(LEN=67), DIMENSION(4,2) :: compile_options [/fortran]
Now, I'm not worried about optimizing this loop. But I have 1174 lines of output from the vec-report that talks about var$ and 4100 lines that refer to (unknown).
It looks like, just from spot checking several, that the var$ messages are all about loops that have READ, WRITE, PRINT, or function calls in them.
The unknown references are more confusing. For instance,
viscous.F90(680): (col. 25) remark: vector dependence: assumed FLOW dependence between (unknown) line 680 and sx line 674.
where line 674 is:
[bash]diffVel = -RDIFT / iblk%Sc_t * rmwt(ns) & / iblk%average%MW(I,J,K) & * ( DMDX(NS,I)*SX(I,J,K) + & DMDY(NS,I)*SY(I,J,K) + & DMDZ(NS,I)*SZ(I,J,K) )[/bash]
and 680 is:
[fortran]iblk%FLUX(iblk%INCHE+NS,I,J,K) = iblk%FLUX(iblk%INCHE+NS,I,J,K) + diffVel[/fortran]
Those are the only two lines in the DO loop over NS (1 to NSPECI, which is a runtime constant). What is it trying to say here and why does it think SX would be a problem when the only thing in common between the two lines is diffVel? Why does it say (unknown) instead of one of the two variables on line 680?
Tim
[fortran]DO i = 1, SIZE(compile_options,1) WRITE(fid,strfmt) '<', TRIM(compile_options(i,1)), '>', & TRIM(compile_options(i,2)), '' END DO[/fortran]
where
[fortran]CHARACTER(LEN=67), DIMENSION(4,2) :: compile_options [/fortran]
Now, I'm not worried about optimizing this loop. But I have 1174 lines of output from the vec-report that talks about var$ and 4100 lines that refer to (unknown).
It looks like, just from spot checking several, that the var$ messages are all about loops that have READ, WRITE, PRINT, or function calls in them.
The unknown references are more confusing. For instance,
viscous.F90(680): (col. 25) remark: vector dependence: assumed FLOW dependence between (unknown) line 680 and sx line 674.
where line 674 is:
[bash]diffVel = -RDIFT / iblk%Sc_t * rmwt(ns) & / iblk%average%MW(I,J,K) & * ( DMDX(NS,I)*SX(I,J,K) + & DMDY(NS,I)*SY(I,J,K) + & DMDZ(NS,I)*SZ(I,J,K) )[/bash]
and 680 is:
[fortran]iblk%FLUX(iblk%INCHE+NS,I,J,K) = iblk%FLUX(iblk%INCHE+NS,I,J,K) + diffVel[/fortran]
Those are the only two lines in the DO loop over NS (1 to NSPECI, which is a runtime constant). What is it trying to say here and why does it think SX would be a problem when the only thing in common between the two lines is diffVel? Why does it say (unknown) instead of one of the two variables on line 680?
Tim

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