- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am using an IMSL function(LCONF) and I want to parallelize it with OpenMP.
As I am using Microsoft Visual Studio 2005, I have changed in the Project Properties>
I am using an IMSL function(LCONF) and I want to parallelize it with OpenMP.
As I am using Microsoft Visual Studio 2005, I have changed in the Project Properties>
Fortran>Language>Process OpenMP Directives>Generate Parallel Code
Fortran>Properties>Preprocessor>OpenMP Conditional Compilation>Yes
I do not know if I have to change something else. It works If I run it in my computer, but if I took the .exe and run it in a different computer it crash saying
"TERMINAL ERROR 2 . Error condition in E1POP
Here is a traceback of subprogram calls in reverse order"
And shows some internal calls of LCONF and L2ONF
I have run a lot of programs on that computer before(without OpenMP) and I did not have any problems.
Any thoughts?
Thanks in advance
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
There is not enough information here to help you. We would probably need an example program that demonstrates the problem.
Which version of Intel Fortran and of IMSL are you using? Which set of the IMSL libraries did you specify (name of the link_fnl_xxx.h file you included, or set of IMSL libraries you linked to)
Which version of Intel Fortran and of IMSL are you using? Which set of the IMSL libraries did you specify (name of the link_fnl_xxx.h file you included, or set of IMSL libraries you linked to)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
First of all, I do not know if I am doing the parallelization properly cause when it does not crash it spents more time that the-not-parallelized-one. I have read that IMSL functions are ready for OpenMP but, it is just like that? Should I call it like that?:
!$omp parallel private (--)
CALL IMSL function
!$omp end parallel
I do not know if I am just doing the same work but multiplied by the number of threads.
The IMSL function that I am using is like that
!$omp parallel private ( id )
CALL LCONF(FCN, NEQ, AA, BB, XLB, XUB, SOL, XGUESS=XGUESS,MAXFCN=MAXFCN, ACC=ACC, OBJ=OBJ)
!$omp end parallel
In FCN I have to specify the function that I want to minimize. AA and BB are the equalities and inequalities constraints.
version:
IMSL--> 5.0
Fortran-->Intel Fortran 9.1
Without parallel it works properly in my computer and in a remote computer. When I am using OpenMP, I have realized that, it crashes sometimes when I am running it on my computer, and it crashes always when I am running it on a remote computer.
Any thoughts?
!$omp parallel private (--)
CALL IMSL function
!$omp end parallel
I do not know if I am just doing the same work but multiplied by the number of threads.
The IMSL function that I am using is like that
!$omp parallel private ( id )
CALL LCONF(FCN, NEQ, AA, BB, XLB, XUB, SOL, XGUESS=XGUESS,MAXFCN=MAXFCN, ACC=ACC, OBJ=OBJ)
!$omp end parallel
In FCN I have to specify the function that I want to minimize. AA and BB are the equalities and inequalities constraints.
version:
IMSL--> 5.0
Fortran-->Intel Fortran 9.1
Without parallel it works properly in my computer and in a remote computer. When I am using OpenMP, I have realized that, it crashes sometimes when I am running it on my computer, and it crashes always when I am running it on a remote computer.
Any thoughts?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Normally, you would give each copy of the subroutine call an independent input and output data set. Besides avoiding pointless repetition, that would avoid having each copy over-write the other's data (not always successfully). It would still use more space on stack.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ah, I may have an answer for you. I don't think that version of IMSL is really thread-safe, and even in newer versions, IMSL routines that use callback functions, such as LCONF, must not be called from more than one thread at a time, as they are NOT thread-safe.
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