- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello all.
I am having a strange issue compiling a FORTRAN progrom on a 64-bit intel machine (Dell). I can compile the code perfectly if I use the 32-bit ifort. Everything works great.
However, if I try to compile the same code using the 64-bit ifort, it compiles the individual files but fails to link everything at the end.
For example, after it has compiled all the individual files, I get several errors of the variety:
/home/modquad/src/obj/flow.o(.text+0xd8): In function `flow_':
: relocation truncated to fit: R_X86_64_PC32 ichcom_
followed at the end by:
: additional relocation overflows omitted from the output
make: *** [../mycode.exe] Error 1
When I compile using the 64-bit compiler, there are several instances where the compiler says "LOOP WAS VECTORIZED". This message does not appear when compiled using the 32-bit compiler.
Is it possible that the vectorization is preventing the executable from being built? Are there other possibilities to explain the difference?
I have changed the stacksize limit to unlimited. I have also tried compiler options:
-O3 -i-dynamic -mcmodel=large
Any other ideas, options, or suggestions would be greatly appreciated.
Many thanks,
C
I am having a strange issue compiling a FORTRAN progrom on a 64-bit intel machine (Dell). I can compile the code perfectly if I use the 32-bit ifort. Everything works great.
However, if I try to compile the same code using the 64-bit ifort, it compiles the individual files but fails to link everything at the end.
For example, after it has compiled all the individual files, I get several errors of the variety:
/home/modquad/src/obj/flow.o(.text+0xd8): In function `flow_':
: relocation truncated to fit: R_X86_64_PC32 ichcom_
followed at the end by:
: additional relocation overflows omitted from the output
make: *** [../mycode.exe] Error 1
When I compile using the 64-bit compiler, there are several instances where the compiler says "LOOP WAS VECTORIZED". This message does not appear when compiled using the 32-bit compiler.
Is it possible that the vectorization is preventing the executable from being built? Are there other possibilities to explain the difference?
I have changed the stacksize limit to unlimited. I have also tried compiler options:
-O3 -i-dynamic -mcmodel=large
Any other ideas, options, or suggestions would be greatly appreciated.
Many thanks,
C
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You get the vectorization messages because the compiler knows that all of the 64-bit systems supported have SSE2 instructions at least, so it adds an implicit -xW. This is new in 10.0. I doubt this has any connecion to the linking problems.
Are you sure that your library path is for the 64-bit libraries?
Are you sure that your library path is for the 64-bit libraries?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Steve,
Thanks for the reply.
I have the 32-bit and 64-bit directories in /opt/intel. The 32-bit are 'fc' and 'idb', and the 64-bit are in 'fce' and 'idbe'.
Right now in my .bashrc I have the following:
. /opt/intel/fce/10.0.023/bin/ifortvars.sh
. /opt/intel/idbe/10.0.023/bin/idbvars.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fce/10.0.023/lib:/opt/intel/idbe/10.0.023/lib
so when I want to switch to the 32-bit version, I drop the 'e' in 'fce' and 'idbe', and re-source the .bashrc file.
Right now I am using the 64-bit compiler. When I type 'which ifort', it gives me /opt/intel/fce/10.0.023/bin/ifort, so that seems to be correct. Is there some other library path for the 64-bit libraries, other than what is contained in the /opt/intel/fce/ and /opt/intel/idbe/ directories?
Many thanks,
C
Thanks for the reply.
I have the 32-bit and 64-bit directories in /opt/intel. The 32-bit are 'fc' and 'idb', and the 64-bit are in 'fce' and 'idbe'.
Right now in my .bashrc I have the following:
. /opt/intel/fce/10.0.023/bin/ifortvars.sh
. /opt/intel/idbe/10.0.023/bin/idbvars.sh
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/fce/10.0.023/lib:/opt/intel/idbe/10.0.023/lib
so when I want to switch to the 32-bit version, I drop the 'e' in 'fce' and 'idbe', and re-source the .bashrc file.
Right now I am using the 64-bit compiler. When I type 'which ifort', it gives me /opt/intel/fce/10.0.023/bin/ifort, so that seems to be correct. Is there some other library path for the 64-bit libraries, other than what is contained in the /opt/intel/fce/ and /opt/intel/idbe/ directories?
Many thanks,
C
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Oops, seems that my export might have been hacked off. It reads:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/opt/intel/fce/10.0.023/lib:
/opt/intel/idbe/10.0.023/lib
except that it is all one line in the .bashrc.
Thanks,C
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/opt/intel/fce/10.0.023/lib:
/opt/intel/idbe/10.0.023/lib
except that it is all one line in the .bashrc.
Thanks,C

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