Fix mv row mode bug.
This commit is contained in:
@@ -450,28 +450,31 @@ void unarySubmv(float *aMatrixIn1, float *aVectorIn2, float *aMatrixOut,
|
|||||||
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<float> outIter(aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const float& x, const float& y){
|
auto lambda = [=] __device__(const float& x, const float& y){
|
||||||
return direction==0?x-y:y-x;
|
return direction==0?x-y:y-x;
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
else if (aValType1 == Aurora::Complex){
|
else if (aValType1 == Aurora::Complex){
|
||||||
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<complexf> outIter((complexf*)aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const complexf& x, const float& y){
|
auto lambda = [=] __device__(const complexf& x, const float& y){
|
||||||
return direction==0?complexf(x.real()-y,x.imag()):complexf(y-x.real(),-x.imag());
|
return direction==0?complexf(x.real()-y,x.imag()):complexf(y-x.real(),-x.imag());
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,(complexf*)aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<complexf> outIter((complexf*)aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const float& x, const complexf& y){
|
auto lambda = [=] __device__(const float& x, const complexf& y){
|
||||||
return direction==0?complexf(x-y.real(),-y.imag()):complexf(y.real()-x,y.imag());
|
return direction==0?complexf(x-y.real(),-y.imag()):complexf(y.real()-x,y.imag());
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,(complexf*)aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -587,19 +590,21 @@ void unaryDivmv(float *aMatrixIn1, float *aVectorIn2, float *aMatrixOut,
|
|||||||
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<float> outIter(aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const float& x, const float& y){
|
auto lambda = [=] __device__(const float& x, const float& y){
|
||||||
return direction==0?x/y:y/x;
|
return direction==0?x/y:y/x;
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<complexf> outIter((complexf*)aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const complexf& x, const complexf& y){
|
auto lambda = [=] __device__(const complexf& x, const complexf& y){
|
||||||
return direction==0?x/y:y/x;
|
return direction==0?x/y:y/x;
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,(complexf*)aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -607,21 +612,23 @@ void unaryDivmv(float *aMatrixIn1, float *aVectorIn2, float *aMatrixOut,
|
|||||||
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<complexf> rowIter_Begin((complexf*)aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<complexf> rowIter_End((complexf*)aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<float> rowVectorIter(aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<complexf> outIter((complexf*)aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const complexf& x, const float& y){
|
auto lambda = [=] __device__(const complexf& x, const float& y){
|
||||||
complexf v (y,0);
|
complexf v (y,0);
|
||||||
return direction==0?x/v:v/x;
|
return direction==0?x/v:v/x;
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,(complexf*)aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
Aurora::RowWiseIterator<float> rowIter_Begin(aMatrixIn1,aVectorLength,colElementCount,0);
|
||||||
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
Aurora::RowWiseIterator<float> rowIter_End(aMatrixIn1,aVectorLength,colElementCount,aMatrixLength);
|
||||||
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
Aurora::LoopVectorIterator<complexf> rowVectorIter((complexf*)aVectorIn2,aVectorLength);
|
||||||
|
Aurora::RowWiseIterator<complexf> outIter((complexf*)aMatrixOut,aVectorLength,colElementCount,0);
|
||||||
auto lambda = [=] __device__(const float& x, const complexf& y){
|
auto lambda = [=] __device__(const float& x, const complexf& y){
|
||||||
complexf v (x,0);
|
complexf v (x,0);
|
||||||
return direction==0?v/y:y/v;
|
return direction==0?v/y:y/v;
|
||||||
};
|
};
|
||||||
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,(complexf*)aMatrixOut,lambda);
|
thrust::transform(thrust::device, rowIter_Begin,rowIter_End,rowVectorIter,outIter,lambda);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user