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?
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Parallel Computing
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.
I don't know if it will help you
you have source at this links
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)
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.
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.
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