Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7942 Discussions

multiple xiar processes stomp on each others intermediate files

prohaskatokutek_com
441 Views
Hello,
We are having trouble running 2 xiar processes in the same directory simultaneously with overlapping files. Please see the following example.
$ rm *.a
$ make CC=icc xbuild -j1
xiar cr locktree_linear.a idlth.o lth.o rth.o locktree.o
xiar: executing 'ar'
xiar cr locktree_tlog.a idlth.o lth.o rth.o locktree_nooverlap.o
xiar: executing 'ar'
cp locktree_tlog.a locktree.a
$ rm *.a
$ make CC=icc xbuild -j2
xiar cr locktree_linear.a idlth.o lth.o rth.o locktree.o
xiar cr locktree_tlog.a idlth.o lth.o rth.o locktree_nooverlap.o
xiar: executing 'ar'
xiar: executing 'ar'
ar: idlth.ilo: No such file or directory
make: *** [locktree_tlog.a] Error 1
0 Kudos
5 Replies
Brandon_H_Intel
Employee
441 Views
Hi Prohaska,
I was able to create test case that reproduces this, and I've submitted a problem report to the driver development team here. I don't have any good workarounds at this point other than doing the archiving in a separate step that you do with -j1.
I'm going to move this thread (maintaining a pointer here) to the Intel C++ Compiler forum since this is really a compiler issue and not a Cilk Plus issue.
0 Kudos
aazue
New Contributor I
441 Views
Hi
create simple Makefile where could be used
make --jobs=(2 or more)
i think not judicious to use two sides shared simultaneous build
ipo side have use already is internal simultaneous process.
Large program give catastrophic consumption with this way. result is
only the time build could be increased.
Sometime swap disk full run infinite in round.
but maybe, you have probably an reason that justify it required.
Regards

0 Kudos
BradleyKuszmaul
Beginner
441 Views
I haven't seen much to support bustaf's ideas that icc uses multiple processes.
Since I have a big machine (more than 10 cores), I'd like to see speedup while running a big parallel make.
0 Kudos
Dale_S_Intel
Employee
441 Views
If I understand correctly, Bustaf was referring to the parallel facilitiy in Gnu Make, which is independent of the compiler you're using. In other words, it's not icc that's using multiple processes but make, though each of those processes may be running icc. I've used make -j N for values of N from 2 to 16 with success. If you're using Make for your build and you have 10 cores available, you could try adding -j 10 (or maybe even 15 or 20), but as Bustaf points out it may take a lot of memory. If your project is big or some individual files are big, then the available memory may be your limiting factor.
Dale
0 Kudos
Brandon_H_Intel
Employee
441 Views
This issue with xiar is resolved in the 12.1 compiler that's available with C++ Composer XE 2011 update 8. Let me know if you have any problems or questions.
0 Kudos
Reply