bdblockMult

OTHER

1 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.

2 Usage

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

3 Arguments

Parameter Description
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.

4 Value

Matrix or vector containing the result of A * B.

5 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.

6 Examples

Code
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)

7 See Also