org.ujmp.core.doublematrix.impl
Class BlockMultiply

java.lang.Object
  extended by org.ujmp.core.doublematrix.impl.BlockMultiply
All Implemented Interfaces:
Callable<Void>

public class BlockMultiply
extends Object
implements Callable<Void>

Multiply blocks of A and B in the specified range(fromM->toM, fromN->toN, fromK->toK),
and add to matrix C.

C(fromM->toM, fromK->toK) +=
       A(fromM->toM, fromN->toN) x B(fromN->toN, fromK->toK)

All blocks must be square blocks of the same size, with length of one side = blockStripeSize

Author:
Frode Carlsen

Constructor Summary
BlockMultiply(BlockDenseDoubleMatrix2D a, BlockDenseDoubleMatrix2D b, BlockDenseDoubleMatrix2D c, int fromM, int toM, int fromN, int toN, int fromK, int toK)
          Constructor taking the two matrices being multiplied, the target matrix C and the range of rows and columns to multiply.
 
Method Summary
 Void call()
           
protected  void multiply()
          Multiply blocks of two matrices A,B and add to C.
 void multiplyRowMajorTimesColumnMajorBlocks(double[] aBlock, double[] bBlock, double[] cBlock, int aRows, int bRows, int bCols)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BlockMultiply

public BlockMultiply(BlockDenseDoubleMatrix2D a,
                     BlockDenseDoubleMatrix2D b,
                     BlockDenseDoubleMatrix2D c,
                     int fromM,
                     int toM,
                     int fromN,
                     int toN,
                     int fromK,
                     int toK)
Constructor taking the two matrices being multiplied, the target matrix C and the range of rows and columns to multiply.

Parameters:
a - - matrix A, size (M, N)
b - - matrix B, size (N, K)
c - - result matrix C, size (M, K)
fromM - - start row M in matrix A
toM - - end row M in A
fromN - - start column N in A (or start row N in B)
toN - - end row N
fromK - - start column K in B
toK - - end column K in B
Method Detail

call

public Void call()
Specified by:
call in interface Callable<Void>

multiply

protected final void multiply()
Multiply blocks of two matrices A,B and add to C.

Blocks of Matrix B are transformed to column-major layout (if not already) to facilitate multiplication.
(If matrices have been created optimally, B should already be column-major)


multiplyRowMajorTimesColumnMajorBlocks

public void multiplyRowMajorTimesColumnMajorBlocks(double[] aBlock,
                                                   double[] bBlock,
                                                   double[] cBlock,
                                                   int aRows,
                                                   int bRows,
                                                   int bCols)


Copyright © 2010. All Rights Reserved.