m_backend_setup Module

Creates the backend and allocators for the backend this build targets, so that the solver driver (xcompact.f90) needs no backend-specific code.


Uses

  • module~~m_backend_setup~~UsesGraph module~m_backend_setup m_backend_setup cudafor cudafor module~m_backend_setup->cudafor m_mpi m_mpi module~m_backend_setup->m_mpi module~m_allocator m_allocator module~m_backend_setup->module~m_allocator module~m_base_backend m_base_backend module~m_backend_setup->module~m_base_backend module~m_common m_common module~m_backend_setup->module~m_common module~m_cuda_allocator m_cuda_allocator module~m_backend_setup->module~m_cuda_allocator module~m_cuda_backend m_cuda_backend module~m_backend_setup->module~m_cuda_backend module~m_cuda_common m_cuda_common module~m_backend_setup->module~m_cuda_common module~m_cuda_errors m_cuda_errors module~m_backend_setup->module~m_cuda_errors module~m_logger m_logger module~m_backend_setup->module~m_logger module~m_mesh m_mesh module~m_backend_setup->module~m_mesh module~m_omp_backend m_omp_backend module~m_backend_setup->module~m_omp_backend module~m_omp_common m_omp_common module~m_backend_setup->module~m_omp_common module~m_omptgt_allocator m_omptgt_allocator module~m_backend_setup->module~m_omptgt_allocator module~m_omptgt_backend m_omptgt_backend module~m_backend_setup->module~m_omptgt_backend module~m_omptgt_common m_omptgt_common module~m_backend_setup->module~m_omptgt_common omp_lib omp_lib module~m_backend_setup->omp_lib module~m_allocator->module~m_common module~m_field m_field module~m_allocator->module~m_field module~m_base_backend->module~m_allocator module~m_base_backend->module~m_common module~m_base_backend->module~m_logger module~m_base_backend->module~m_mesh iso_c_binding iso_c_binding module~m_base_backend->iso_c_binding module~m_base_backend->module~m_field module~m_poisson_fft m_poisson_fft module~m_base_backend->module~m_poisson_fft module~m_tdsops m_tdsops module~m_base_backend->module~m_tdsops module~m_common->m_mpi module~m_common->module~m_logger module~m_cuda_allocator->module~m_allocator module~m_cuda_allocator->module~m_common module~m_cuda_allocator->module~m_mesh module~m_cuda_allocator->module~m_field module~m_cuda_backend->cudafor module~m_cuda_backend->m_mpi module~m_cuda_backend->module~m_allocator module~m_cuda_backend->module~m_base_backend module~m_cuda_backend->module~m_common module~m_cuda_backend->module~m_cuda_allocator module~m_cuda_backend->module~m_cuda_common module~m_cuda_backend->module~m_cuda_errors module~m_cuda_backend->module~m_logger module~m_cuda_backend->module~m_mesh module~m_cuda_backend->iso_c_binding module~m_cuda_exec_dist m_cuda_exec_dist module~m_cuda_backend->module~m_cuda_exec_dist module~m_cuda_exec_thom m_cuda_exec_thom module~m_cuda_backend->module~m_cuda_exec_thom module~m_cuda_kernels_dist m_cuda_kernels_dist module~m_cuda_backend->module~m_cuda_kernels_dist module~m_cuda_kernels_fieldops m_cuda_kernels_fieldops module~m_cuda_backend->module~m_cuda_kernels_fieldops module~m_cuda_kernels_reorder m_cuda_kernels_reorder module~m_cuda_backend->module~m_cuda_kernels_reorder module~m_cuda_poisson_fft m_cuda_poisson_fft module~m_cuda_backend->module~m_cuda_poisson_fft module~m_cuda_sendrecv m_cuda_sendrecv module~m_cuda_backend->module~m_cuda_sendrecv module~m_cuda_tdsops m_cuda_tdsops module~m_cuda_backend->module~m_cuda_tdsops module~m_cuda_backend->module~m_field module~m_cuda_backend->module~m_tdsops module~m_cuda_errors->cudafor module~m_cuda_errors->module~m_logger module~m_logger->m_mpi iso_fortran_env iso_fortran_env module~m_logger->iso_fortran_env module~m_mesh->m_mpi module~m_mesh->module~m_common module~m_mesh->module~m_logger module~m_mesh->module~m_field module~m_mesh_content m_mesh_content module~m_mesh->module~m_mesh_content module~m_omp_backend->m_mpi module~m_omp_backend->module~m_allocator module~m_omp_backend->module~m_base_backend module~m_omp_backend->module~m_common module~m_omp_backend->module~m_logger module~m_omp_backend->module~m_mesh module~m_omp_backend->module~m_omp_common module~m_exec_thom m_exec_thom module~m_omp_backend->module~m_exec_thom module~m_omp_backend->module~m_field module~m_omp_exec_dist m_omp_exec_dist module~m_omp_backend->module~m_omp_exec_dist module~m_omp_sendrecv m_omp_sendrecv module~m_omp_backend->module~m_omp_sendrecv module~m_ordering m_ordering module~m_omp_backend->module~m_ordering module~m_omp_backend->module~m_tdsops module~m_omptgt_allocator->module~m_allocator module~m_omptgt_allocator->module~m_common module~m_omptgt_allocator->module~m_logger module~m_omptgt_allocator->module~m_mesh module~m_omptgt_allocator->omp_lib module~m_omptgt_allocator->iso_c_binding module~m_omptgt_allocator->module~m_field module~m_omptgt_backend->m_mpi module~m_omptgt_backend->module~m_allocator module~m_omptgt_backend->module~m_base_backend module~m_omptgt_backend->module~m_common module~m_omptgt_backend->module~m_logger module~m_omptgt_backend->module~m_mesh module~m_omptgt_backend->module~m_omptgt_common module~m_omptgt_backend->omp_lib module~m_omptgt_backend->module~m_field module~m_omptgt_device_info m_omptgt_device_info module~m_omptgt_backend->module~m_omptgt_device_info module~m_omptgt_exec_dist m_omptgt_exec_dist module~m_omptgt_backend->module~m_omptgt_exec_dist module~m_omptgt_exec_thom m_omptgt_exec_thom module~m_omptgt_backend->module~m_omptgt_exec_thom module~m_omptgt_kernels_fieldops m_omptgt_kernels_fieldops module~m_omptgt_backend->module~m_omptgt_kernels_fieldops module~m_omptgt_sendrecv m_omptgt_sendrecv module~m_omptgt_backend->module~m_omptgt_sendrecv module~m_omptgt_tdsops m_omptgt_tdsops module~m_omptgt_backend->module~m_omptgt_tdsops module~m_omptgt_backend->module~m_tdsops module~m_omptgt_common->module~m_common module~m_omptgt_common->module~m_logger module~m_omptgt_common->omp_lib module~m_omptgt_common->iso_c_binding module~m_cuda_exec_dist->cudafor module~m_cuda_exec_dist->module~m_common module~m_cuda_exec_dist->module~m_cuda_common module~m_cuda_exec_dist->module~m_cuda_kernels_dist module~m_cuda_exec_dist->module~m_cuda_sendrecv module~m_cuda_exec_dist->module~m_cuda_tdsops module~m_cuda_exec_thom->cudafor module~m_cuda_exec_thom->module~m_common module~m_cuda_exec_thom->module~m_cuda_tdsops module~m_cuda_kernels_thom m_cuda_kernels_thom module~m_cuda_exec_thom->module~m_cuda_kernels_thom module~m_cuda_kernels_dist->cudafor module~m_cuda_kernels_dist->module~m_common module~m_cuda_kernels_fieldops->cudafor module~m_cuda_kernels_fieldops->module~m_common module~m_cuda_kernels_fieldops->module~m_cuda_common module~m_cuda_kernels_reorder->cudafor module~m_cuda_kernels_reorder->module~m_common module~m_cuda_kernels_reorder->module~m_cuda_common module~m_cuda_poisson_fft->cudafor module~m_cuda_poisson_fft->m_mpi module~m_cuda_poisson_fft->module~m_common module~m_cuda_poisson_fft->module~m_cuda_allocator module~m_cuda_poisson_fft->module~m_cuda_errors module~m_cuda_poisson_fft->module~m_logger module~m_cuda_poisson_fft->module~m_mesh module~m_cuda_poisson_fft->iso_c_binding module~m_cuda_poisson_fft->module~m_cuda_sendrecv module~m_cuda_poisson_fft->module~m_field module~m_cuda_poisson_fft->module~m_poisson_fft module~m_cuda_poisson_fft->module~m_tdsops cufft cufft module~m_cuda_poisson_fft->cufft cufftXt cufftXt module~m_cuda_poisson_fft->cufftXt module~m_cuda_spectral m_cuda_spectral module~m_cuda_poisson_fft->module~m_cuda_spectral module~m_cuda_sendrecv->cudafor module~m_cuda_sendrecv->m_mpi module~m_cuda_sendrecv->module~m_common module~m_cuda_sendrecv->module~m_cuda_errors module~m_cuda_sendrecv->module~m_logger module~m_cuda_tdsops->module~m_common module~m_cuda_tdsops->module~m_tdsops module~m_exec_thom->module~m_common module~m_exec_thom->module~m_tdsops module~m_omp_kernels_thom m_omp_kernels_thom module~m_exec_thom->module~m_omp_kernels_thom module~m_field->module~m_common module~m_field->iso_c_binding module~m_mesh_content->module~m_common module~m_mesh_content->module~m_logger module~m_omp_exec_dist->module~m_common module~m_omp_exec_dist->module~m_omp_common module~m_omp_exec_dist->module~m_omp_sendrecv module~m_omp_exec_dist->module~m_tdsops module~m_omp_kernels_dist m_omp_kernels_dist module~m_omp_exec_dist->module~m_omp_kernels_dist module~m_omp_sendrecv->m_mpi module~m_omp_sendrecv->module~m_common module~m_omp_sendrecv->module~m_logger module~m_omptgt_device_info->iso_c_binding module~m_omptgt_exec_dist->module~m_common module~m_omptgt_exec_dist->module~m_logger module~m_omptgt_exec_dist->module~m_omptgt_common module~m_omptgt_exec_dist->module~m_omptgt_sendrecv module~m_omptgt_exec_dist->module~m_omptgt_tdsops module~m_omptgt_kernels_dist m_omptgt_kernels_dist module~m_omptgt_exec_dist->module~m_omptgt_kernels_dist module~m_omptgt_exec_thom->module~m_common module~m_omptgt_exec_thom->module~m_omptgt_tdsops module~m_omptgt_kernels_thom m_omptgt_kernels_thom module~m_omptgt_exec_thom->module~m_omptgt_kernels_thom module~m_omptgt_kernels_fieldops->module~m_common module~m_omptgt_kernels_fieldops->module~m_omptgt_common module~m_omptgt_sendrecv->m_mpi module~m_omptgt_sendrecv->module~m_common module~m_omptgt_sendrecv->module~m_omptgt_common module~m_omptgt_sendrecv->iso_c_binding module~m_omptgt_tdsops->module~m_common module~m_omptgt_tdsops->module~m_omptgt_common module~m_omptgt_tdsops->module~m_tdsops module~m_ordering->module~m_common module~m_poisson_fft->module~m_common module~m_poisson_fft->module~m_logger module~m_poisson_fft->module~m_mesh module~m_poisson_fft->module~m_field module~m_poisson_fft->module~m_tdsops module~m_tdsops->module~m_common module~m_tdsops->module~m_logger module~m_cuda_kernels_thom->cudafor module~m_cuda_kernels_thom->module~m_common module~m_cuda_spectral->cudafor module~m_cuda_spectral->module~m_common module~m_omp_kernels_dist->module~m_common module~m_omp_kernels_dist->module~m_omp_common module~m_omp_kernels_dist->omp_lib module~m_omp_kernels_thom->module~m_common module~m_omp_kernels_thom->module~m_omp_common module~m_omptgt_kernels_dist->module~m_common module~m_omptgt_kernels_dist->module~m_omptgt_common module~m_omptgt_kernels_thom->module~m_common module~m_omptgt_kernels_thom->module~m_omptgt_common

Used by

  • module~~m_backend_setup~~UsedByGraph module~m_backend_setup m_backend_setup program~xcompact xcompact program~xcompact->module~m_backend_setup

Variables

Type Visibility Attributes Name Initial
character(len=*), public, parameter :: backend_name = 'CUDA'

Derived Types

type, public ::  backend_setup_t

Owns the backend and allocators. The pointer components alias concrete members of this same object, so instances must be declared with the TARGET attribute and must never be copied or assigned.

Components

Type Visibility Attributes Name Initial
class(base_backend_t), public, pointer :: backend => null()
class(allocator_t), public, pointer :: allocator => null()
type(allocator_t), public, pointer :: host_allocator => null()
type(cuda_backend_t), public :: cuda_backend
type(cuda_allocator_t), public :: cuda_allocator
type(omptgt_backend_t), public :: omptgt_backend
type(omptgt_allocator_t), public :: omptgt_allocator
type(omp_backend_t), public :: omp_backend
type(allocator_t), public :: omp_allocator

Type-Bound Procedures

procedure, public :: init