JCublasJava/src/main/java/jcuda/jcublas/JCublas.java
public static void cublasSgemm(char transa, char transb, int m, int n, int k, float alpha, Pointer A, int lda, Pointer B, int ldb, float beta, Pointer C, int ldc)
    {
        cublasSgemmNative(transa, transb, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
        checkResultBLAS();
    }
public static void cublasSgemm(char transa, char transb, int m, int n, int k, float alpha, Pointer A, int lda, Pointer B, int ldb, float beta, Pointer C, int ldc)
    {
        cublasSgemmNative(transa, transb, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
        checkResultBLAS();
    }
<pre>
void
cublasSgemm (char transa, char transb, int m, int n, int k, float alpha,
const float *A, int lda, const float *B, int ldb, float beta,
float *C, int ldc)

computes the product of matrix A and matrix B, multiplies the result
by a scalar alpha, and adds the sum to the product of matrix C and
scalar beta. sgemm() performs one of the matrix-matrix operations:

C = alpha * op(A) * op(B) + beta * C,

where op(X) is one of

op(X) = X   or   op(X) = transpose(X)

alpha and beta are single precision scalars, and A, B and C are
matrices consisting of single precision elements, with op(A) an m x k
matrix, op(B) a k x n matrix, and C an m x n matrix. Matrices A, B,
and C are stored in column major format, and lda, ldb, and ldc are
the leading dimensions of the two-dimensional arrays containing A,
B, and C.

Input
-----
transa specifies op(A). If transa = 'n' or 'N', op(A) = A. If
transa = 't', 'T', 'c', or 'C', op(A) = transpose(A)
transb specifies op(B). If transb = 'n' or 'N', op(B) = B. If
transb = 't', 'T', 'c', or 'C', op(B) = transpose(B)
m      number of rows of matrix op(A) and rows of matrix C
n      number of columns of matrix op(B) and number of columns of C
k      number of columns of matrix op(A) and number of rows of op(B)
alpha  single precision scalar multiplier applied to op(A)op(B)
A      single precision array of dimensions (lda, k) if transa =
'n' or 'N'), and of dimensions (lda, m) otherwise. When transa =
'N' or 'n' then lda must be at least  max( 1, m ), otherwise lda
must be at least max(1, k).
lda    leading dimension of two-dimensional array used to store matrix A
B      single precision array of dimensions  (ldb, n) if transb =
'n' or 'N'), and of dimensions (ldb, k) otherwise. When transb =
'N' or 'n' then ldb must be at least  max (1, k), otherwise ldb
must be at least max (1, n).
ldb    leading dimension of two-dimensional array used to store matrix B
beta   single precision scalar multiplier applied to C. If 0, C does
not have to be a valid input
C      single precision array of dimensions (ldc, n). ldc must be at
least max (1, m).
ldc    leading dimension of two-dimensional array used to store matrix C

Output
------
C      updated based on C = alpha * op(A)*op(B) + beta * C

Reference: http://www.netlib.org/blas/sgemm.f

Error status for this function can be retrieved via cublasGetError().

Error Status
------------
CUBLAS_STATUS_NOT_INITIALIZED  if CUBLAS library has not been initialized
CUBLAS_STATUS_INVALID_VALUE    if any of m, n, or k are < 0
CUBLAS_STATUS_EXECUTION_FAILED if function failed to launch on GPU
</pre>