Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29376 Discussions

Problem running in a different computer (Fortran + OpenMP +IMSL)

echeveste
Beginner
812 Views
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>

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

0 Kudos
4 Replies
Steven_L_Intel1
Employee
812 Views
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)
0 Kudos
echeveste
Beginner
812 Views
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?
0 Kudos
TimP
Honored Contributor III
812 Views
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.
0 Kudos
Steven_L_Intel1
Employee
812 Views
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.
0 Kudos
Reply