- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
First a disclosure: I have zilch for expereince with EM64T.
I am running IVF 9.0 on an IA32 host.
So I fire off the batch file to set up the EM64T environment.
I am playing with a bit of trial code which uses the IFPORT module. The compiler seems happy with other calls into IFPORT, but when I try to call GETFILEINFOQQ, I get this:
Error: There is no matching specific function for this generic function reference. [GETFILEINFOQQ]
That is the only compiler error I get, and it is fatal. No object is generated.
My command line looks like this:
ifort /c trial.f90
I think my source is ok, because it compiles, links and runs with the IA32 compiler. The main program starts off with
use ifport
type( file$info ) :: info
and eventually makes a call:
i = GETFILEINFOQQ( 'trial.txt', info, j )
What am I missing? Does GETFILEINFOQQ not exist for EM64T? Is there something wrong with my invocation of ifort?
Thanks
First a disclosure: I have zilch for expereince with EM64T.
I am running IVF 9.0 on an IA32 host.
So I fire off the batch file to set up the EM64T environment.
I am playing with a bit of trial code which uses the IFPORT module. The compiler seems happy with other calls into IFPORT, but when I try to call GETFILEINFOQQ, I get this:
Error: There is no matching specific function for this generic function reference. [GETFILEINFOQQ]
That is the only compiler error I get, and it is fatal. No object is generated.
My command line looks like this:
ifort /c trial.f90
I think my source is ok, because it compiles, links and runs with the IA32 compiler. The main program starts off with
use ifport
type( file$info ) :: info
and eventually makes a call:
i = GETFILEINFOQQ( 'trial.txt', info, j )
What am I missing? Does GETFILEINFOQQ not exist for EM64T? Is there something wrong with my invocation of ifort?
Thanks
Link Copied
12 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I probably should mention that I installed Build 3790.1830 of the Platform SDK before installing IVF 9.0. That would seem to meet the stated requirement of Build 3790.1289 or later... assuming Microsoft didn't make YAIC (Yet Another Incompatible Change) in the meantime.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't see the problem in my test case. Please submit an example to Premier Support.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
Hi. I thought you were supposed to be on vacation. Although the possibilities for vacation are almost limitless, the concept is generally understood not to include Fortran. :)
Thanks for taking a look at my situation. I will try to reduce this to a clean test case for Premier Support.
Thanks!
Hi. I thought you were supposed to be on vacation. Although the possibilities for vacation are almost limitless, the concept is generally understood not to include Fortran. :)
Thanks for taking a look at my situation. I will try to reduce this to a clean test case for Premier Support.
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
Example generated and submitted to Premier Support.
Thanks.
Example generated and submitted to Premier Support.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I may have been too verbose in my earlier reply, which got purged.
When you install, in the likely case where it doesn't find you SDK automatically, or you have more than one, it should display a pop-up asking you to browse to the head directory of your PSDK installation. That should enable it to set up the ifortvars.bat so that it runs the vcvars.bat in the amd64 section of the SDK successfully, then adds the ifort specific environment variable settings.
If that doesn't happen, you can still edit ifortvars.bat yourself, so that it runs without error. When you open up the ifort command window, among other things, CL should work, and it should be the one in the amd64 folder of the SDK. The include path should contain the folder which has your Fortran USE include files.
If there was a problem setting up ifortvars.bat, there may also be a problem with ifort.cfg. In order to link successfully, there must be an uncommented entry there showing the path to the folder containing the amd64 link.exe.
Your Visual Studio project settings would also need to match.
In your problem report, you should mention exactly where your SDK is installed, and where ifort is installing.
When you install, in the likely case where it doesn't find you SDK automatically, or you have more than one, it should display a pop-up asking you to browse to the head directory of your PSDK installation. That should enable it to set up the ifortvars.bat so that it runs the vcvars.bat in the amd64 section of the SDK successfully, then adds the ifort specific environment variable settings.
If that doesn't happen, you can still edit ifortvars.bat yourself, so that it runs without error. When you open up the ifort command window, among other things, CL should work, and it should be the one in the amd64 folder of the SDK. The include path should contain the folder which has your Fortran USE include files.
If there was a problem setting up ifortvars.bat, there may also be a problem with ifort.cfg. In order to link successfully, there must be an uncommented entry there showing the path to the folder containing the amd64 link.exe.
Your Visual Studio project settings would also need to match.
In your problem report, you should mention exactly where your SDK is installed, and where ifort is installing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
tim18 wrote:
I may have been too verbose in my earlier reply, which got purged.
I guess that's why I didn't see it. :)
I actually fully uninstalled all previously installed SDKs -- at least to the extent possible with 'Add/Remove Software,' which I can't really quantify -- and installed SDK Build 3790.1830, all before installing IVF 9.0
The installation of IVF 9.0 components never prompted me for anything related to the SDK. The experience was quite pleasant, really.
I'm afraid I'm not sufficiently expert in the organization of IVF or of the SDK to adequately appreciate your remarks on ifortvars. I would welcome a prescription for the patch which you describe in general terms.
I don't believe Visual Studio enters into this; I'm invoking the compiler and linker exclusively from the command line in this instance. I have provided crisp example code and verbatim transcripts of the compiler sessions to Premier Support.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You could use the standard Windows search tool to find the ifortvars.bat and ifort.cfg of your 32- and 64-bit installations.
The default installation of the compiler is in the 32-bit Program Files folder, on the same drive as your running Windows installation. I take it you have a 32-bit installation, so there may be only one such. The 64-bit compiler should reside in program filesintelcompilerfortran9.0em64t
These files should be in the in folder there. You would examine them with your favorite text editor, to see if they set up correctly, as well as checking the environment variables in the Fortran command prompt window (e.g. by SET).
You would have files of the same name in your IA32 installation as well, and they should look similar, except for the 64-bit paths referring to the amd64 SDK, and the 32-bit paths to the Visual Studio folders. If the setup is broken, you may have commented items or blank lines in place of required paths.
I suppose it wouldn't hurt to attach the ifortvars.bat and ifort.cfg
to your issue, if the setup fault is there, or you aren't sure of it.
The default installation of the compiler is in the 32-bit Program Files folder, on the same drive as your running Windows installation. I take it you have a 32-bit installation, so there may be only one such. The 64-bit compiler should reside in program filesintelcompilerfortran9.0em64t
These files should be in the in folder there. You would examine them with your favorite text editor, to see if they set up correctly, as well as checking the environment variables in the Fortran command prompt window (e.g. by SET).
You would have files of the same name in your IA32 installation as well, and they should look similar, except for the 64-bit paths referring to the amd64 SDK, and the 32-bit paths to the Visual Studio folders. If the setup is broken, you may have commented items or blank lines in place of required paths.
I suppose it wouldn't hurt to attach the ifortvars.bat and ifort.cfg
to your issue, if the setup fault is there, or you aren't sure of it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Tim.
Your description of what the bat and cfg files should contain is enough for me to conclude that the SDK is not called out in the cfg for EM64T. I will attach copies to my Premier Support request.
Thanks for your advice.
Your description of what the bat and cfg files should contain is enough for me to conclude that the SDK is not called out in the cfg for EM64T. I will attach copies to my Premier Support request.
Thanks for your advice.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I have exact same problem with my porting of a relative large package from 32-bit to 64-bit. And it is the only problem found so far in compiling. All other *qq() function calls to IFPORT are fine.
Please post any conclusion tothe problem or work around found. Thanks.
-xli
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, I see the problem. You need to declare your "handle" argument as:
integer (int_ptr_kind()) :: handle
This will make it INTEGER(8) on EM64T and match the declaration. I note that the manual refers to IA-32 and Itanium but does not mention EM64T - I'll ask that that be fixed.
integer (int_ptr_kind()) :: handle
This will make it INTEGER(8) on EM64T and match the declaration. I note that the manual refers to IA-32 and Itanium but does not mention EM64T - I'll ask that that be fixed.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
sblionel wrote:
Ok, I see the problem. You need to declare your "handle" argument as:
integer (int_ptr_kind()) :: handle
This will make it INTEGER(8) on EM64T and match the declaration. I note that the manual refers to IA-32 and Itanium but does not mention EM64T - I'll ask that that be fixed.
Thanks, Steve. I missed the 'clue' in the docs, perhaps because I mentally filter anything specific to Itanium. (Sorry!) Thanks for your help and for taking a fresh look at the docs.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
sblionel wrote:
I note that the manual refers to IA-32 and Itanium but does not mention EM64T - I'll ask that that be fixed.
Steve,
I took a look at ifport.f90 and immediately felt stupid and deja vu. I forgot later, but I did look at the interface for GETFILEINFOQQ, prompted by the compiler disgnostic. My *real* mistake was assuming that a default integer is 8 bytes on EM64T. Not so, as the IVF manual (and casual use) makes very clear.
My bad entirely. Thanks for your help.

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