c – SSE类型的容器

c – SSE类型的容器,第1张

概述我试图在SSL容器中存储SSE类型.我试过这个: #include <iostream>#include <vector>int main(){ typedef int v4sf __attribute__ (( vector_size(4*sizeof(float)) )); v4sf a; // compiles std::vector<v4sf> v1; // com 我试图在SSL容器中存储SSE类型.我试过这个:

#include <iostream>#include <vector>int main(){  typedef int v4sf __attribute__ (( vector_size(4*sizeof(float)) ));  v4sf a; // compiles  std::vector<v4sf> v1; // compiles,but nothing is actually allocated//  std::vector<v4sf> v2(10); // compiler error: can’t convert between vector values of different size  std::vector<v4sf> v(10,a); // Compiles,but segfaults  return 0;}

但是如上所述,在不提供复制对象的情况下进行分配会产生编译器错误,而分配提供对象时会编译但会出现段错误.任何人都可以解释为什么我不能将这些SSE对象存储在这样的STL容器中(或者更好,提供正确的方法)?

解决方法 要使其正常工作,您必须实现自定义分配器.要使用它,它是类型旁边的参数:
的std ::矢量< SSEType,CustomAlloc>容器;
CustomAlloc是分配器的位置.
你必须使用alligned_malloc或memalign来获取Allocater内存,但这是在这里取得成功的方法.

这里可以找到这样一个例子(不那么容易实现):
Implementing Allocator example

我已经对SSE做了很多,我观察到,这是使用alligned malloc并将其用于我的计算的最简单方法.

总结

以上是内存溢出为你收集整理的c – SSE类型的容器全部内容,希望文章能够帮你解决c – SSE类型的容器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存