- 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
The compiler thinks you're passing a non-contiguous arrsy to a routine which expects a contiguous array. This often happens with pointer arrays or if you pass an array slice with a stride other than 1. Because of this, the compiler has to construct a contiguous copy of the array and pass that- the copy goes on the stack by default.
The best solution, if it works for your application, is to make the array contiguous. Second best is to have the routine accept the array as assumed-shape, with dimension (:), and provide an explicit interface visible to the caller. Third best is to set the Linker stack reserve size to a large enough value to permit the temp to be created. This is the /F switch to ifort or /link /stack:n switch at the end of the ifort line. Otherwise. use /heap-arrays which wull cause the compiler to allocate these temp copies on the heap.
/automatic tells the compiler to allocate all variables on the stack, which makes the proble, worse.
See the Newsletter articles in the sticky threads for more on these topics.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page