Fixing nd4j-cuda build (#20)
* Roll back recent fix to restore build. * Fix compilation. * presets updated Signed-off-by: raver119 <raver119@gmail.com>master
parent
879a06c913
commit
b816845797
|
@ -174,7 +174,8 @@ public class JCublasNDArrayFactory extends BaseNativeNDArrayFactory {
|
|||
|
||||
@Override
|
||||
public INDArray create(DataBuffer data, long rows, long columns, int[] stride, long offset) {
|
||||
return new JCublasNDArray(data, new long[] {rows, columns}, stride, Nd4j.order(), data.dataType());
|
||||
// FIXME: int cast
|
||||
return new JCublasNDArray(data, new long[] {rows, columns}, ArrayUtil.toLongArray(stride), Nd4j.order(), data.dataType());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -454,7 +455,7 @@ public class JCublasNDArrayFactory extends BaseNativeNDArrayFactory {
|
|||
|
||||
@Override
|
||||
public INDArray pullRows(INDArray source, int sourceDimension, long[] indexes) {
|
||||
return pullRows(source, sourceDimension, indexes);
|
||||
return pullRows(source, sourceDimension, ArrayUtil.toInts(indexes));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -466,7 +467,7 @@ public class JCublasNDArrayFactory extends BaseNativeNDArrayFactory {
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public INDArray pullRows(INDArray source, int sourceDimension, long[] indexes, char order) {
|
||||
public INDArray pullRows(INDArray source, int sourceDimension, int[] indexes, char order) {
|
||||
if (indexes == null || indexes.length < 1)
|
||||
throw new IllegalStateException("Indexes can't be null or zero-length");
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Targeted by JavaCPP version 1.5.2-SNAPSHOT: DO NOT EDIT THIS FILE
|
||||
// Targeted by JavaCPP version 1.5.1-1: DO NOT EDIT THIS FILE
|
||||
|
||||
package org.nd4j.nativeblas;
|
||||
|
||||
|
@ -598,6 +598,10 @@ public class Nd4jCuda extends org.nd4j.nativeblas.Nd4jCudaHelper {
|
|||
|
||||
public native @Cast("bool") boolean isCPU();
|
||||
|
||||
public native int blasMajorVersion();
|
||||
public native int blasMinorVersion();
|
||||
public native int blasPatchVersion();
|
||||
|
||||
public native @StdVector Pair capabilities();
|
||||
}
|
||||
|
||||
|
@ -3045,19 +3049,19 @@ public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPoint
|
|||
Pointer dX, @Cast("Nd4jLong*") LongPointer dXShapeInfo, @Cast("Nd4jLong*") LongPointer dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") LongPointer hYShapeInfo, @Cast("Nd4jLong*") LongPointer hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") LongPointer dYShapeInfo, @Cast("Nd4jLong*") LongPointer dYOffsets,
|
||||
IntPointer hIindexes, IntPointer dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") LongPointer hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") LongPointer dIndicesShapeInfo);
|
||||
public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPointers, int opCode, int numOfSubArrs,
|
||||
Pointer hX, @Cast("Nd4jLong*") LongBuffer hXShapeInfo, @Cast("Nd4jLong*") LongBuffer hXOffsets,
|
||||
Pointer dX, @Cast("Nd4jLong*") LongBuffer dXShapeInfo, @Cast("Nd4jLong*") LongBuffer dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") LongBuffer hYShapeInfo, @Cast("Nd4jLong*") LongBuffer hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") LongBuffer dYShapeInfo, @Cast("Nd4jLong*") LongBuffer dYOffsets,
|
||||
IntBuffer hIindexes, IntBuffer dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") LongBuffer hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") LongBuffer dIndicesShapeInfo);
|
||||
public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPointers, int opCode, int numOfSubArrs,
|
||||
Pointer hX, @Cast("Nd4jLong*") long[] hXShapeInfo, @Cast("Nd4jLong*") long[] hXOffsets,
|
||||
Pointer dX, @Cast("Nd4jLong*") long[] dXShapeInfo, @Cast("Nd4jLong*") long[] dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") long[] hYShapeInfo, @Cast("Nd4jLong*") long[] hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") long[] dYShapeInfo, @Cast("Nd4jLong*") long[] dYOffsets,
|
||||
int[] hIindexes, int[] dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") long[] hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") long[] dIndicesShapeInfo);
|
||||
|
||||
public native void inspectArray(@Cast("Nd4jPointer*") PointerPointer extraPointers, @Cast("Nd4jPointer") Pointer buffer, @Cast("Nd4jLong*") LongPointer shapeInfo, @Cast("Nd4jPointer") Pointer specialBuffer, @Cast("Nd4jLong*") LongPointer specialShapeInfo, @Cast("Nd4jPointer") Pointer debugInfo);
|
||||
public native void inspectArray(@Cast("Nd4jPointer*") PointerPointer extraPointers, @Cast("Nd4jPointer") Pointer buffer, @Cast("Nd4jLong*") LongBuffer shapeInfo, @Cast("Nd4jPointer") Pointer specialBuffer, @Cast("Nd4jLong*") LongBuffer specialShapeInfo, @Cast("Nd4jPointer") Pointer debugInfo);
|
||||
|
@ -3120,6 +3124,13 @@ public native @Cast("Nd4jPointer") Pointer lcCopyStream(OpaqueLaunchContext lc);
|
|||
public native @Cast("Nd4jPointer") Pointer lcBlasHandle(OpaqueLaunchContext lc);
|
||||
public native @Cast("Nd4jPointer") Pointer lcSolverHandle(OpaqueLaunchContext lc);
|
||||
|
||||
|
||||
public native int binaryLevel();
|
||||
public native int optimalLevel();
|
||||
|
||||
public native @Cast("bool") boolean isMinimalRequirementsMet();
|
||||
public native @Cast("bool") boolean isOptimalRequirementsMet();
|
||||
|
||||
// #endif //NATIVEOPERATIONS_NATIVEOPS_H
|
||||
|
||||
|
||||
|
@ -4696,6 +4707,7 @@ public native @Cast("Nd4jPointer") Pointer lcSolverHandle(OpaqueLaunchContext lc
|
|||
* k - depth
|
||||
* value - scalar value to assign
|
||||
*/
|
||||
public native void p(@Cast("const Nd4jLong") long i, @Cast("const Nd4jLong") long j, @Cast("const Nd4jLong") long k, @Cast("const Nd4jLong") long l, @Const @ByRef NDArray value);
|
||||
|
||||
/**
|
||||
* creates array which points on certain sub-range of this array, sub-range is defined by given indices
|
||||
|
@ -4924,7 +4936,7 @@ NDArray NDArray::operator()(const Nd4jLong i) const {
|
|||
} else {
|
||||
Nd4jLong idx[MAX_RANK];
|
||||
shape::ind2subC(rankOf(), shapeOf(), i, idx);
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), idx, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), idx);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -4955,7 +4967,7 @@ NDArray& NDArray::operator()(const Nd4jLong i) {
|
|||
} else {
|
||||
Nd4jLong idx[MAX_RANK];
|
||||
shape::ind2subC(rankOf(), shapeOf(), i, idx);
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), idx, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), idx);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -4972,7 +4984,7 @@ NDArray NDArray::operator()(const Nd4jLong i, const Nd4jLong j) const {
|
|||
throw std::invalid_argument("NDArray::operator(i,j): one of input indexes is out of array length or rank!=2 !");
|
||||
|
||||
Nd4jLong coords[2] = {i, j};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
// TODO: do we really want a view here?
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
|
@ -4988,7 +5000,7 @@ NDArray& NDArray::operator()(const Nd4jLong i, const Nd4jLong j) {
|
|||
throw std::invalid_argument("NDArray::operator(i,j): one of input indexes is out of array length or rank!=2 !");
|
||||
|
||||
Nd4jLong coords[2] = {i, j};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -5007,7 +5019,7 @@ NDArray NDArray::operator()(const Nd4jLong i, const Nd4jLong j, const Nd4jLong k
|
|||
throw std::invalid_argument("NDArray::operator(i,j,k): one of input indexes is out of array length or rank!=3 !");
|
||||
|
||||
Nd4jLong coords[3] = {i, j, k};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -5024,7 +5036,7 @@ NDArray& NDArray::operator()(const Nd4jLong i, const Nd4jLong j, const Nd4jLong
|
|||
throw std::invalid_argument("NDArray::operator(i,j,k): one of input indexes is out of array length or rank!=3 !");
|
||||
|
||||
Nd4jLong coords[3] = {i, j, k};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -5040,7 +5052,7 @@ NDArray NDArray::operator()(const Nd4jLong t, const Nd4jLong u, const Nd4jLong v
|
|||
throw std::invalid_argument("NDArray::operator(t,u,v,w): one of input indexes is out of array length or rank!=4 !");
|
||||
|
||||
Nd4jLong coords[4] = {t, u, v, w};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -5054,7 +5066,7 @@ NDArray& NDArray::operator()(const Nd4jLong t, const Nd4jLong u, const Nd4jLong
|
|||
throw std::invalid_argument("NDArray::operator(t,u,v,w): one of input indexes is out of array length or rank!=4 !");
|
||||
|
||||
Nd4jLong coords[4] = {t, u, v, w};
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), coords, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), coords);
|
||||
|
||||
// FIXME
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
|
@ -5070,7 +5082,7 @@ NDArray NDArray::operator()(const Nd4jLong* idx) const {
|
|||
if (idx[i] >= sizeAt(i))
|
||||
throw std::invalid_argument("NDArray::operator(const Nd4jLong* idx): input index is out of dimension length !");
|
||||
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), idx, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), idx);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -5085,7 +5097,7 @@ NDArray& NDArray::operator()(const Nd4jLong* idx) {
|
|||
if (idx[i] >= sizeAt(i))
|
||||
throw std::invalid_argument("NDArray::operator(const Nd4jLong* idx): input index is out of dimension length !");
|
||||
|
||||
auto xOffset = shape::getOffset(0, shapeOf(), stridesOf(), idx, rankOf());
|
||||
auto xOffset = shape::getOffset(getShapeInfo(), idx);
|
||||
|
||||
auto cast = reinterpret_cast<int8_t *>(_buffer) + (xOffset * this->sizeOfT());
|
||||
NDArray result(cast, nd4j::ShapeBuilders::createScalarShapeInfo(this->dataType(), this->getWorkspace()));
|
||||
|
@ -6578,9 +6590,6 @@ NDArray& NDArray::operator()(const Nd4jLong* idx) {
|
|||
// #include <graph/ContextPrototype.h>
|
||||
// #include <memory/Workspace.h>
|
||||
|
||||
// #ifdef HAVE_MKLDNN
|
||||
// #endif
|
||||
|
||||
// CUDA-specific includes
|
||||
// #ifdef __CUDACC__
|
||||
// #endif
|
||||
|
@ -6647,8 +6656,6 @@ NDArray& NDArray::operator()(const Nd4jLong* idx) {
|
|||
public native int getBranch();
|
||||
public native void setBranch(int branch);
|
||||
|
||||
// #ifdef HAVE_MKLDNN
|
||||
// #endif
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
|
@ -7956,9 +7963,7 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
* @param indices the indices to iterate over
|
||||
* @return the double at the specified index
|
||||
*/
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("Nd4jLong") long baseOffset, @Cast("const Nd4jLong*") LongPointer shape, @Cast("const Nd4jLong*") LongPointer stride, @Cast("const Nd4jLong*") LongPointer indices, int rank);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("Nd4jLong") long baseOffset, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("const Nd4jLong*") LongBuffer stride, @Cast("const Nd4jLong*") LongBuffer indices, int rank);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("Nd4jLong") long baseOffset, @Cast("const Nd4jLong*") long[] shape, @Cast("const Nd4jLong*") long[] stride, @Cast("const Nd4jLong*") long[] indices, int rank);
|
||||
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("const Nd4jLong*") LongPointer indices, @Cast("Nd4jLong") long baseOffset/*=0*/);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("const Nd4jLong*") LongPointer indices);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getOffset(@Cast("const Nd4jLong*") LongBuffer shapeInfo, @Cast("const Nd4jLong*") LongBuffer indices, @Cast("Nd4jLong") long baseOffset/*=0*/);
|
||||
|
@ -7979,34 +7984,26 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
|
||||
/**
|
||||
* Convert a linear index to the corresponding coordinates
|
||||
* for example if shape is {2, 4}, then index 5 corresponds to following coordinates
|
||||
* -> [1, 1] in case of c order
|
||||
* -> [1, 2] in case of f order
|
||||
* for example if shape is {2, 4}, then index 5 corresponds to coordinates [1, 1]
|
||||
*/
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") LongPointer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") LongBuffer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") long[] coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong") long arrLen, @Cast("Nd4jLong*") long[] coords);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") LongPointer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") LongBuffer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") long[] coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native void index2coords(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("Nd4jLong") long index, @Cast("Nd4jLong*") long[] coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer shapeInfo, @Cast("Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] shapeInfo, @Cast("Nd4jLong*") long[] coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native void index2coords(@Cast("Nd4jLong") long index, int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("Nd4jLong*") long[] coords);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Convert coordinates to the corresponding linear index (sequence number in other words)
|
||||
* for example if shape is {2, 4}, then:
|
||||
* in case of c order and coordinates [1, 1] index 5 is returned
|
||||
* in case of f order and coordinates [1, 2] index 5 is returned
|
||||
* for example if shape is {2, 4} and coordinates [1, 1] then index 5 is returned
|
||||
*/
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("const Nd4jLong*") LongPointer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(@Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("const Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(@Cast("const Nd4jLong*") LongBuffer shapeInfo, @Cast("const Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(@Cast("const Nd4jLong*") long[] shapeInfo, @Cast("const Nd4jLong*") long[] coords);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") LongPointer shape, @Cast("const Nd4jLong*") LongPointer coords);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("const Nd4jLong*") LongBuffer coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") LongBuffer shape, @Cast("const Nd4jLong*") LongBuffer coords);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("const Nd4jLong*") long[] coords, byte order/*='c'*/);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long coords2index(int rank, @Cast("const Nd4jLong*") long[] shape, @Cast("const Nd4jLong*") long[] coords);
|
||||
|
||||
/**
|
||||
|
@ -8018,36 +8015,16 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
*/
|
||||
|
||||
/* calculates an array buffer offset for given "index" using following formula: offset = coord_0*stride_0 + coord_1*stride_1 + ... + coord_{rank-1}*stride_{rank-1}
|
||||
* arrLen - array length
|
||||
*/
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") IntPointer shapeInfo, @Cast("uint") int arrLen);
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") IntBuffer shapeInfo, @Cast("uint") int arrLen);
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") int[] shapeInfo, @Cast("uint") int arrLen);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("Nd4jLong") long arrLen);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer shapeInfo, @Cast("Nd4jLong") long arrLen);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] shapeInfo, @Cast("Nd4jLong") long arrLen);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOrderOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer shapeInfo, @Cast("Nd4jLong") long arrLen, byte order);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOrderOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer shapeInfo, @Cast("Nd4jLong") long arrLen, byte order);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOrderOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] shapeInfo, @Cast("Nd4jLong") long arrLen, byte order);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer lShapeInfo, @Cast("const uint*") IntPointer uShapeInfo, @Cast("Nd4jLong") long arrLen, @Cast("const bool") boolean useUnsigned);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer lShapeInfo, @Cast("const uint*") IntBuffer uShapeInfo, @Cast("Nd4jLong") long arrLen, @Cast("const bool") boolean useUnsigned);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] lShapeInfo, @Cast("const uint*") int[] uShapeInfo, @Cast("Nd4jLong") long arrLen, @Cast("const bool") boolean useUnsigned);
|
||||
|
||||
/**
|
||||
* Compute the real linear indices for the given shape and stride
|
||||
*/
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") LongPointer computeIndices(int rank, @Cast("Nd4jLong*") LongPointer shape, @Cast("Nd4jLong*") LongPointer stride);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") LongBuffer computeIndices(int rank, @Cast("Nd4jLong*") LongBuffer shape, @Cast("Nd4jLong*") LongBuffer stride);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") long[] computeIndices(int rank, @Cast("Nd4jLong*") long[] shape, @Cast("Nd4jLong*") long[] stride);
|
||||
|
||||
/**
|
||||
* Compute the real linear indices for the
|
||||
* given shape buffer. Shape,stride and rank are derived
|
||||
* from the buffer
|
||||
*/
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") LongPointer computeIndices( @Cast("Nd4jLong*") LongPointer shapeBuffer);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") LongBuffer computeIndices( @Cast("Nd4jLong*") LongBuffer shapeBuffer);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong*") long[] computeIndices( @Cast("Nd4jLong*") long[] shapeBuffer);
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") IntPointer shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") IntBuffer shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("uint") int getIndexOffset(@Cast("uint") int index, @Cast("const uint*") int[] shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long getIndexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] shapeInfo);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongPointer lShapeInfo, @Cast("const uint*") IntPointer uShapeInfo, @Cast("const bool") boolean useUnsigned);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") LongBuffer lShapeInfo, @Cast("const uint*") IntBuffer uShapeInfo, @Cast("const bool") boolean useUnsigned);
|
||||
@Namespace("shape") public static native @Cast("Nd4jLong") long indexOffset(@Cast("Nd4jLong") long index, @Cast("const Nd4jLong*") long[] lShapeInfo, @Cast("const uint*") int[] uShapeInfo, @Cast("const bool") boolean useUnsigned);
|
||||
|
||||
@Namespace("shape") public static native void printShapeInfo(@Cast("Nd4jLong*") LongPointer shapeInfo);
|
||||
@Namespace("shape") public static native void printShapeInfo(@Cast("Nd4jLong*") LongBuffer shapeInfo);
|
||||
|
@ -8326,20 +8303,62 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
* for the given rank and shape.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Compute the real linear indices for the given shape and stride
|
||||
*/
|
||||
|
||||
/**
|
||||
* Compute the real linear indices for the given shape and stride
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// //////////////////////////////////////////////////////////////////////
|
||||
// INLINEDEF _CUDA_HD Nd4jLong getIndexOffset(Nd4jLong index, const Nd4jLong *shapeInfo, Nd4jLong arrLen) {
|
||||
|
||||
// const Nd4jLong ews = shapeInfo[shapeInfo[0] + shapeInfo[0] + 2];
|
||||
|
||||
// if(ews > 0 && order(shapeInfo) == 'c')
|
||||
// if (ews == 1)
|
||||
// return index;
|
||||
// else
|
||||
// return ews * index;
|
||||
|
||||
// Nd4jLong offset = 0;
|
||||
// Nd4jLong rank = shapeInfo[0];
|
||||
// for(int i = 1; i <= shapeInfo[0]; ++i) {
|
||||
// arrLen /= shapeInfo[i];
|
||||
// if(arrLen > 0 && shapeInfo[i] > 1) {
|
||||
// offset += (index / arrLen) * shapeInfo[i + rank];
|
||||
// index %= arrLen;
|
||||
// }
|
||||
// }
|
||||
// return offset;
|
||||
// }
|
||||
|
||||
// INLINEDEF _CUDA_HD uint getIndexOffset(uint index, const uint *shapeInfo, uint arrLen) {
|
||||
|
||||
// const uint rank = shapeInfo[0];
|
||||
// const uint ews = shapeInfo[rank + rank + 2];
|
||||
|
||||
// if(ews > 0 && shapeInfo[rank + rank + 3] == 99)
|
||||
// if (ews == 1)
|
||||
// return index;
|
||||
// else
|
||||
// return ews * index;
|
||||
|
||||
// uint offset = 0;
|
||||
|
||||
// for(uint i = 1; i <= rank; ++i) {
|
||||
// arrLen /= shapeInfo[i];
|
||||
// if(arrLen > 0 && shapeInfo[i] > 1) {
|
||||
// offset += (index / arrLen) * shapeInfo[i + rank];
|
||||
// index %= arrLen;
|
||||
// }
|
||||
// }
|
||||
// return offset;
|
||||
// }
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
|
@ -8708,6 +8727,10 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
* @return the double at the specified index
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -9036,6 +9059,8 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -9302,6 +9327,81 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
// #endif //LIBND4J_OPDESCRIPTOR_H
|
||||
|
||||
|
||||
// Parsed from ops/declarable/PlatformHelper.h
|
||||
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015-2018 Skymind, Inc.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Apache License, Version 2.0 which is available at
|
||||
* https://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
******************************************************************************/
|
||||
|
||||
//
|
||||
// @author raver119@gmail.com
|
||||
//
|
||||
|
||||
// #ifndef SD_PLATFORMHELPER_H
|
||||
// #define SD_PLATFORMHELPER_H
|
||||
|
||||
// #include <ShapeUtils.h>
|
||||
// #include <graph/Context.h>
|
||||
// #include <string>
|
||||
// #include <pointercast.h>
|
||||
// #include <dll.h>
|
||||
/**
|
||||
* This abstract class defines methods used by platform-specific helpers implementations
|
||||
*/
|
||||
@Namespace("nd4j::ops::platforms") @NoOffset public static class PlatformHelper extends Pointer {
|
||||
static { Loader.load(); }
|
||||
/** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
|
||||
public PlatformHelper(Pointer p) { super(p); }
|
||||
|
||||
|
||||
public native @StdString BytePointer name();
|
||||
|
||||
public native @Cast("Nd4jLong") long hash();
|
||||
|
||||
/**
|
||||
* This method checks, if given helper can be used with given input/output/configuration options
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public native @Cast("bool") boolean isUsable(@ByRef Context context);
|
||||
|
||||
/**
|
||||
* This method invokes helper. Typically this method replaces actual op execution
|
||||
*
|
||||
* @param context
|
||||
* @return
|
||||
*/
|
||||
public native @Cast("Nd4jStatus") int invokeHelper(@ByRef Context context);
|
||||
|
||||
/**
|
||||
* Helper method, needed for compatibility with DeclarableOp macros
|
||||
* @param ctx
|
||||
* @param inputId
|
||||
* @return
|
||||
*/
|
||||
public native NDArray getZ(@ByRef Context ctx, int inputId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// #endif //SD_PLATFORMHELPER_H
|
||||
|
||||
|
||||
// Parsed from ops/declarable/BroadcastableOp.h
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -9879,6 +9979,7 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
// #include <map>
|
||||
// #include <mutex>
|
||||
// #include <ops/declarable/DeclarableOp.h>
|
||||
// #include <ops/declarable/PlatformHelper.h>
|
||||
|
||||
// handlers part
|
||||
// #include <cstdlib>
|
||||
|
@ -9906,7 +10007,7 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
public native @Cast("char*") String getAllCustomOperations();
|
||||
|
||||
/**
|
||||
* This method registers operation
|
||||
* This method registers operation in our registry, so we can use them later
|
||||
*
|
||||
* @param op
|
||||
*/
|
||||
|
@ -9914,10 +10015,16 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
public native @Cast("bool") boolean registerOperation(@Cast("char*") BytePointer name, DeclarableOp op);
|
||||
public native @Cast("bool") boolean registerOperation(DeclarableOp op);
|
||||
|
||||
public native void registerHelper(PlatformHelper op);
|
||||
|
||||
public native @Cast("bool") boolean hasHelper(@Cast("Nd4jLong") long hash);
|
||||
|
||||
public native DeclarableOp getOperation(@Cast("char*") String name);
|
||||
public native DeclarableOp getOperation(@Cast("char*") BytePointer name);
|
||||
public native DeclarableOp getOperation(@Cast("Nd4jLong") long hash);
|
||||
|
||||
public native PlatformHelper getPlatformHelper(@Cast("Nd4jLong") long hash);
|
||||
|
||||
public native @Cast("Nd4jLong*") @StdVector LongPointer getAllHashes();
|
||||
|
||||
public native int numberOfOperations();
|
||||
|
@ -10044,6 +10151,10 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
// #include <cuda_device_runtime_api.h>
|
||||
// #endif
|
||||
|
||||
// used for MKLDNN etc
|
||||
// #if !defined(__STANDALONE_BUILD__)
|
||||
// #include "config.h"
|
||||
// #endif
|
||||
|
||||
// #include <dll.h>
|
||||
// #include <memory>
|
||||
|
@ -10080,6 +10191,8 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
public native Workspace getWorkspace();
|
||||
public native void setWorkspace(Workspace theWorkspace);
|
||||
|
||||
public native Pointer engine();
|
||||
|
||||
public native int getDeviceID();
|
||||
public native void setDeviceID(int deviceID);
|
||||
public native ErrorReference errorReference();
|
||||
|
@ -10438,6 +10551,7 @@ public static final int PREALLOC_SIZE = 33554432;
|
|||
// #include <ops/declarable/headers/datatypes.h>
|
||||
// #include <ops/declarable/headers/third_party.h>
|
||||
// #include <ops/declarable/headers/tests.h>
|
||||
// #include <ops/declarable/headers/kernels.h>
|
||||
// #include <ops/declarable/headers/BarnesHutTsne.h>
|
||||
// #include <dll.h>
|
||||
// #include <helpers/shape.h>
|
||||
|
|
|
@ -3049,19 +3049,19 @@ public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPoint
|
|||
Pointer dX, @Cast("Nd4jLong*") LongPointer dXShapeInfo, @Cast("Nd4jLong*") LongPointer dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") LongPointer hYShapeInfo, @Cast("Nd4jLong*") LongPointer hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") LongPointer dYShapeInfo, @Cast("Nd4jLong*") LongPointer dYOffsets,
|
||||
IntPointer hIindexes, IntPointer dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") LongPointer hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") LongPointer dIndicesShapeInfo);
|
||||
public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPointers, int opCode, int numOfSubArrs,
|
||||
Pointer hX, @Cast("Nd4jLong*") LongBuffer hXShapeInfo, @Cast("Nd4jLong*") LongBuffer hXOffsets,
|
||||
Pointer dX, @Cast("Nd4jLong*") LongBuffer dXShapeInfo, @Cast("Nd4jLong*") LongBuffer dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") LongBuffer hYShapeInfo, @Cast("Nd4jLong*") LongBuffer hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") LongBuffer dYShapeInfo, @Cast("Nd4jLong*") LongBuffer dYOffsets,
|
||||
IntBuffer hIindexes, IntBuffer dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") LongBuffer hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") LongBuffer dIndicesShapeInfo);
|
||||
public native void scatterUpdate(@Cast("Nd4jPointer*") PointerPointer extraPointers, int opCode, int numOfSubArrs,
|
||||
Pointer hX, @Cast("Nd4jLong*") long[] hXShapeInfo, @Cast("Nd4jLong*") long[] hXOffsets,
|
||||
Pointer dX, @Cast("Nd4jLong*") long[] dXShapeInfo, @Cast("Nd4jLong*") long[] dXOffsets,
|
||||
Pointer hY, @Cast("Nd4jLong*") long[] hYShapeInfo, @Cast("Nd4jLong*") long[] hYOffsets,
|
||||
Pointer dY, @Cast("Nd4jLong*") long[] dYShapeInfo, @Cast("Nd4jLong*") long[] dYOffsets,
|
||||
int[] hIindexes, int[] dIindexes);
|
||||
Pointer hIindexes, @Cast("Nd4jLong*") long[] hIndicesShapeInfo, Pointer dIindexes, @Cast("Nd4jLong*") long[] dIndicesShapeInfo);
|
||||
|
||||
public native void inspectArray(@Cast("Nd4jPointer*") PointerPointer extraPointers, @Cast("Nd4jPointer") Pointer buffer, @Cast("Nd4jLong*") LongPointer shapeInfo, @Cast("Nd4jPointer") Pointer specialBuffer, @Cast("Nd4jLong*") LongPointer specialShapeInfo, @Cast("Nd4jPointer") Pointer debugInfo);
|
||||
public native void inspectArray(@Cast("Nd4jPointer*") PointerPointer extraPointers, @Cast("Nd4jPointer") Pointer buffer, @Cast("Nd4jLong*") LongBuffer shapeInfo, @Cast("Nd4jPointer") Pointer specialBuffer, @Cast("Nd4jLong*") LongBuffer specialShapeInfo, @Cast("Nd4jPointer") Pointer debugInfo);
|
||||
|
@ -20696,10 +20696,14 @@ public static final int TAD_THRESHOLD = TAD_THRESHOLD();
|
|||
* 1 - scales - 1D-tensor with shape (num_boxes) by float type
|
||||
* 2 - output_size - 0D-tensor by int type (optional)
|
||||
* float args:
|
||||
* 0 - threshold - threshold value for overlap checks (optional, by default 0.5)
|
||||
* 0 - overlap_threshold - threshold value for overlap checks (optional, by default 0.5)
|
||||
* 1 - score_threshold - the threshold for deciding when to remove boxes based on score (optional, by default -inf)
|
||||
* int args:
|
||||
* 0 - output_size - as arg 2 used for same target. Eigher this or arg 2 should be provided.
|
||||
*
|
||||
* output:
|
||||
* - vector with size M, where M <= output_size by int type
|
||||
*
|
||||
* */
|
||||
// #if NOT_EXCLUDED(OP_image_non_max_suppression)
|
||||
@Namespace("nd4j::ops") public static class non_max_suppression extends DeclarableCustomOp {
|
||||
|
@ -20719,6 +20723,39 @@ public static final int TAD_THRESHOLD = TAD_THRESHOLD();
|
|||
}
|
||||
// #endif
|
||||
|
||||
/*
|
||||
* image.non_max_suppression_overlaps op.
|
||||
* input:
|
||||
* 0 - boxes - 2D-tensor with shape (num_boxes, 4) by float type
|
||||
* 1 - scales - 1D-tensor with shape (num_boxes) by float type
|
||||
* 2 - output_size - 0D-tensor by int type (optional)
|
||||
* float args:
|
||||
* 0 - overlap_threshold - threshold value for overlap checks (optional, by default 0.5)
|
||||
* 1 - score_threshold - the threshold for deciding when to remove boxes based on score (optional, by default -inf)
|
||||
* int args:
|
||||
* 0 - output_size - as arg 2 used for same target. Eigher this or arg 2 should be provided.
|
||||
*
|
||||
* output:
|
||||
* 0 - 1D integer tensor with shape [M], epresenting the selected indices from the overlaps tensor, where M <= max_output_size
|
||||
* */
|
||||
// #if NOT_EXCLUDED(OP_image_non_max_suppression_overlaps)
|
||||
@Namespace("nd4j::ops") public static class non_max_suppression_overlaps extends DeclarableCustomOp {
|
||||
static { Loader.load(); }
|
||||
/** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */
|
||||
public non_max_suppression_overlaps(Pointer p) { super(p); }
|
||||
/** Native array allocator. Access with {@link Pointer#position(long)}. */
|
||||
public non_max_suppression_overlaps(long size) { super((Pointer)null); allocateArray(size); }
|
||||
private native void allocateArray(long size);
|
||||
@Override public non_max_suppression_overlaps position(long position) {
|
||||
return (non_max_suppression_overlaps)super.position(position);
|
||||
}
|
||||
|
||||
public non_max_suppression_overlaps() { super((Pointer)null); allocate(); }
|
||||
private native void allocate();
|
||||
public native ShapeList calculateOutputShape(ShapeList inputShape, @ByRef Context block);
|
||||
}
|
||||
// #endif
|
||||
|
||||
/*
|
||||
* cholesky op - decomposite positive square symetric matrix (or matricies when rank > 2).
|
||||
* input:
|
||||
|
|
Loading…
Reference in New Issue