c++ - 用户定义类型的特征包处理
问题描述
我想使用特征类型进行图像处理。Tensor 模块仍然缺少太多功能(加上它在内部不受支持),所以我想使用Eigen::Array<Eigen::Array<Type, 3, 1>, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
.
Eigen 不使用Eigen::Array<Type, 3, 1>
. 例如,下面代码中的 example2 会产生更高效的组装(但是,从概念上讲,它与 example1 相同)。
我猜有一些 packet_traits 允许 Eigen 对常见算术类型的不同系数进行矢量化。我想知道为 Array 添加数据包特征有多难,我应该怎么做。
void example1(const Eigen::Array<Eigen::Array3i, 4, 1>&u,
Eigen::Array<Eigen::Array3i, 4, 1>&v) {
EIGEN_ASM_COMMENT("example1 start");
v = u + Eigen::Array3i(1, 1, 1);
EIGEN_ASM_COMMENT("example1 end");
// Results in a lot of movl and addl
}
void example2(const Eigen::Array<int, 12, 1>&u,
Eigen::Array<int, 12, 1>&v) {
EIGEN_ASM_COMMENT("example2 start");
v = u + 1;
EIGEN_ASM_COMMENT("example2 end");
// Results in:
// vpbroadcastd LCPI1_0(%rip), %xmm0
// vpaddd (%rdi), %xmm0, %xmm1
// vmovdqa %xmm1, (%rsi)
// vpaddd 16(%rdi), %xmm0, %xmm1
// vmovdqa %xmm1, 16(%rsi)
// vpaddd 32(%rdi), %xmm0, %xmm0
// vmovdqa %xmm0, 32(%rsi)
}
解决方案
推荐阅读
- hadoop - 将大数据扔到垃圾箱时可能出现的问题是什么
- laravel - 使用 laravel 请求类时,在数组错误上调用成员函数失败()
- javascript - Angular DragAndDrop 无法读取 null 的属性“孩子”
- excel - 宏到 Sumif 多列
- visual-studio-code - jupyter notebook 的数据查看器中的显示变量错误
- android - 如何在静态 ip 上启动 ServerSocket?
- odoo - Odoo 8:fields.function() 中的 fnct_inv 问题未触发
- python - 如何从不同的维基百科页面抓取数据?
- c++ - 静态数据成员的问题 - 修复链接错误会导致编译器错误
- jboss - Wildfly:集群上的单例部署| 选择服务器组中的两台服务器