Parallel Colt 0.7.2

cern.colt.matrix.tfloat.algo
Class SmpFloatBlas

java.lang.Object
  extended by cern.colt.matrix.tfloat.algo.SmpFloatBlas
All Implemented Interfaces:
FloatBlas

public class SmpFloatBlas
extends Object
implements FloatBlas

Parallel implementation of the Basic Linear Algebra System for symmetric multi processing boxes. In all cases, no or only marginal speedup is seen for small problem sizes; they are detected and the sequential algorithm is used.

Version:
0.9, 16/04/2000
Author:
wolfgang.hoschek@cern.ch, Piotr Wendykier (piotr.wendykier@gmail.com)

Constructor Summary
SmpFloatBlas()
           
 
Method Summary
 void assign(FloatMatrix2D A, FloatFunction function)
          Assigns the result of a function to each cell; x[row,col] = function(x[row,col]).
 void assign(FloatMatrix2D A, FloatMatrix2D B, FloatFloatFunction function)
          Assigns the result of a function to each cell; x[row,col] = function(x[row,col],y[row,col]).
 float dasum(FloatMatrix1D x)
          Returns the sum of absolute values; |x[0]| + |x[1]| + ...
 void daxpy(float alpha, FloatMatrix1D x, FloatMatrix1D y)
          Combined vector scaling; y = y + alpha*x.
 void daxpy(float alpha, FloatMatrix2D A, FloatMatrix2D B)
          Combined matrix scaling; B = B + alpha*A.
 void dcopy(FloatMatrix1D x, FloatMatrix1D y)
          Vector assignment (copying); y = x.
 void dcopy(FloatMatrix2D A, FloatMatrix2D B)
          Matrix assignment (copying); B = A.
 float ddot(FloatMatrix1D x, FloatMatrix1D y)
          Returns the dot product of two vectors x and y, which is Sum(x[i]*y[i]).
 void dgemm(boolean transposeA, boolean transposeB, float alpha, FloatMatrix2D A, FloatMatrix2D B, float beta, FloatMatrix2D C)
          Generalized linear algebraic matrix-matrix multiply; C = alpha*A*B + beta*C.
 void dgemv(boolean transposeA, float alpha, FloatMatrix2D A, FloatMatrix1D x, float beta, FloatMatrix1D y)
          Generalized linear algebraic matrix-vector multiply; y = alpha*A*x + beta*y.
 void dger(float alpha, FloatMatrix1D x, FloatMatrix1D y, FloatMatrix2D A)
          Performs a rank 1 update; A = A + alpha*x*y'.
 float dnrm2(FloatMatrix1D x)
          Return the 2-norm; sqrt(x[0]^2 + x[1]^2 + ...).
 void drot(FloatMatrix1D x, FloatMatrix1D y, float c, float s)
          Applies a givens plane rotation to (x,y); x = c*x + s*y; y = c*y - s*x.
 void drotg(float a, float b, float[] rotvec)
          Constructs a Givens plane rotation for (a,b).
 void dscal(float alpha, FloatMatrix1D x)
          Vector scaling; x = alpha*x.
 void dscal(float alpha, FloatMatrix2D A)
          Matrix scaling; A = alpha*A.
 void dswap(FloatMatrix1D x, FloatMatrix1D y)
          Swaps the elements of two vectors; y <==> x.
 void dswap(FloatMatrix2D A, FloatMatrix2D B)
          Swaps the elements of two matrices; B <==> A.
 void dsymv(boolean isUpperTriangular, float alpha, FloatMatrix2D A, FloatMatrix1D x, float beta, FloatMatrix1D y)
          Symmetric matrix-vector multiplication; y = alpha*A*x + beta*y.
 void dtrmv(boolean isUpperTriangular, boolean transposeA, boolean isUnitTriangular, FloatMatrix2D A, FloatMatrix1D x)
          Triangular matrix-vector multiplication; x = A*x or x = A'*x.
 int idamax(FloatMatrix1D x)
          Returns the index of largest absolute value; i such that |x[i]| == max(|x[0]|,|x[1]|,...)..
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SmpFloatBlas

public SmpFloatBlas()
Method Detail

assign

public void assign(FloatMatrix2D A,
                   FloatFunction function)
Description copied from interface: FloatBlas
Assigns the result of a function to each cell; x[row,col] = function(x[row,col]).

Specified by:
assign in interface FloatBlas
Parameters:
A - the matrix to modify.
function - a function object taking as argument the current cell's value.
See Also:
FloatFunctions

assign

public void assign(FloatMatrix2D A,
                   FloatMatrix2D B,
                   FloatFloatFunction function)
Description copied from interface: FloatBlas
Assigns the result of a function to each cell; x[row,col] = function(x[row,col],y[row,col]).

Specified by:
assign in interface FloatBlas
Parameters:
A - the matrix to modify.
B - the secondary matrix to operate on.
function - a function object taking as first argument the current cell's value of this, and as second argument the current cell's value of y,
See Also:
FloatFunctions

dasum

public float dasum(FloatMatrix1D x)
Description copied from interface: FloatBlas
Returns the sum of absolute values; |x[0]| + |x[1]| + ... . In fact equivalent to x.aggregate(cern.jet.math.Functions.plus, cern.jet.math.Functions.abs) .

Specified by:
dasum in interface FloatBlas
Parameters:
x - the first vector.

daxpy

public void daxpy(float alpha,
                  FloatMatrix1D x,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Combined vector scaling; y = y + alpha*x. In fact equivalent to y.assign(x,cern.jet.math.Functions.plusMult(alpha)).

Specified by:
daxpy in interface FloatBlas
Parameters:
alpha - a scale factor.
x - the first source vector.
y - the second source vector, this is also the vector where results are stored.

daxpy

public void daxpy(float alpha,
                  FloatMatrix2D A,
                  FloatMatrix2D B)
Description copied from interface: FloatBlas
Combined matrix scaling; B = B + alpha*A. In fact equivalent to B.assign(A,cern.jet.math.Functions.plusMult(alpha)).

Specified by:
daxpy in interface FloatBlas
Parameters:
alpha - a scale factor.
A - the first source matrix.
B - the second source matrix, this is also the matrix where results are stored.

dcopy

public void dcopy(FloatMatrix1D x,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Vector assignment (copying); y = x. In fact equivalent to y.assign(x).

Specified by:
dcopy in interface FloatBlas
Parameters:
x - the source vector.
y - the destination vector.

dcopy

public void dcopy(FloatMatrix2D A,
                  FloatMatrix2D B)
Description copied from interface: FloatBlas
Matrix assignment (copying); B = A. In fact equivalent to B.assign(A).

Specified by:
dcopy in interface FloatBlas
Parameters:
A - the source matrix.
B - the destination matrix.

ddot

public float ddot(FloatMatrix1D x,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Returns the dot product of two vectors x and y, which is Sum(x[i]*y[i]). In fact equivalent to x.zDotProduct(y).

Specified by:
ddot in interface FloatBlas
Parameters:
x - the first vector.
y - the second vector.
Returns:
the sum of products.

dgemm

public void dgemm(boolean transposeA,
                  boolean transposeB,
                  float alpha,
                  FloatMatrix2D A,
                  FloatMatrix2D B,
                  float beta,
                  FloatMatrix2D C)
Description copied from interface: FloatBlas
Generalized linear algebraic matrix-matrix multiply; C = alpha*A*B + beta*C. In fact equivalent to A.zMult(B,C,alpha,beta,transposeA,transposeB). Note: Matrix shape conformance is checked after potential transpositions.

Specified by:
dgemm in interface FloatBlas
Parameters:
transposeA - set this flag to indicate that the multiplication shall be performed on A'.
transposeB - set this flag to indicate that the multiplication shall be performed on B'.
alpha - a scale factor.
A - the first source matrix.
B - the second source matrix.
beta - a scale factor.
C - the third source matrix, this is also the matrix where results are stored.

dgemv

public void dgemv(boolean transposeA,
                  float alpha,
                  FloatMatrix2D A,
                  FloatMatrix1D x,
                  float beta,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Generalized linear algebraic matrix-vector multiply; y = alpha*A*x + beta*y. In fact equivalent to A.zMult(x,y,alpha,beta,transposeA). Note: Matrix shape conformance is checked after potential transpositions.

Specified by:
dgemv in interface FloatBlas
Parameters:
transposeA - set this flag to indicate that the multiplication shall be performed on A'.
alpha - a scale factor.
A - the source matrix.
x - the first source vector.
beta - a scale factor.
y - the second source vector, this is also the vector where results are stored.

dger

public void dger(float alpha,
                 FloatMatrix1D x,
                 FloatMatrix1D y,
                 FloatMatrix2D A)
Description copied from interface: FloatBlas
Performs a rank 1 update; A = A + alpha*x*y'. Example:
         A = { {6,5}, {7,6} }, x = {1,2}, y = {3,4}, alpha = 1 -->
         A = { {9,9}, {13,14} }
 
 

Specified by:
dger in interface FloatBlas
Parameters:
alpha - a scalar.
x - an m element vector.
y - an n element vector.
A - an m by n matrix.

dnrm2

public float dnrm2(FloatMatrix1D x)
Description copied from interface: FloatBlas
Return the 2-norm; sqrt(x[0]^2 + x[1]^2 + ...). In fact equivalent to Math.sqrt(Algebra.DEFAULT.norm2(x)).

Specified by:
dnrm2 in interface FloatBlas
Parameters:
x - the vector.

drot

public void drot(FloatMatrix1D x,
                 FloatMatrix1D y,
                 float c,
                 float s)
Description copied from interface: FloatBlas
Applies a givens plane rotation to (x,y); x = c*x + s*y; y = c*y - s*x.

Specified by:
drot in interface FloatBlas
Parameters:
x - the first vector.
y - the second vector.
c - the cosine of the angle of rotation.
s - the sine of the angle of rotation.

drotg

public void drotg(float a,
                  float b,
                  float[] rotvec)
Description copied from interface: FloatBlas
Constructs a Givens plane rotation for (a,b). Taken from the LINPACK translation from FORTRAN to Java, interface slightly modified. In the LINPACK listing DROTG is attributed to Jack Dongarra

Specified by:
drotg in interface FloatBlas
Parameters:
a - rotational elimination parameter a.
b - rotational elimination parameter b.
rotvec - Must be at least of length 4. On output contains the values {a,b,c,s}.

dscal

public void dscal(float alpha,
                  FloatMatrix1D x)
Description copied from interface: FloatBlas
Vector scaling; x = alpha*x. In fact equivalent to x.assign(cern.jet.math.Functions.mult(alpha)).

Specified by:
dscal in interface FloatBlas
Parameters:
alpha - a scale factor.
x - the first vector.

dscal

public void dscal(float alpha,
                  FloatMatrix2D A)
Description copied from interface: FloatBlas
Matrix scaling; A = alpha*A. In fact equivalent to A.assign(cern.jet.math.Functions.mult(alpha)).

Specified by:
dscal in interface FloatBlas
Parameters:
alpha - a scale factor.
A - the matrix.

dswap

public void dswap(FloatMatrix1D x,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Swaps the elements of two vectors; y <==> x. In fact equivalent to y.swap(x).

Specified by:
dswap in interface FloatBlas
Parameters:
x - the first vector.
y - the second vector.

dswap

public void dswap(FloatMatrix2D A,
                  FloatMatrix2D B)
Description copied from interface: FloatBlas
Swaps the elements of two matrices; B <==> A.

Specified by:
dswap in interface FloatBlas
Parameters:
A - the first matrix.
B - the second matrix.

dsymv

public void dsymv(boolean isUpperTriangular,
                  float alpha,
                  FloatMatrix2D A,
                  FloatMatrix1D x,
                  float beta,
                  FloatMatrix1D y)
Description copied from interface: FloatBlas
Symmetric matrix-vector multiplication; y = alpha*A*x + beta*y. Where alpha and beta are scalars, x and y are n element vectors and A is an n by n symmetric matrix. A can be in upper or lower triangular format.

Specified by:
dsymv in interface FloatBlas
Parameters:
isUpperTriangular - is A upper triangular or lower triangular part to be used?
alpha - scaling factor.
A - the source matrix.
x - the first source vector.
beta - scaling factor.
y - the second vector holding source and destination.

dtrmv

public void dtrmv(boolean isUpperTriangular,
                  boolean transposeA,
                  boolean isUnitTriangular,
                  FloatMatrix2D A,
                  FloatMatrix1D x)
Description copied from interface: FloatBlas
Triangular matrix-vector multiplication; x = A*x or x = A'*x. Where x is an n element vector and A is an n by n unit, or non-unit, upper or lower triangular matrix.

Specified by:
dtrmv in interface FloatBlas
Parameters:
isUpperTriangular - is A upper triangular or lower triangular?
transposeA - set this flag to indicate that the multiplication shall be performed on A'.
isUnitTriangular - true --> A is assumed to be unit triangular; false --> A is not assumed to be unit triangular
A - the source matrix.
x - the vector holding source and destination.

idamax

public int idamax(FloatMatrix1D x)
Description copied from interface: FloatBlas
Returns the index of largest absolute value; i such that |x[i]| == max(|x[0]|,|x[1]|,...)..

Specified by:
idamax in interface FloatBlas
Parameters:
x - the vector to search through.
Returns:
the index of largest absolute value (-1 if x is empty).

Parallel Colt 0.7.2

Jump to the Parallel Colt Homepage