- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I'm not very confident the following, but pretty sure the intel Fortran compiler has such feature.
The problem I am facing on is that I cannot use some of the functions related to array such as
sum, maxval, etc.
and also procedure
array = 0d0,
which means
do i = 1, N
array(i) = 0d0
enddo
in usual case.
The above expressions seems not be usable with following 2 certain situations (It seems both are necessary):
(i) When I have large array such as complex value with number of elements 100 x 100 x 100.
The total size of array would be 16 MB, where I have to change the limit of stack size usually like
$ ulimit -s 16000
since the unit is [kB] for above command.
(ii) When I use option
-openmp -parallel
I'm actually using option as
-O3 -i-dynamic -fast -openmp -parallel -par_threshold0 -par_report2 -framework Accelerate -C
But I did not check which option really trigger the error.
When I run my code in such situation, I get segmentation fault.
Does anybody have had similar experiments?
The above error can be avoided if you don't use functions that operate arrays and use usual do-loop for those.
I hope this information helps.
If anybody has any suggestions, please let me know.
Also please point out my mistakes.
Sincerely,
masa
Intel Fortran Compiler for Mac OS X
version 10.1
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can't make out if you are asking a question which hasn't already been covered frequently on these forums.
-par_threshold0 is unlikely to be useful except as a partial means of pointing out where there is potential parallelism. It will almost certainly generate parallel code and data replication on stack in many cases where that will ruin performance, as well as prevent running in 32-bit mode.
-par_threshold0 is unlikely to be useful except as a partial means of pointing out where there is potential parallelism. It will almost certainly generate parallel code and data replication on stack in many cases where that will ruin performance, as well as prevent running in 32-bit mode.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hitim18,
Thank you for your reply.
I just checked -par_threshold0 option.
And I understand what you told me, andrecognizeyour suggestion is correct.
However, the problem is not that.
I still 'get segmentation fault' with/without the option even I use, for example, -par_threshold50.
I believe we cannot use simplifiedexpressionswhen you are in the situation (i) and (ii).
I hope I can find any official documents about this issue, but so far I don't see it.
If there is no such documents, then this is unknown issue (bug), which will not be in such a famous compiler.
Here I clarify my question.
I explained the situation.
I want to know if anyone has the same experience.
I want to know if this is a bug or just a spec.
Sincerely,
masa
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
-par-threshold is intended to be used at your own risk. If you got a wrong result when you didn't use par-threshold, or the compiler crashed, that would be a bug. Excessive stack usage isn't necessarily a bug, even though it gives you a failure.
Unfortunately, auto-parallelization still is useful only in limited situations, even though it's mandatory for good spec benchmark results. Most cases where it works well, and many where it doesn't, are easy to program with OpenMP.
Unfortunately, auto-parallelization still is useful only in limited situations, even though it's mandatory for good spec benchmark results. Most cases where it works well, and many where it doesn't, are easy to program with OpenMP.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks tim18,
Yes, I understand it is still ongoing project.
On the other hand, if I explicitly write do-loop code, it works. So still this (-par-threshold*) is very useful option.
Finally, as a result, I leave following remark (memo) for me and other users for the future related problems.
With auto-parallelization (with -par-threshold* and possibly other related options), one will get "segmentation fault" if one uses large array with direct operations such as substitution (Array = 0d0), sum function (a = sum(Array)), etc.
I leave this thread for a little while for additional information (if any), and close as solved later.
Thank you for your help, again.
masa

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