Problems with PGI Fortran and CFX: __pgi_abort_init

I am trying to use the (latest) PGI Fortran Compiler with Ansys CFX-10 (computational fluid dynamics software) and I have a problem, after compiling.

I find the error message below, when calling the generated objects (*.so and *.o) at the CFX interface.

| Error opening /export/home/marini/HVAC/linux/libTStat_Control.so:  |
| /export/home/marini/HVAC/linux/libTStat_Control.so: undefined sy-  |
| mbol: __pgi_abort_init

How can I solve this problem?

Thanks in advance,

Fábio Marini.

Hi Fábio,

The symbol “__pgi_abort_init” was added with to the 6.2 PGI release as part of our traceback feature. I believe ANSYS uses PGI 6.1, so my best guess that the PGI runtime that is being used by CFX is from 6.1 which is not forward compatible. Try setting the environment variable “LD_LIBRARY_PATH” to the location of your PGI 7.0 runtime libraries.

  • Mat

Dear Mat,

We already had PGI 6.2, and we decided to update to 7.0.

However we continue with the same problem described before, with the new library.

Dear Mat,

We already setted the environment “LD_LIBRARY_PATH” to the right location, but we still have the same problem.

Best Regards,

Fabio

Hi Fabio,

You’ll need to talk with ANSYS as to which compiler version to use. My guess is that you’ll need to donwgrade to 6.1 until ANSYS updates CFX.

  • Mat

Hi Mat,

Thank you very much for your help. You were right about the problem. Now everything is working :-)

Best Regards,

Fábio

I can run the executable on the machine where this was compiled (using the latest release of the PGI Fortran Workstation compiler), but when I run the executable on another machine I get this error! Any suggestions?

Hi,

Do you have PGI compiler install on the machine you run? You will either need to install or copy libso and set LD_LIBRARY_PATH to where you put libso.

Hongyon

I just explained that it works on the machine where the compiler is installed, but not on another machine! The other machine did have an older version of libpgc.so. When I replaced that with a newer version, I get a different error message: undefined symbol: __pgi_ctrl_init

Hi,

What you need to do is find out which version of compiler do you use to compile and then copy *so libraries of that release to that machine you want to run and set LD_LIBRARY_PATH. If you don’t have *.so, you can download from our website.

Hongyon

When you say “our website”, do you work for Portland Group? Does this mean that this executable is not portable? I need to send this to other people. Each person must download all of the the *.so files?

Hi,

The PGI executable is portable. Since your executable is dynamically linked, you will need to make sure that you have PGI *.so libraries on the machine you run. Mostly, PGI runtimes are backward compatible but not the other way around(sometimes it works but not always). If you compile with newer release, you will need to latest *.so files.

I assume you compile Ansys since you post on this thread. I believe Ansys has a way to package their binary and PGI *.so files to users. You might want to ask them how this can be done.

On a PGI download page, there should be a link to portability package. You can package it with your binary.

Yes, I am part of The Portland Group.

Hongyon

Hi,
I am having similar problem. I installed portability package and when i run ldd all libraries are loaded

[root@mercury exe]# ldd ./copygb.x
        linux-vdso.so.1 =>  (0x00007ffffa5fe000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00000035ba000000)
        librt.so.1 => /lib64/librt.so.1 (0x00000035bb000000)
        libpgf90.so => /opt/pgi/libpgf90.so (0x0000000000aec000)
        libpgf90_rpm1.so => /opt/pgi/libpgf90_rpm1.so (0x000000000011e000)
        libpgf902.so => /opt/pgi/libpgf902.so (0x0000000000220000)
        libpgf90rtl.so => /opt/pgi/libpgf90rtl.so (0x000000000042f000)
        libpgftnrtl.so => /opt/pgi/libpgftnrtl.so (0x0000000003ab6000)
        libpgc.so => /opt/pgi/libpgc.so (0x0000000001088000)
        libm.so.6 => /lib64/libm.so.6 (0x00000035b9c00000)
        libc.so.6 => /lib64/libc.so.6 (0x00000035b9400000)
        /lib64/ld-linux-x86-64.so.2 (0x00000035b9000000)

but when i run the program i get

[root@mercury exe]#  ./copygb.x
./copygb.x: symbol lookup error: ./copygb.x: undefined symbol: __pgi_ctrl_init

I installed latest portability package for x86_64 and the original program was compiled with PGI fortran compiler ver. 7.1.2.
Vladimir

Hi,

We apologize for out of date portability package on our website. That was for 7.0 release. A workaround for now is to copy 7.1-2 libso directories on to the machine you want to run and set LD_LIBRARY_PATH to its location.

If you don’t have it installed, you can either download 7.1-2 and install or e-mail trs@pgroup.com and ask for 7.1 portability package.

Thank you,
Hongyon

Hi,
thank you for a quick reply. I’ve copied the libso directory and it works now.
Best regards
Vladimir