- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We cannot reproduce the issue on our side.can you give the reproducible test for us?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Seeing fromthe simpletest code, it seems nothing to do with the libiomp5 (openmp library)and ipp libraries. But anyway, could you pleaseshow the gdb resultwhen run the "test-ipp707"?
(in the test code,the"test" is"test-ipp707", right?). and please export theOpenMP version alsoas below.
[U105439illegal]$ export KMP_VERSION=1
[U105439illegal]$ gdb test
Ying
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thansk for the test. i see. I assumed, if without libiomp5 and libippcore, the command: g++ -Wall -g test.cpp -o test should be work fine. sothe codehas nothing to do with libiomp5 and ipp.But the binary did.
Could you pleasetry the command :
1)g++ -Wall -g test.cpp -L
2)g++ -Wall -g test.cpp -L
andseeifthey can run?
We want to make sure if it is libiomp5 issue or ipp issue orthe combination's order?
and pleaseset environment export KMP_VERSION=1 before run them.
Best Regards,
Ying
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
do you use standalone IPP package or Intel Composer 2011? did you update IPP verion only or Intel Composer too?
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
vm-etch-dev32# cat ipp_test.cpp
#include
int main(int argc, char** argv)
{
std::cout << "testing ipp" << std::endl;
return 0;
}
vm-etch-dev32# g++ -Wall -g ipp_test.cpp -L./ -liomp5 -o ipp_test_1
vm-etch-dev32# g++ -Wall -g ipp_test.cpp -L./ -lippcore -liomp5 -o ipp_test_2
vm-etch-dev32# ls
ipp_test ipp_test_1 ipp_test_2 ipp_test.cpp libiomp5.so libippcore.so libippcore.so.7.0 test
== On the Target ==
etch:/tmp/ipp-illegal-instruction-test# ldd ipp_test_1
linux-gate.so.1 => (0xb7f8c000)
libiomp5.so => /tmp/ipp-illegal-instruction-test/libiomp5.so (0xb7ece000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7de5000)
libm.so.6 => /lib/tls/libm.so.6 (0xb7dc0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7db5000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7c83000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7c70000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7c6c000)
/lib/ld-linux.so.2 (0xb7f8d000)
etch:/tmp/ipp-illegal-instruction-test# ldd ipp_test_2
linux-gate.so.1 => (0xb7ef9000)
libippcore.so.7.0 => /tmp/ipp-illegal-instruction-test/libippcore.so.7.0 (0xb7ee0000)
libiomp5.so => /tmp/ipp-illegal-instruction-test/libiomp5.so (0xb7e24000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7d3b000)
libm.so.6 => /lib/tls/libm.so.6 (0xb7d16000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7d0b000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7bd8000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7bd4000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7bc2000)
/lib/ld-linux.so.2 (0xb7efa000)
etch:/tmp/ipp-illegal-instruction-test# ./ipp_test_1
testing ipp
etch:/tmp/ipp-illegal-instruction-test# ./ipp_test_2
Illegal instruction
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
unfortunatelly I don't have appropriate HW to test your case. Could you help me and build 3 variant of application:
1) build your test application and link with libippcore.so only
2) build your test application and link with libiomp5.so only
3) extend your test application to add:
extern int omp_get_num_procs (void);
.....
main()
{
....
int p= omp_get_num_procs();
....
}
and link it with libiomp5.so only
Thanks, Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
#include
extern int omp_get_num_procs (void);
int main(int argc, char** argv)
{
int p = omp_get_num_procs();
std::cout << "testing ipp: no of procs is" << p << std::endl;
return 0;
}
vm-etch-dev32# g++ -Wall -g ipp_test_intel_get_procs.cpp -L./ -liomp5 -o ipp_test_get_procs
/tmp/cckp3bTU.o: In function `main':
/root/sandbox/ipp-illegal-instruction-test/ipp_test_intel_get_procs.cpp:7: undefined reference to `omp_get_num_procs()'
collect2: ld returned 1 exit status
#include
int main(int argc, char** argv)
{
std::cout << "testing ipp" << std::endl;
return 0;
}
vm-etch-dev32# g++ -Wall -g ipp_test.cpp -L./ -liomp5 -o ipp_test_iomp5_only
vm-etch-dev32# g++ -Wall -g ipp_test.cpp -L./ -lippcore -o ipp_test_ippcore_only
vm-etch-dev32# g++ -Wall -g ipp_test.cpp -L./ -lippcore -liomp5 -o ipp_test_ippcore_and_iomp5
etch:/tmp/ipp-illegal-instruction-test# ./ipp_test_iomp5_only
testing ipp
etch:/tmp/ipp-illegal-instruction-test# ./ipp_test_ippcore_only
Illegal instruction
etch:/tmp/ipp-illegal-instruction-test# ./ipp_test_ippcore_and_iomp5
Illegal instruction
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
sorry to disturb you the right source is:
#include
extern "C" {
extern int omp_get_num_procs (void);
}
int main(int argc, char** argv)
{
int p = omp_get_num_procs();
std::cout << "testing ipp: no of procs is" << p << std::endl;
return 0;
}
g++ test.cpp -o test -L /nfs/site/proj/ipp/build/ipp/ipp70gold-20120406-7-0-0205-105/comp_lib/linux32 -liomp5 -lpthread
one more question: why you don't link pthread library in your tests? libiomp5.so required pthread library:
g++ test.cpp -o test -L /nfs/site/proj/ipp/build/ipp/ipp70gold-20120406-7-0-0205-105/comp_lib/linux32 -liomp5
/nfs/site/proj/ipp/build/ipp/ipp70gold-20120406-7-0-0205-105/comp_lib/linux32/libiomp5.so: undefined reference to `pthread_atfork'
collect2: ld returned 1 exit status
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
vm-etch-dev32# cat ipp_test_intel_get_procs.cpp#includeextern "C" {extern int omp_get_num_procs (void);}int main(int argc, char** argv){int p = omp_get_num_procs();std::cout << "testing ipp: no of procs is" << p << std::endl;return 0;}vm-etch-dev32# g++ -Wall -g ipp_test_intel_get_procs.cpp -L./ -liomp5 -o ipp_test_get_procsetch:/tmp/ipp-illegal-instruction-test# ./ipp_test_get_procsIllegal instruction
linux-gate.so.1 => (0xb7fe8000)etch:/tmp/ipp-illegal-instruction-test# ldd ./ipp_test_get_procs
libiomp5.so => /tmp/ipp-illegal-instruction-test/libiomp5.so (0xb7f2a000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e41000)
libm.so.6 => /lib/tls/libm.so.6 (0xb7e1c000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e11000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7cdf000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7ccc000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7cc8000)
/lib/ld-linux.so.2 (0xb7fe9000)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
so the problem is in libiomp5 library - it is Intel compiler OpenMP library and we will address the problem to the compiler. Thank you very much for your help!!!
To avoid the problem right now I recommend you to use not threaded variant of IPP libraries: link your application with libipp{domain}_l.a libraries - they don't depend on libiomp5 library, I hope it will be ok for you.
Pavel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's not clear to me if your Geode processor supports SSE and/or MMX instructions. If it does not, you might try telling the linker(via gcc) that you're compiling for only a Pentium classtarget, by using
-march=pentium.
Do you still see the error if you add '-m32 -march=pentium' to your compilation command?
I don't have a Geode processor system, but on a Pentiumsystem using g++ 4.1, the program runs normally. I also added '-m32' to generate 32-bit code, as the default on my system is to generate 64-bit code. You shouldn't need that on your 32-bit system (but it can't hurt).
> g++ --version g++ (GCC) 4.1.0 (SUSE Linux)
> g++ U105439.cpp -liomp5 -m32 -march=pentium && ./a.out
testing ipp: no of procs is 2
>
Thanks,
Patrick Kennedy
Intel Developer Support
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page