- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Dear kj,
As far as I know, given the following list of directives related to vectorization that are currently supported by v8 and higher, only the NONTEMPORAL qualifier was not supported by v7 yet (so NOVECTOR should work with at least the latest v7).
!DIR$ IVDEP
!DIR$ VECTOR ALWAYS
!DIR$ NOVECTOR
!DIR$ VECTOR NONTEMPORAL
!DIR$ VECTOR ALIGNED
!DIR$ VECTOR UNALIGNED
!DIR$ LOOP COUNT ()
!DIR$ UNROLL()
!DIR$ NOUNROLL
!DIR$ DISTRIBUTE POINT
But Steve is right. Why not try v8 or higher? These versions will hopefully also generate more efficient code, so that you no longer need the particular NOVECTOR directive. If vector code is still inefficient, however, could you please share it with me because I am always interested in improving the efficiency heuristics of the vectorizer?
Aart Bik
http://www.aartbik.com/
- 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
Dear kjj,
Loop-based directives like NOVECTOR do not apply to array syntax. Incidentally, version 9.0 accepts these directives for one-dimensional operations, but our front-end team was not comfortable with generalizing loop-based directives any further. Using explicit loops for the two-dimensional operation on field(:,:) enables the insertion ofa directive on the innermost loop to disable vectorization. Judging from your example, however,the numerical inaccuracies may be introduced by the way the division is vectorized. Did your team experiment with compiler switches that disable the use of approximation instructions or code changes that use a higher precision for critical operations? This may provide a much simpler way to obtain the desired precision, while still allowingperformance benefits from vectorization.
Aart Bik
http://www.aartbik.com/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Good to see that Aart is working to eliminate more of the problems with use of array assignments.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page