C++ 任何YEPP上的分段错误!api调用
老实说,这是我第一次使用像Yeppp这样的图书馆!,我指的是具有动态运行时选择功能的SIMD库,或者不管他们怎么说。最终的结果是,库应该选择最佳的SIMD汇编代码,以便在运行它的平台和硬件上运行 在我的项目中,这似乎是一个很好的工具,然而,正如标题所说,我不能称任何YEPP!在不发生分段错误的情况下运行。我得到的调试信息也没有什么帮助 我的系统配置是:C++ 任何YEPP上的分段错误!api调用,c++,linux,segmentation-fault,simd,yeppp,C++,Linux,Segmentation Fault,Simd,Yeppp,老实说,这是我第一次使用像Yeppp这样的图书馆!,我指的是具有动态运行时选择功能的SIMD库,或者不管他们怎么说。最终的结果是,库应该选择最佳的SIMD汇编代码,以便在运行它的平台和硬件上运行 在我的项目中,这似乎是一个很好的工具,然而,正如标题所说,我不能称任何YEPP!在不发生分段错误的情况下运行。我得到的调试信息也没有什么帮助 我的系统配置是: Xubuntu 13.04 'raring' with Linux 3.8.0-31-generic x86_64 GCC 4.8.1 --w
Xubuntu 13.04 'raring' with Linux 3.8.0-31-generic x86_64
GCC 4.8.1 --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu .... etc, there were many more, but I chose the important ones
Code::Blocks IDE and GDB 7.5.91.20130417-cvs-ubuntu debugger through Code::Blocks
Intel Pentium(R) Dual-Core CPU T4400 @ 2.20GHz with SIMD instruction sets MMX, SSE, SSE2, SSSE3
我列出了CPU等等,因为它可能对你的工作效率很重要!选择正确的运行时,这可能是问题所在
YEP_ALIGN(16) int32_t a[100], b[100], c[100];
//just test values
for( int x = 0; x < 100; x++ ) {
a[x] = x + 1;
b[x] = x - 1;
}
yepCore_Add_V32sV32s_V32s( a, b, c, 100 );
下面是我正在使用的简单测试代码,尽管我尝试了其他方法!函数具有不同的数据类型,这是所有相同的分割错误。我也尝试过各种对齐方式,比如32和64,但我怀疑这是个问题
YEP_ALIGN(16) int32_t a[100], b[100], c[100];
//just test values
for( int x = 0; x < 100; x++ ) {
a[x] = x + 1;
b[x] = x - 1;
}
yepCore_Add_V32sV32s_V32s( a, b, c, 100 );
然后,下一条指令(假设有一条指令并且它不尝试以NULL运行)将导致分段错误。这大概是我所能做到的。经过几次调整后,它尝试打开一个。/sysdeps/x86_64/dl trampoline.S
文件,但找不到该文件
我对它为什么会这样做几乎是一窍不通,除非是的!它本身是有缺陷的。自从YEPP的1.0发布以来!图书馆只有几天的历史,我还没有找到任何有类似问题或任何问题的人
PS:这是很长一段时间以来我第一次公开提出关于编程的问题,所以如果需要任何进一步的信息来帮助解决这个问题,我很乐意提供 您需要在使用库之前调用
yepLibrary\u Init()
(在使用完库之后调用yepLibrary\u Release()
)。此函数用于检测CPU微体系结构和指令集,并初始化内部指针(最初为空-这就是为什么会出现SEGFULT)。真的吗?有那么简单吗?那只是。。。我不知道为什么我没有看到。所有这些调试工作对我来说都是显而易见的。谢谢你。是的,这很有效。我现在要戴着一顶傻瓜帽坐在角落里。特别是考虑到我查看了一些示例以寻找解决方案,但仍然没有注意到。
0x401550 jmp QWORD PTR [rip+0x205b7a] # 0x6070d0 <yepCore_Add_V32sV32s_V32s@got.plt>
0x401556 push 0x17
0x40155b jmp 0x4013d0
0x401550 jmp QWORD PTR [rip+0x205b7a] # 0x6070d0 <yepCore_Add_V32sV32s_V32s@got.plt>
0x401556 push 0x17
0x40155b jmp 0x4013d0
0 No function contains specified address.