本文整理汇总了C++中VectorMatrix::getArray方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorMatrix::getArray方法的具体用法?C++ VectorMatrix::getArray怎么用?C++ VectorMatrix::getArray使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VectorMatrix
的用法示例。
在下文中一共展示了VectorMatrix::getArray方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mat
VectorMatrixCU64Accessor::VectorMatrixCU64Accessor(VectorMatrix &mat) : mat(mat)
{
mat.writeLock(2); // 2 = CU64Device!
data_x = static_cast<CU64Array*>(mat.getArray(2, 0))->ptr();
data_y = static_cast<CU64Array*>(mat.getArray(2, 1))->ptr();
data_z = static_cast<CU64Array*>(mat.getArray(2, 2))->ptr();
}
示例2: mat
ConstVectorMatrixAccessor::ConstVectorMatrixAccessor(const VectorMatrix &mat) : mat(mat)
{
mat.readLock(0);
data_x = static_cast<CPUArray*>(mat.getArray(0, 0))->ptr();
data_y = static_cast<CPUArray*>(mat.getArray(0, 1))->ptr();
data_z = static_cast<CPUArray*>(mat.getArray(0, 2))->ptr();
// Precalculate strides
const int rank = mat.getShape().getRank();
strides[0] = 1;
strides[1] = strides[0] * (rank > 0 ? mat.getShape().getDim(0) : 1);
strides[2] = strides[1] * (rank > 1 ? mat.getShape().getDim(1) : 1);
strides[3] = strides[2] * (rank > 2 ? mat.getShape().getDim(2) : 1);
}
示例3: dotSum
double VectorMatrix::dotSum(const VectorMatrix &other) const
{
if (isUniform() && other.isUniform()) {
const double x = uval[0], y = uval[1], z = uval[2];
const double dot = x*x + y*y + z*z;
return size() * dot;
} else {
const int dev = computeStrategy2(other);
readLock(dev); if (this != &other) other.readLock(dev);
const double sum = matty::getDevice(dev)->sumdot3(
this->getArray(dev, 0), this->getArray(dev, 1), this->getArray(dev, 2),
other.getArray(dev, 0), other.getArray(dev, 1), other.getArray(dev, 2)
);
if (this != &other) other.readUnlock(dev); readUnlock(dev);
return sum;
}
}
示例4: assign
void VectorMatrix::assign(const VectorMatrix &op)
{
if (this == &op) {
return;
} else if (op.isUniform()) {
fill(op.getUniformValue());
} else {
const int dev = computeStrategy2(op);
writeLock(dev); op.readLock(dev);
for (int c=0; c<num_arrays; ++c) {
matty::getDevice(dev)->assign(getArray(dev, c), op.getArray(dev, c));
}
writeUnlock(dev); op.readUnlock(dev);
}
}
示例5: add
void VectorMatrix::add(const VectorMatrix &op, double factor)
{
if (this == &op) {
scale(1.0 + factor);
} else if (isUniform() && op.isUniform()) {
fill(getUniformValue() + op.getUniformValue() * factor);
} else {
const int dev = computeStrategy2(op);
writeLock(dev); op.readLock(dev);
for (int c=0; c<num_arrays; ++c) {
matty::getDevice(dev)->add(getArray(dev, c), op.getArray(dev, c), factor);
}
writeUnlock(dev); op.readUnlock(dev);
}
}