PMatrixMemoryPoolModule Module

A module for handling scratch memory for distributed matrix multiplication.



Contents


Interfaces

public interface MatrixMemoryPool_p

  • private pure function ConstructMatrixMemoryPool_p(matrix) result(this)

    Construct Distributed Matrix Memory Pool object.

    Arguments

    Type IntentOptional AttributesName
    type(Matrix_ps), intent(in) :: matrix

    The associated distributed sparse matrix.

    Return Value type(MatrixMemoryPool_p)

    A constructed Matrix Memory Pool object.

public interface DestructMatrixMemoryPool

  • private subroutine DestructMatrixMemoryPool_p(this)

    Destruct a Distributed Matrix Memory Pool object.

    Arguments

    Type IntentOptional AttributesName
    type(MatrixMemoryPool_p), intent(inout) :: this

    Distributed Matrix Memory Pool object to destroy.

public interface CheckMemoryPoolValidity

  • private pure function CheckMemoryPoolValidity_p(this, matrix) result(isvalid)

    Checks if a given distributed memory pool has been validly allocated to handle the given parameters.

    Arguments

    Type IntentOptional AttributesName
    type(MatrixMemoryPool_p), intent(in) :: this

    The memory pool to check.

    type(Matrix_ps), intent(in) :: matrix

    The associated matrix to check against.

    Return Value logical

    True if the memory pool is valid.


Derived Types

type, public :: MatrixMemoryPool_p

A memory pool datatype that can be reused for matrix matrix multiplication. this is to prevent excessive alloc/dealloc.

Components

TypeVisibility AttributesNameInitial
type(MatrixMemoryPool_lr), public, DIMENSION(:,:), ALLOCATABLE:: grid_r

Grid of local pools.

type(MatrixMemoryPool_lc), public, DIMENSION(:,:), ALLOCATABLE:: grid_c

Grid of local pools (complex).

Constructor

private pure function ConstructMatrixMemoryPool_p(matrix)

Construct Distributed Matrix Memory Pool object.