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

Is library libirc.a open source?

spring__z
Beginner
2,290 Views

Hi, guys

    I do a project in linux and my project uses the intel's optimized library.  The function `__intel_avx_rep_memcpy` is impelemented in libirc.a. I dissemble `__intel_avx_rep_memcpy`, there is a jump table to deal with the different memory size to do the fast memory copy.   But I am curious as to why this jump table is not in `.rodata` section but in `.text` section?   I want to get the source code to find the answer, but i cann't find the souce code.

Is library libirc.a not open source? and Why does this jump table locate the `.text` section?

0 Kudos
6 Replies
Viet_H_Intel
Moderator
2,290 Views

 

I don't think libirc is open source.

Thanks,

Viet 

0 Kudos
aazue
New Contributor I
2,290 Views
Hi I don't know if it will help you you have source at this links https://github.com/zadlg/libirc (libirc-master.zip) (std=c++17) in his Makefile CXX is clang++ default (llvm in my hands is too old) but his build result also success with (g++-8.1.0) (libstdc++.so.6.0.25) I think You have also as wrapped in (pidgin-2.13.0) you must add -enable-static, for building lib (.a / .la) by default is only shared (.so) Regards
0 Kudos
spring__z
Beginner
2,290 Views

Thanks.  The libirc you gave is a C++ library for IRC(Internet Relay Chat) clients. The libirc.a provided by intel is most likely to provide better performace, such as memcpy, memset and so on.

I feel that the libirc.a is not open source.  I guess the libirc.a may be compilered by llvm and llvm put the jump table, which should be in .rodata section, to .text section.

bustaf wrote:

Hi
I don't know if it will help you

you have source at this links
https://github.com/zadlg/libirc

(libirc-master.zip) (std=c++17)
in his Makefile CXX is clang++ default
(llvm in my hands is too old)
but his build result also success with (g++-8.1.0) (libstdc++.so.6.0.25)

I think You have also as wrapped in (pidgin-2.13.0)

you must add -enable-static, for building lib (.a / .la) by default is only shared (.so)

Regards

0 Kudos
aazue
New Contributor I
2,290 Views

Hi
I understand  now better your question ..

About I guess the libirc.a may be compilered by llvm and llvm put the jump table, which should be in .rodata section, to .text section.

With using grep you must see in his binary,
The artisan way  is better than nothing.

Sided (memcpy, memset etc ...) with last version gnu compiler compiler
I have result are extremely  performance.. with all type processors
I must mount new motherboard  that hosting  last intel  generation processor before to
make test with last version ICC ,LLVM etc ..
It's not to compare product it's just to see his comportment with the  shared libraries are mounted
differently on the system...
He seems that when (major shared libraries on system) are duplicated on multiple others paths and you link
using redirected  ( -Wl,--rpath=(level tree path libraries)  -Wl,--dynamic-linker= (different path (ld-linux.so.3 ) )
you obtain result largely largely better, not comparable.
In individual program  With object are linked by group using  each one different shared libraries,you obtain
also  result largely better.

Even with low frequency processor you can use threads with large number sub cores without he resulting the bottleneck.
Consumption  of all system largely reduced. also side (several pid fork in same time )
you have hand to  the system largely more large
The problem is you must rebuild all the system ...


I see that now it's llvm-7.0.0  with  ninja used..
Here the challenge is the great  result with low consumption ...
it's same as you must find the dog blue with five legs.

Regards

0 Kudos
aazue
New Contributor I
2,290 Views
Hi I have find an computer that have ICC installed but is too old version also I doubt his processor (IVY) have (AVX 512) I have find new laptop recent with Celeron but the cat of my wife is sleeping above. he is Very nasty If you caressing you count after if you still have all the fingers in your hand, his teeth are more speed than the better processor Even with the glove to take out the hot dishes from the oven it's risky i move him. About your instructions AVX 512 I think With using valgrind simple test you must see if (var) (pre-loaded)(initialised) and determinate how is his default access state (.rodata .text etc ...) Longtime i have not use AVX Next time , i reading the thread complete correctly before answer (I have very wrong level your English language i take the shortcut ) good luck your project Regards
0 Kudos
spring__z
Beginner
2,290 Views

Thank you very much.  Please do not disturb your wife's cat. 

I think putting the jump table to .text section should be to get better performance. 

 

bustaf wrote:

Hi

I have find an computer that have ICC installed but is too old version also
I doubt his processor (IVY) have (AVX 512)
I have find new laptop recent with Celeron but the cat of my wife is sleeping above.
he is Very nasty If you caressing you count after if you still have all the fingers
in your hand, his teeth are more speed than the better processor
Even with the glove to take out the hot dishes from the oven it's risky i move him.

About your instructions AVX 512 I think With using valgrind simple test you must
see if (var) (pre-loaded)(initialised) and determinate how is his default access state (.rodata .text etc ...)
Longtime i have not use AVX

Next time , i reading the thread complete correctly before answer
(I have very wrong level your English language i take the shortcut )

good luck your project
Regards

0 Kudos
Reply