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

debugging output generated by ifx

lrego-developer
New Contributor I
1,569 Views

Having worked with ifort based oneAPI for several years, for debugging the code I have used the flags

safe: FC_ALL += -check all -traceback -fstack-protector -assume protect_parens -implicitnone -warn all,noexternal -fpe-all=0
safe: CC_ALL += -traceback -fstack-protector

which gave a clear traceback of the error module-by-module, up to the line where the fault occurred. 

However, with the new ifx-based oneAPI, the same compilation flags produce an incomprehensible output.

How can I recover the simpler and clearer debugging output I use to get from ifort?

Thanks.

0 Kudos
5 Replies
Barbara_P_Intel
Employee
1,424 Views

ifx uses LLVM memory sanitizer features to check for uninitialized variables. That output can be confusing. Ron posted this message about it.

ifx 2024.1.0 will be available in the next week or so.

Also, with ifx -check uninit examines scalars, arrays, array slices, array elements, allocatable, automatics, and derived types. By contrast, ifort could only catch local scalar variables of intrinsic type INTEGER, REAL, COMPLEX, and LOGICAL without the SAVE attribute.

One other point... this feature is only enabled on Linux.

 

0 Kudos
lrego-developer
New Contributor I
1,345 Views

Hello there,

I have the following problem whenever I try to use ifx-based oneAPI toolkit to debug my code with the safe flags below

-g -check all,nouninit -traceback -fstack-protector -assume protect_parens -implicitnone -warn all,noexternal -fpe-all=0

 

The output produced by some fatal error (also featured in the attached image) is incomprehensible to me; it looks like

ifx: warning #10182: disabling optimization; runtime debug checks enabled
ld: EnvField.o: in function `PC_implicit_mapper':
ifxKE5Z2y.i:(.text+0x184f7): undefined reference to `__tgt_mapper_num_components'
ld: ifxKE5Z2y.i:(.text+0x1852f): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x18565): undefined reference to `__tgt_mapper_num_components'
ld: ifxKE5Z2y.i:(.text+0x1859a): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x186e3): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1874f): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x188b1): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1891d): undefined reference to `__tgt_push_mapper_component'
ld: EnvField.o:ifxKE5Z2y.i:(.text+0x18a95): more undefined references to `__tgt_push_mapper_component' follow
ld: EnvField.o: in function `ATOM_implicit_mapper':
ifxKE5Z2y.i:(.text+0x18c5c): undefined reference to `__tgt_mapper_num_components'
ld: ifxKE5Z2y.i:(.text+0x18ca0): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x18cd6): undefined reference to `__tgt_mapper_num_components'
ld: ifxKE5Z2y.i:(.text+0x18d0e): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x18e1b): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x18f2c): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1903d): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1914e): undefined reference to `__tgt_push_mapper_component'
ld: EnvField.o:ifxKE5Z2y.i:(.text+0x1925f): more undefined references to `__tgt_push_mapper_component' follow
ld: EnvField.o: in function `QNCA_a0$TYPE_M$.btMOLECULAR*$rank1$_implicit_mapper':
ifxKE5Z2y.i:(.text+0x1a854): undefined reference to `__tgt_mapper_num_components'
ld: ifxKE5Z2y.i:(.text+0x1a88c): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1aaed): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1ab5b): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1acc6): undefined reference to `__tgt_push_mapper_component'
ld: ifxKE5Z2y.i:(.text+0x1adda): undefined reference to `__tgt_push_mapper_component'
ld: EnvField.o:ifxKE5Z2y.i:(.text+0x1aeee): more undefined references to `__tgt_push_mapper_component' follow
make: *** [makefile:222: dynemol] Error 1

(Virus scan in progress ...)
0 Kudos
Barbara_P_Intel
Employee
1,336 Views

Can you please provide a small reproducer?

 

0 Kudos
TilPiffl
Beginner
443 Views

I get a similar output when I try linking code that was compiled in debug mode with code that was compiled with some optimisations. This works fine with ifort, but not with ifx.

Unfortunately, this only happens on our rather larger code base, but not for the minimal examples I tried.

Compiling and running the code base completely either in debug or optimized mode works fine.

0 Kudos
Devorah_H_Intel
Moderator
419 Views

We have some issues with Od that will be fixed in the next release. This means similar reports are already in the system and have been fixed. Hopefully, this will also cover your use case. 

Reply