Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

Using thread_local on C++ throws error

Rihab_A_
Beginner
2,596 Views

I have been trying to convert a C++ MPI code into OpenMP. There are large number of static member variables (mostly dynamic lists of class objects), and i am trying to use 'thread_local' to make sure there are no conflicts. But the file does not compile and threw error: "error: expected a ";"". I was using ICC 14. 

When i tried to use ICC 15 beta version, the particular file where i used thread_local compiled, but the compilation of the whole application failed at some other point: "undefined reference to '__cxa_thread_atexit'".

Would greatly appreciate help in solving this issue.

 

0 Kudos
5 Replies
Vladimir_P_1234567890
2,596 Views

have you added -std=c++0x option?

and what is gcc version?

--Vladimir

0 Kudos
Rihab_A_
Beginner
2,596 Views

Yes, i was using -std=c++0x, also tried -std=c++11.

gcc version is 4.4.7

Thanks.

0 Kudos
Vladimir_P_1234567890
2,596 Views

and you have added -lstdc++ option to the linker, right?

0 Kudos
Rihab_A_
Beginner
2,596 Views

i hadn't put the -lstdc++ option. Its compiling now with it.

Thanks a lot.

0 Kudos
Rihab_A_
Beginner
2,595 Views

Unfortunately, the thread_local issue is not yet resolved. I was able to get it compiled once, but when i did a clean build of the whole application, the problem 'undefined reference to __cxa_thread_atexit' is still there. 

 Using the latest gcc (4.9.0) removes the above error but throws another error: 'error: identifier "__builtin_ia32_vfmaddss" is undefined'. (I used -cxxlib flag in icpc for providing the latest gcc path).

0 Kudos
Reply