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

internal error: backend signals

JenniferJ
Moderator
512 Views

Moved this new post to a new thread instead attaching to an old thread with the same error msg.

0 Kudos
7 Replies
jlafleur
Beginner
512 Views

I am having a similar problem with version 11.1 in Mac OS X:

[bash]mac:~/programming/cpp/icc_test$ icpc --version
icpc (ICC) 11.1 20100203
Copyright (C) 1985-2010 Intel Corporation. All rights reserved.

mac:~/programming/cpp/icc_test$ cat Makefile
Sources=main.cpp
Target=icc_test

CXX=icpc
CPPFLAGS=-g -Wall -Wno-multichar
CC=icc
CCFLAGS=-g -Wall -Wno-multichar

all: proj

proj: $(Sources:.cpp=.o)
$(CXX) $(CPPFLAGS) -framework Intel_IPP -framework Intel_MKL $(Sources:.cpp=.o) -o $(Target)

clean:
rm -f $(Sources:.cpp=.o) $(Target)
mac:~/programming/cpp/icc_test$ make clean && make
rm -f main.o icc_test
icpc -g -Wall -Wno-multichar -c -o main.o main.cpp
icpc -g -Wall -Wno-multichar -framework Intel_IPP -framework Intel_MKL main.o -o icc_test
ipo: warning #11015: Warning unknown option -no_compact_unwind
ipo: warning #11009: file format not recognized for /Library/Frameworks/Intel_IPP.framework/Intel_IPP
(0): internal error: backend signals

icpc: error #10014: problem during multi-file optimization compilation (code 4)
make: *** [proj] Error 4[/bash]

However, the same code/Makefile works well with GCC/G++:

[bash]mac:~/programming/cpp/icc_test$ make clean && make CXX=g++ CC=gcc
rm -f main.o icc_test
g++ -g -Wall -Wno-multichar -c -o main.o main.cpp
g++ -g -Wall -Wno-multichar -framework Intel_IPP -framework Intel_MKL main.o -o icc_test
ld: warning: in /Library/Frameworks//Intel_IPP.framework/Intel_IPP, file was built for unsupported file format which is not the architecture being linked (x86_64)[/bash]

It also works well if I don't use intermediate files:

[bash]mac:~/programming/cpp/icc_test$ make clean && icpc -g -Wall -Wno-multichar -framework Intel_IPP -framework Intel_MKL main.cpp -o icc_test
rm -f main.o icc_test
ld: warning: in /Library/Frameworks//Intel_IPP.framework/Intel_IPP, file was built for unsupported file format which is not the architecture being linked (x86_64)
mac:~/programming/cpp/icc_test$ file icc_test
icc_test: Mach-O 64-bit executable[/bash]

(Note: I have already posted in the IPP forum about the warning I get and got no answer yet, but that's an other issue)

Thanks for any help with this problem!

0 Kudos
Quoc-An_L_Intel
Moderator
512 Views

If you can provide a sample main.cpp that goes with the makefile, I'll take a look.

BTW, where is the IPP link?

0 Kudos
jlafleur
Beginner
512 Views

Here is the code, nothing big, just trying out ICC and making sure the IPP headers are found...

[cpp]#include 
#include
#include

int main(int argc, char *argv[])
{
printf("test\n");
return 0;
}
[/cpp]

Also, the IPP link is here:

http://software.intel.com/en-us/forums/showthread.php?t=72375

0 Kudos
Quoc-An_L_Intel
Moderator
512 Views

Using your make file in the original thread, the problem is your make file is linking in -framework Intel_MKL, but it does not exist.


u72383 ale$ make
icpc -g -Wall -Wno-multichar -c -o main.o main.cpp
icpc -g -Wall -Wno-multichar -framework Intel_IPP -framework Intel_MKL main.o -o icc_test
ipo: warning #11015: Warning unknown option -no_compact_unwind
icpc: error #10014: problem during multi-file optimization compilation (code 1)
make: *** [proj] Error 1
u72383 ale$
u72383 ale$ icpc -g -Wall -Wno-multichar -framework Intel_IPP -framework Intel_MKL main.o -o icc_test
ipo: warning #11015: Warning unknown option -no_compact_unwind
icpc: error #10014: problem during multi-file optimization compilation (code 1)
u72383 ale$
u72383 ale$
u72383 ale$ icpc -g -Wall -Wno-multichar -framework Intel_IPP main.o -o icc_test
ipo: warning #11015: Warning unknown option -no_compact_unwind
u72383 ale$
u72383 ale$



I have modify the source and Makefile to link in both MKL and IPP.


u72383 ale$ cat main.cpp
#include &ltstdio.h>
#include&ltIntel_IPP/ipp.h>
#include &ltIntel_IPP/ipps.h>
#include &ltmkl/include/mkl.h>

int main(int argc, char *argv[])
{
MKLVersion Version;
mkl_get_version(&Version);
printf("test\\n");
return 0;
}
u72383 ale$
u72383 ale$
u72383 ale$ make
icpc -g -Wall -Wno-multichar -c -o main.o main.cpp
icpc -g -Wall -Wno-multichar -wd11015 -framework Intel_IPP -L/opt/intel/Compiler/11.1/084/Frameworks/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core main.o -o icc_test
u72383 ale$
u72383 ale$


I added -wd11015 to the link like to disable the linker warning.

u72383 ale$ cat Makefile
Sources=main.cpp
Target=icc_test

CXX=icpc
CPPFLAGS=-g -Wall -Wno-multichar
CC=icc
CCFLAGS=-g -Wall -Wno-multichar

all: proj

proj: $(Sources:.cpp=.o)
$(CXX) $(CPPFLAGS) -wd11015 -framework Intel_IPP -L/opt/intel/Compiler/11.1/084/Frameworks/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core $(Sources:.cpp=.o) -o $(Target)

clean:
rm -f $(Sources:.cpp=.o) $(Target)
u72383 ale$

0 Kudos
jlafleur
Beginner
512 Views

This is weird, because I definitely have an Intel_MKL.framework directory in /Library/Frameworks as well...

I was able (thanks to your example) to link against both IPP and MKL:

[cpp]#include 
#include 
#include 

int main(int argc, char *argv[])
{
    MKLVersion version;
    MKLGetVersion(&version);
    const IppLibraryVersion *pIpp = ippsGetLibVersion();

    printf("IPP: %s version %s\n", pIpp->Name, pIpp->Version);
    printf("MKL: %s for %s\n", version.Build, version.Platform);
    return 0;
}
[/cpp]

Which gives:

[plain]mac:~/programming/cpp/icc_test$ ./icc_test 
IPP: libippsu8-6.1.dylib version 6.1 build 137.53
MKL: 20100121 for Intel 64 architecture[/plain]
With the Makefile:

[plain]Sources=main.cpp
Target=icc_test

Frameworks=/opt/intel/Compiler/11.1/084/Frameworks

CXX=icpc
CPPFLAGS=-O3 -g -Wall -Wno-multichar -wd11015 -I$(Frameworks)/ipp/include -I$(Frameworks)/mkl/include
CC=icc
CCFLAGS=-O3 -g -Wall -Wno-multichar -wd11015 -I$(Frameworks)/ipp/include -I$(Frameworks)/mkl/include

all: proj

proj: $(Sources:.cpp=.o)
	$(CXX) $(CPPFLAGS) -L$(Frameworks)/ipp/bin -lipps -L$(Frameworks)/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core $(Sources:.cpp=.o) -o $(Target)

clean:
	rm -f $(Sources:.cpp=.o) $(Target)
[/plain]

And requiring the DYLD_LIBRARY_PATH to be set:

[plain]mac:~/programming/cpp/icc_test$ export DYLD_LIBRARY_PATH="/opt/intel/Compiler/11.1/084/lib:/opt/intel/Compiler/11.1/084/Frameworks/ipp/bin/:/opt/intel/Compiler/11.1/084/Frameworks/mkl/lib/em64t"
[/plain]

However, I still don't understand why the two Frameworks got installed if I didn't/shouldn't use them? I am currently completely bypassing them, and using the libraries installed in the ICC directories instead... Shoud I just use those and delete the Frameworks in /Library/Frameworks to get some more free disk space?

Thanks a lot for your help!

0 Kudos
Quoc-An_L_Intel
Moderator
512 Views

First of all, tell me how you put in the angle bracket so that this forum does not omit the brackets and the content in between. I have to do it the hard way by entering escape characters grrrhh:

#include ampersandltstdio.hampersandgt

#include &ltstdio.h&gt.

Now back to your questions:

>And requiring the DYLD_LIBRARY_PATH to be set:

You can set this by sourcing compiler script to setup the environment: /opt/intel/Compiler/11.1/084/bin/iccvars.sh

> However, I still don't understand why the two Frameworks got installed if I didn't/shouldn't use them? I am currently completely bypassing them, and using the libraries installed in the ICC directories instead... Shoud I just use those and delete the Frameworks in /Library/Frameworks to get some more free disk space?

I would recommend that youjust use the ones in ICC directories and not use Frameworks with the performance libraries (IPP,MKL,TBB). Only IPP function correctly as frameworks, but icc will not implement Framework version of the performance libraries after 11.1.

The only reason it's install under /Library/Frameworks is because gcc looks there for frameworks by default. As you can see below, gcc also can't use Intel_MKL framework.

u72383 ale$ make
g++ -g -Wall -Wno-multichar -wd11015 -framework Intel_IPP -framework Intel_MKL main.o -o icc_test
ld: framework not found Intel_MKL
collect2: ld returned 1 exit status
make: *** [proj] Error 1
intels-mac-pro:u72383 ale$

0 Kudos
jlafleur
Beginner
512 Views

For the brackets, I unfortunately have to do it the hard way too, with < and >... And I have to set them back each time I edit my post.

Thanks for the iccvars.sh script, I forgot about that! I think I'll just source it right in .bash_profile :)

I'll get rid of the frameworks in /Library/Frameworks/ then, and use the versions shipped with ICC, so I can get my disk space back, and make sure I don't have version mismatches.

Once again, thanks a lot for your help!

0 Kudos
Reply