Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 任何YEPP上的分段错误!api调用_C++_Linux_Segmentation Fault_Simd_Yeppp - Fatal编程技术网

C++ 任何YEPP上的分段错误!api调用

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

老实说,这是我第一次使用像Yeppp这样的图书馆!,我指的是具有动态运行时选择功能的SIMD库,或者不管他们怎么说。最终的结果是,库应该选择最佳的SIMD汇编代码,以便在运行它的平台和硬件上运行

在我的项目中,这似乎是一个很好的工具,然而,正如标题所说,我不能称任何YEPP!在不发生分段错误的情况下运行。我得到的调试信息也没有什么帮助

我的系统配置是:

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.