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

error #10295 - could be caused by multiple processes launching ifort?

AShte
Beginner
1,307 Views
Hi I get this error: ifort: error #10295: error generating temporary file name, check disk space and permissions from a shell script which concurrently launches multiple instances of ifort 16.0.0 20150815. It will take some time to debug, but could this be caused by different instances of ifort trying to write to the same file, i.e. use the same temp file? If so, is there a switch to instruct ifort to use different temp files for each invocation? I never see this error in serial execution. Thanks Anton
0 Kudos
8 Replies
AShte
Beginner
1,307 Views
Forgot to add, am I using -save-temps and TMPDIR wrongly? newblue4> cat z.sh #!/bin/sh TMPDIR=/local export TMPDIR ifort -save-temps z.f90 ls -al $TMPDIR/z.o ls -al ./z.o newblue4> ./z.sh ls: cannot access /local/z.o: No such file or directory -rw-r--r-- 1 mexas mech 1840 Jan 11 10:22 ./z.o newblue4> Thanks Anton
0 Kudos
Steven_L_Intel1
Employee
1,307 Views

It's possibly the -save-temps that is the problem. Why have you specified that?  Also, the .o doesn't go into a temporary directory, by default it goes into your current directory unless you have said something else with -o.

If you can capture the output of each of the scripts it might be handy to add -#x to the ifort line - this will show you all of the generated commands and execute them. This will allow you to see what it is using for temp files.

0 Kudos
AShte
Beginner
1,307 Views
Steve, thank you. I added "-save-temps" for debug, it is not in the original code. I'm trying to see where exactly the temp files are created, and the file names. What you wrote raises several more issues. 1. -#x is very useful. I see at the end: rm /local/ifortdummyqrRkvU.c rm /local/ifortdashvz6npA3 rm /local/ifortlibgccd4aVGc rm /local/ifortdummyschVNl.c rm /local/ifortgccdashvqb6VUu rm /local/ifortgnudirs2fBB2D rm /local/ifortgas0ZumiW rm /local/ifortldashv2BrQq5 rm /local/iforttempfileH1spIn rm /local/ifortarg0xgnRw rm /local/ifortgnudirsiw69PR rm /local/ifortgnudirsMXUe40 rm /local/ifortgnudirsZLoGia rm /local/ifortldashv6rMxxj rm /local/ifortgnudirssEAHMs rm /local/ifortgnudirsI1ie2B rm /local/ifortgnudirsSa0aiL which, I presume, are the temporary files being removed, right? And these are now created under /local, because I set TMPDIR=/local. 2. However, since I specified -save-temps, I expected these to be left and not removed. What am I missing? 3. man ifort says: *quote* -save-temps -no-save-temps Tells the compiler to save intermediate files created during compilation. Arguments: None Default: Linux* OS and OS X*: -no-save-temps On Linux and OS X systems, the compiler deletes intermediate files after compilation is completed. Description: This option tells the compiler to save intermediate files created during compilation. The names of the files saved are based on the name of the source file; the files are saved in the current working directory. If option save-temps is specified, the following occurs: The object .o file (Linux OS and OS X) or .obj file (Windows OS) is saved. *end quote* So this led me to belive that the object files are affected by -save-temps. Is that right? 4. Back to the original question - if multiple ifort processes are launched concurrently, is it possible that different ifort processes will use identical temp file names? If so, I guess the only/best way to avoid this is to set unique TMPDIR for each ifort process? Many thanks for your help Anton
0 Kudos
Steven_L_Intel1
Employee
1,307 Views

I am going to ask Lorri to comment on this, as she knows this part better than anyone, but she won't see this until at least Tuesday. I would not expect you to have to establish separate temporary directories for parallel builds.

0 Kudos
Lorri_M_Intel
Employee
1,307 Views

The "driver" is the application that read the command line and invokes the preprocessor, the compiler itself, the assembler, and finally the linker/loader.

 

The -save-temps switch saves intermediate preprocessed files, object files and any intermediate assembly files (if created).  So, in other words, any temporary files created for the user.

Probably not a huge surprise, but the driver creates lots and lots of temporary files for its own use.   And, no.  We don't save those with the -save-temps switch.

    I hope this helps --

                         --Lorri

 

0 Kudos
AShte
Beginner
1,307 Views
Lorri, thank you. Still, I'm not clear, can this create problems with different concurrent ifort processes writing to the same files? e.g.: for src in `ls *f90` do ifort $src & done note "&" at the end. Thanks Anton
0 Kudos
Lorri_M_Intel
Employee
1,307 Views

Well, I looked at where we issue the error you reported.

We use mkstemp to create/open a temporary file, and if that returns an error, we output the error message you saw.

         --Lorri

 

0 Kudos
MHeinze
Beginner
1,227 Views

Hi,

a colleague of me is also getting the same error

"ifort: error #10295: error generating temporary file name, check disk space and permissions"

even when only typing "ifort" oin the command line. All disks have enough free storage available and the problem also occurrs when running "ifort" from the command line as root.

My colleage asked me if i can help, but after checking the diskspace and the persmissions (as root), i have no idea, what causes this error message.

Do you have a solution?

Best Regards and thank you very much,

Markus 

0 Kudos
Reply