Learn R Programming

BigDataStatMeth (version 1.0.3)

bdblockMult: Block-Based Matrix Multiplication

Description

Performs efficient matrix multiplication using block-based algorithms. The function supports various input combinations (matrix-matrix, matrix-vector, vector-vector) and provides options for parallel processing and block-based computation.

Usage

bdblockMult(
  A,
  B,
  block_size = NULL,
  paral = NULL,
  byBlocks = TRUE,
  threads = NULL
)

Value

Matrix or vector containing the result of A * B.

Arguments

A

Matrix or vector. First input operand.

B

Matrix or vector. Second input operand.

block_size

Integer. Block size for computation. If NULL, uses maximum allowed block size.

paral

Logical. If TRUE, enables parallel computation. Default is FALSE.

byBlocks

Logical. If TRUE (default), forces block-based computation for large matrices. Can be set to FALSE to disable blocking.

threads

Integer. Number of threads for parallel computation. If NULL, uses half of available threads or maximum allowed threads.

Details

This function implements block-based matrix multiplication algorithms optimized for cache efficiency and memory usage. Key features:

  • Input combinations supported:

    • Matrix-matrix multiplication

    • Matrix-vector multiplication (both left and right)

    • Vector-vector multiplication

  • Performance optimizations:

    • Block-based computation for cache efficiency

    • Parallel processing for large matrices

    • Automatic block size selection

    • Memory-efficient implementation

The function automatically selects the appropriate multiplication method based on input types and sizes. For large matrices (>2.25e+08 elements), block-based computation is used by default.

References

  • Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations, 4th Edition. Johns Hopkins University Press.

  • Kumar, V. et al. (1994). Introduction to Parallel Computing: Design and Analysis of Algorithms. Benjamin/Cummings Publishing Company.

See Also

  • bdblockSum for block-based matrix addition

  • bdblockSubstract for block-based matrix subtraction

Examples

Run this code
if (FALSE) {
library(BigDataStatMeth)

# Matrix-matrix multiplication
N <- 2500
M <- 400
nc <- 4

set.seed(555)
mat <- matrix(rnorm(N*M, mean=0, sd=10), N, M)

# Parallel block multiplication
result <- bdblockMult(mat, mat,
                      paral = TRUE,
                      threads = nc)

# Matrix-vector multiplication
vec <- rnorm(M)
result_mv <- bdblockMult(mat, vec,
                         paral = TRUE,
                         threads = nc)
}

Run the code above in your browser using DataLab