50% off: Unlimited data and AI learning.
State of Data and AI Literacy Report 2025

lgspline (version 0.2.0)

matmult_block_diagonal: Multiply Block Diagonal Matrices in Parallel

Description

Multiplies two lists of matrices that form block diagonal structures, with optional parallel processing.

Usage

matmult_block_diagonal(
  A,
  B,
  K,
  parallel,
  cl,
  chunk_size,
  num_chunks,
  rem_chunks
)

Value

List containing products of corresponding blocks

Arguments

A

List of matrices forming first block diagonal matrix

B

List of matrices forming second block diagonal matrix

K

Number of blocks minus 1 (K)

parallel

Logical; whether to use parallel processing

cl

Cluster object for parallel processing

chunk_size

Number of blocks per chunk for parallel processing

num_chunks

Number of chunks for parallel processing

rem_chunks

Remaining blocks after chunking

Details

When parallel=TRUE, splits computation into chunks processed in parallel. Handles remainder chunks separately. Uses matmult_block_diagonal_cpp() for actual multiplication.

The function expects A and B to contain corresponding blocks that can be matrix multiplied.

Examples

Run this code
A <- list(matrix(1:4,2,2), matrix(5:8,2,2))
B <- list(matrix(1:4,2,2), matrix(5:8,2,2))
matmult_block_diagonal(A, B, K=1, parallel=FALSE, cl=NULL,
                       chunk_size=1, num_chunks=1, rem_chunks=0)

Run the code above in your browser using DataLab