View previous topic :: View next topic |
Author |
Message |
KL
Joined: 16 Nov 2009 Posts: 144
|
Posted: Fri Apr 10, 2015 4:07 pm Post subject: Plato: Problems with linking large projects |
|
|
Dear colleagues,
has anybody experienced problems with linking large project employing Plato? In Plato seven compiler options are available. In always all cases linking is very fast. In a few cases linking is extremely slow and sometimes linking does never finish.
Recently, linking worked for 6 compiler options but failed for the option Release x64 with the error message
ERROR: Unable to create process (#206).
Does anybody have an idea what problems might cause this behaviour? I am working with Windows 8.1 and Plato version 4.64.
Does the new release 7.20 include an improved Plato?
Many thanks in advance for any help.
Klaus |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Fri Apr 10, 2015 5:49 pm Post subject: |
|
|
Try switching off the "dependency checking". You will find the switch in the main Project drop-down menu.
Sometimes, particularly with large projects. the file dependency chain can become recursive and this will cause problems for Plato.
The latest Plato uses the same dependency checking as before.
If this solves the problem, report back and I will describe how to fix the fault in your code. |
|
Back to top |
|
|
JohnCampbell
Joined: 16 Feb 2006 Posts: 2554 Location: Sydney
|
Posted: Sat Apr 11, 2015 1:48 am Post subject: |
|
|
I am definitely not understanding something here !
In Plato 4.64 there is a drop down box in the standard toolbar which lists 7 different compile options, including "Release x64".
It was my understanding that "Release x64" indicates that gFortran is used for Clearwinx64. Am I correct?
If I am correct, when it is taking so long to run, then is gFortran installed and compatible with PLATO's expectations ? If I am on the right track here, the problem sometimes with gFortran can be that it detects it can not overwrite the .exe. I am using 4.9.1 from mingw and equation.com and get unexplained errors at the link stage. I just repeat the build and the problem mysteriously disappears.
If I am wrong, what is the difference between "Release Win32" and "Release x64" ? I am not aware of any different settings for FTN95.
I have not been able to find a definition of these 7 compile options, what they actually select or if they are modifiable. I can go to Tools > Options > Environment - Plug ins and see 2 compiler x 2 modes; each with 3 compiler options listed, but no way to modify these or relate these to the compile drop down box.
John |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Sat Apr 11, 2015 8:13 am Post subject: |
|
|
Yes. Current versions of Plato use "Release x64" to create a release version using 64 bit gFortran. When 64 bit FTN95 is released the default will be to create a release version using 64 bit FTN95 but there will be an option to use gFortran instead.
The other modes "Release Win32" etc. all use FTN95. "Debug" uses /DEBUG. "Checkmate" uses /CHECKMATE. ".NET" uses /CLR much as you would expect.
If in doubt, look at the local file called Buildlog and that will tell you the command(s) that Plato has issued. |
|
Back to top |
|
|
JohnCampbell
Joined: 16 Feb 2006 Posts: 2554 Location: Sydney
|
Posted: Sun Apr 12, 2015 4:49 am Post subject: |
|
|
Paul,
This is very useful to learn. I have just tried "Release x64" and it appears to work very well; the only problem is I have at least 5 versions of gFortran installed and could not identify which one was being used.
If it was possible to modify the compiler settings for these 7 options it could be helpful, but it looks like a very useful capability.
John |
|
Back to top |
|
|
KL
Joined: 16 Nov 2009 Posts: 144
|
Posted: Sun Apr 12, 2015 9:20 am Post subject: |
|
|
Paul,
I have switched off the dependency checking, but the problems remain. Normally I work with little batch files for compiling, linking and execution or with one bach file for all three tasks. I have never ever experienced any problems, especially not with linking.
When I started working with Plato recently, the first thing I noticed was that it took an afternoon (!) to set up a project for about 300 programs. The set up only worked in pieces of -say- 10 to 20 programs. Adding these 10-20 rather small programs took 10-15 minutes on a pretty fast modern PC.
Compiling with Plato never caused problems. I carefully watched what programs I had modified and Plato compiled indeed only these modified programs. It behaves similar as a normal MakeFile. At the end of the compilation process the following message is written:
Compilation completed with no errors.
Linking ....
As mentioned in my first message, sometimes this process is never finished. If I use my little linking bat file, linking the programs which I had just compiled with Plato succeeds in very short time.
I wonder whether the default settings in Plato are optimal for rather large programs. Unfortunately, I cannot fully see all texts since they do not fit into the foreseen space.
So working with Plato seems to be more difficult than expected.
Klaus |
|
Back to top |
|
|
PaulLaidler Site Admin
Joined: 21 Feb 2005 Posts: 7925 Location: Salford, UK
|
Posted: Sun Apr 12, 2015 3:41 pm Post subject: |
|
|
Apart from file dependency check, the only thing that Plato does is to issue commands for you. You can see the commands in a local file called Buildlog. Changing command line options is not going do have a major effect on the elapsed time.
Plato runs the commands on a thread using a temporary "Command Prompt", but again the overhead should be minimal.
If you are able to send me the whole project (including the project file) then I will aim to take a look at it but please make sure that I can build the project without changing the paths etc.. |
|
Back to top |
|
|
JohnCampbell
Joined: 16 Feb 2006 Posts: 2554 Location: Sydney
|
Posted: Mon Apr 13, 2015 12:48 am Post subject: |
|
|
Klaus,
A possible explanation is that if you are mixing FTN95 and gFortran builds, you can have problems with modules, as the .mod files are not compatible. If the date stamp does not show the .mod file needs rebuilding, then you can have an incompatible .mod file conflicting with the compile.
Apart from this, you need to determine why the compile is so slow. It is more likely to be with your compiler path settings than with Plato.
John |
|
Back to top |
|
|
KL
Joined: 16 Nov 2009 Posts: 144
|
Posted: Mon Apr 13, 2015 9:46 am Post subject: |
|
|
John,
similar to Visual Studio the object and exe files are stored in different directories and should be independent from each other.
Klaus
Paul,
I very much appreciate your offer, but I cannot send the project for investigation.
As you recommended, I have checked several BuildLog files as well as the ini and the project file and found that even if in Plato the linking process has not ended, linking is reported correctly in BuildLog.
It seems that Plato does not always report the finish of linking. And indeed, if I simply click in that case on “BUILD”, Plato reports “Target is up to date”. Since due to my Windows fonts settings some of the Plato texts are cut-off, I suspect that the Plato output may also get cut-off. At this moment I just see that “linking completed” is shown only in its upper 20-30% parts! With high probability the problem seems to be that the output space of Plato is organized for a specific Windows font only. This would explain why I get from time to time a completely disrupted, hardly readable Plato output. And it would also explain why –obviously- I am the only one having such difficulties.
As you see in my reply to John, I assume that all seven compiler options produce results which are independent from each other. Nevertheless, occasionally, the target is completely rebuilt even if it is up to date. This may for instance happen if you switch between compiler options. That is also unexpected.
In the meantime I have finished my little Fortran task in “my way” and I will have another look to Plato only in future versions. So this thread can be closed from my side.
Klaus |
|
Back to top |
|
|
|