\donttest{
# 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)
}bdblockMult
bdblockMult
LINEAR_ALGEBRA
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
7 See Also
- bdblockSum for block-based matrix addition
- bdblockSubstract for block-based matrix subtraction