QR_MUMPS
|
Go to the source code of this file.
Functions/Subroutines | |
subroutine | dqrm_factorization_core (qrm_mat) |
This is the main factorization routine. It performs the factorization of all the fronts that have been assigned to the node (MPI task). The whole process is OpenMP parallel. More... | |
subroutine | fill_queue () |
logical function | front_sched_ops (front) |
logical function | front_sched_act (front) |
subroutine | check_facto_over () |
subroutine | panel (task, thn, work, flops) |
subroutine | update (task, thn, work, flops) |
subroutine | activate (task, thn, flops) |
subroutine | assemble (task, thn) |
subroutine | clean (task, thn) |
subroutine dqrm_factorization_core::activate | ( | type(qrm_task_type) | task, |
integer | thn, | ||
real(kind(1.d0)) | flops | ||
) |
Definition at line 702 of file dqrm_factorization_core.F90.
References dqrm_activate_front(), qrm_error_mod::qrm_abort_, dqrm_fdata_mod::qrm_activable_, dqrm_fdata_mod::qrm_active_, dqrm_fdata_mod::qrm_done_, qrm_error_mod::qrm_err_act_restore(), qrm_error_mod::qrm_err_act_save(), qrm_error_mod::qrm_err_check(), qrm_queue_mod::qrm_queue_push(), qrm_queue_mod::qrm_queue_rm(), and dqrm_fdata_mod::qrm_ready_.
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().
subroutine dqrm_factorization_core::assemble | ( | type(qrm_task_type) | task, |
integer | thn | ||
) |
Definition at line 788 of file dqrm_factorization_core.F90.
References qrm_error_mod::qrm_abort_, dqrm_fdata_mod::qrm_active_, dqrm_fdata_mod::qrm_done_, qrm_error_mod::qrm_err_act_restore(), qrm_error_mod::qrm_err_act_save(), and qrm_error_mod::qrm_err_check().
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().
subroutine dqrm_factorization_core::check_facto_over | ( | ) |
Definition at line 471 of file dqrm_factorization_core.F90.
References qrm_task_mod::qrm_sched_task(), and qrm_task_mod::qrm_task_exit_.
Referenced by fill_queue().
subroutine dqrm_factorization_core::clean | ( | type(qrm_task_type) | task, |
integer | thn | ||
) |
Definition at line 868 of file dqrm_factorization_core.F90.
References dqrm_clean_front(), qrm_error_mod::qrm_abort_, dqrm_fdata_mod::qrm_done_, qrm_error_mod::qrm_err_act_restore(), qrm_error_mod::qrm_err_act_save(), qrm_error_mod::qrm_err_check(), and qrm_queue_mod::qrm_queue_rm().
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().
subroutine dqrm_factorization_core | ( | type(dqrm_spmat_type), target | qrm_mat | ) |
This is the main factorization routine. It performs the factorization of all the fronts that have been assigned to the node (MPI task). The whole process is OpenMP parallel.
This factorization is completely dynamic and results in an out of order execution of computational and symbolic tasks. Each front is cut into block-columns. Computational tasks are scheduled on a per-front or per-block-column basis according to a graph of dependencies; each task is pushed on the queue of the thread who owns the related front. The ownership of a front is fixed at the moment where the front is activated. If a thread runs out of tasks to perform (i.e., its queue is empty) it can steal tasks from other threads (see the qrm_task_mod module for the details).
Six different types of tasks can be executed by a thread:
[in,out] | qrm_mat | This is the main data structure associated to a problem. The dqrm_factorization_core assumes that the analysis has been done and thus that the qrm_matadata field contains meaningful stuff |
Definition at line 68 of file dqrm_factorization_core.F90.
References activate(), assemble(), clean(), fill_queue(), panel(), qrm_error_mod::qrm_abort_, qrm_task_mod::qrm_clean_task_queue(), qrm_error_mod::qrm_err_act_restore(), qrm_error_mod::qrm_err_act_save(), qrm_error_mod::qrm_err_check(), qrm_error_mod::qrm_err_push(), qrm_error_mod::qrm_err_stack, qrm_facto_flops_, qrm_queue_mod::qrm_fifo_, qrm_task_mod::qrm_get_task(), qrm_task_mod::qrm_init_task_queue(), qrm_queue_mod::qrm_lifo_, qrm_nb_, qrm_mem_mod::qrm_par_mem_finalize(), qrm_mem_mod::qrm_par_mem_init(), qrm_queue_mod::qrm_queue_free(), qrm_queue_mod::qrm_queue_push(), qrm_task_mod::qrm_task_act_, qrm_task_mod::qrm_task_asm_, qrm_task_mod::qrm_task_cln_, qrm_task_mod::qrm_task_exit_, qrm_task_mod::qrm_task_pnl_, qrm_task_mod::qrm_task_queue_card(), qrm_task_mod::qrm_task_upd_, and update().
Referenced by dqrm_factorize().
subroutine dqrm_factorization_core::fill_queue | ( | ) |
Definition at line 267 of file dqrm_factorization_core.F90.
References check_facto_over(), front_sched_act(), front_sched_ops(), and qrm_queue_mod::qrm_queue_next().
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().
logical function dqrm_factorization_core::front_sched_act | ( | type(dqrm_front_type) | front | ) |
Definition at line 437 of file dqrm_factorization_core.F90.
References qrm_task_mod::qrm_sched_task(), and qrm_task_mod::qrm_task_act_.
Referenced by fill_queue().
logical function dqrm_factorization_core::front_sched_ops | ( | type(dqrm_front_type) | front | ) |
Definition at line 323 of file dqrm_factorization_core.F90.
References qrm_task_mod::qrm_sched_task(), qrm_task_mod::qrm_task_asm_, qrm_task_mod::qrm_task_cln_, qrm_task_mod::qrm_task_pnl_, and qrm_task_mod::qrm_task_upd_.
Referenced by fill_queue().
subroutine dqrm_factorization_core::panel | ( | type(qrm_task_type) | task, |
integer | thn, | ||
real(kind(1.d0)), dimension(:) | work, | ||
real(kind(1.d0)) | flops | ||
) |
Definition at line 498 of file dqrm_factorization_core.F90.
References dqrm_fdata_mod::qrm_busy_, dqrm_fdata_mod::qrm_done_, dqrm_fdata_mod::qrm_factorized_, qrm_task_mod::qrm_sched_task(), and qrm_task_mod::qrm_task_upd_.
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().
subroutine dqrm_factorization_core::update | ( | type(qrm_task_type) | task, |
integer | thn, | ||
real(kind(1.d0)), dimension(:) | work, | ||
real(kind(1.d0)) | flops | ||
) |
Definition at line 608 of file dqrm_factorization_core.F90.
References dqrm_fdata_mod::qrm_busy_, dqrm_fdata_mod::qrm_done_, dqrm_fdata_mod::qrm_factorized_, qrm_task_mod::qrm_sched_task(), and qrm_task_mod::qrm_task_pnl_.
Referenced by _qrm_factorization_core(), and dqrm_factorization_core().