我是Eigen的新手,我试图在一个简单的复制表达式的上下文中理解Packet Access的语义,该复制表达式将一个向量复制到(例如)4列。
目前,Replicate表达式和它的一元评估器都没有启用数据包访问,我试图看到,至少对于简单情况,如果我可以进行一些更改,以便在分配给矩阵时,基础操作可以得到矢量化。
我在CoreEvaluators.h中尝试了一个hack(这绝对是错误的方法):1242我在Replicate的ArgType上传播PacketAccessBit并生成矢量化代码但是我想弄清楚什么是正确的这样做的方法是。
template<typename ArgType, int RowFactor, int ColFactor>
struct unary_evaluator<Replicate<ArgType, RowFactor, ColFactor> >
: evaluator_base<Replicate<ArgType, RowFactor, ColFactor> >
{
[...]
Flags = (evaluator<ArgTypeNestedCleaned>::Flags & (HereditaryBits|LinearAccessMask|PacketAccessBit) & ~RowMajorBit) | (traits<XprType>::Flags & RowMajorBit),
[...]