Class defining batches of mesh functions.
Definition at line 159 of file batch.F90.
|
integer, public | nst |
| number of functions in the batch More...
|
|
integer, public | dim |
| Spinor dimension of the state (one, or two for spinors) More...
|
|
integer, dimension(:), allocatable, public | ist |
| map from an global to local index More...
|
|
integer, public | nst_linear |
| nst_linear = nst * stddim More...
|
|
real(real64), dimension(:, :, :), pointer, public, contiguous | dff |
| pointer to real mesh functions: indices are (1:np, 1:dim, 1:nst) More...
|
|
complex(real64), dimension(:, :, :), pointer, public, contiguous | zff |
| pointer to complex mesh functions: indices are (1:np, 1:dim, 1:nst) More...
|
|
real(real64), dimension(:, :), pointer, public, contiguous | dff_linear |
| pointer to real mesh functions: indices are (1:np, 1:nst_linear) More...
|
|
complex(real64), dimension(:, :), pointer, public, contiguous | zff_linear |
| pointer to complex mesh functions: indices are (1:np, 1:nst_linear) More...
|
|
real(real64), dimension(:, :), pointer, public, contiguous | dff_pack |
| pointer to real mesh functions: indices are (1:nst_linear, 1:np) More...
|
|
complex(real64), dimension(:, :), pointer, public, contiguous | zff_pack |
| pointer to complex mesh functions: indices are (1:nst_linear, 1:np) More...
|
|
integer(int64), dimension(1:2), public | pack_size |
| pack_size = [pad_pow2(nst_linear), np] (see math_oct_m::pad_pow2) More...
|
|
integer(int64), dimension(1:2), public | pack_size_real |
| pack_size_real = pack_size; if batch type is complex, then pack_size_real(1) = 2*pack_size(1) More...
|
|
type(accel_mem_t), public | ff_device |
| pointer to device memory More...
|
|
|
procedure | check_compatibility_with => batch_check_compatibility_with |
| check whether two batches have compatible dimensions (and type) More...
|
|
procedure | clone_to => batch_clone_to |
| clone a batch to a new batch More...
|
|
procedure | clone_to_array => batch_clone_to_array |
|
procedure | copy_to => batch_copy_to |
| make a copy of a batch More...
|
|
procedure | copy_data_to => batch_copy_data_to |
| copy data to another batch. More...
|
|
procedure | do_pack => batch_do_pack |
| pack the data in a batch More...
|
|
procedure | do_unpack => batch_do_unpack |
| unpack a batch More...
|
|
procedure | finish_unpack => batch_finish_unpack |
| finish the unpacking if do_unpack() was called with async=.true. More...
|
|
procedure | end => batch_end |
| finalize a batch and release allocated memory, if necessary More...
|
|
procedure | inv_index => batch_inv_index |
| inverse index lookup More...
|
|
procedure | is_packed => batch_is_packed |
|
procedure | ist_idim_to_linear => batch_ist_idim_to_linear |
| direct index lookup More...
|
|
procedure | linear_to_idim => batch_linear_to_idim |
| extract idim from linear index More...
|
|
procedure | linear_to_ist => batch_linear_to_ist |
| get state index ist from linear (combined dim and nst) index More...
|
|
procedure | pack_total_size => batch_pack_total_size |
|
procedure | remote_access_start => batch_remote_access_start |
| start remote access to a batch on another node More...
|
|
procedure | remote_access_stop => batch_remote_access_stop |
| stop the remote access to the batch More...
|
|
procedure | status => batch_status |
| return the status of a batch More...
|
|
procedure | type => batch_type |
| return the type of a batch More...
|
|
procedure | type_as_int => batch_type_as_integer |
| For debuging purpose only. More...
|
|
procedure, private | dallocate_unpacked_host => dbatch_allocate_unpacked_host |
| allocate host (CPU) memory for unpacked data of type TYPE_FLOAT More...
|
|
procedure, private | zallocate_unpacked_host => zbatch_allocate_unpacked_host |
| allocate host (CPU) memory for unpacked data of type TYPE_CMPLX More...
|
|
procedure, private | allocate_unpacked_host => batch_allocate_unpacked_host |
| allocate host (CPU) memory for unpacked data More...
|
|
procedure, private | dallocate_packed_host => dbatch_allocate_packed_host |
| allocate host (CPU) memory for packed data of type TYPE_FLOAT More...
|
|
procedure, private | zallocate_packed_host => zbatch_allocate_packed_host |
| allocate host (CPU) memory for packed data of type TYPE_CMPLX More...
|
|
procedure, private | allocate_packed_host => batch_allocate_packed_host |
| allocate host (CPU) memory for packed data More...
|
|
procedure, private | allocate_packed_device => batch_allocate_packed_device |
| allocate device (GPU) memory for packed data More...
|
|
procedure, private | deallocate_unpacked_host => batch_deallocate_unpacked_host |
| release unpacked host memory More...
|
|
procedure, private | deallocate_packed_host => batch_deallocate_packed_host |
| release packed host memory More...
|
|
procedure, private | deallocate_packed_device => batch_deallocate_packed_device |
| release packed device memory More...
|
|
procedure batch_oct_m::batch_t::end |
|
private |
finalize a batch and release allocated memory, if necessary
If the batch was initialized with 'external' memory, this routine ensures that this memory is up-to-date, when the batch is finalized. This means, that the data is copied from the device (If requested) and unpacked.
- Parameters
-
[in] | copy | do we need to copy data from the device? Default = .true. (from batch_oct_m::batch_do_uppack) |
Definition at line 229 of file batch.F90.
procedure, private batch_oct_m::batch_t::dallocate_unpacked_host |
|
private |
allocate host (CPU) memory for unpacked data of type TYPE_FLOAT
This routine takes care of the allocating the memory on the host. If requested (special_memory
), pinned memory can be allocated, which optimizes the transfer to GPUs under certain conditions.
Definition at line 241 of file batch.F90.
procedure, private batch_oct_m::batch_t::zallocate_unpacked_host |
|
private |
allocate host (CPU) memory for unpacked data of type TYPE_CMPLX
This routine takes care of the allocating the memory on the host. If requested (special_memory
), pinned memory can be allocated, which optimizes the transfer to GPUs under certain conditions.
Definition at line 243 of file batch.F90.
procedure, private batch_oct_m::batch_t::dallocate_packed_host |
|
private |
allocate host (CPU) memory for packed data of type TYPE_FLOAT
This routine takes care of the allocating the memory on the host. If requested (special_memory
), pinned memory can be allocated, which optimizes the transfer to GPUs under certain conditions.
Definition at line 247 of file batch.F90.
procedure, private batch_oct_m::batch_t::zallocate_packed_host |
|
private |
allocate host (CPU) memory for packed data of type TYPE_CMPLX
This routine takes care of the allocating the memory on the host. If requested (special_memory
), pinned memory can be allocated, which optimizes the transfer to GPUs under certain conditions.
Definition at line 249 of file batch.F90.
integer batch_oct_m::batch_t::status_host |
|
private |
packing status in CPU memory
If Octopus runs on GPU, this indicates the status on the CPU. It can only be BATCH_NOT_PACKED and BATCH_PACKED. This makes transfers more efficient: usually we allocate a batch as packed on the CPU, then call do_pack to copy it to the GPU. In this case, it is really a copy. If the batch is unpacked on the CPU, we need to transpose in addition which makes it much slower.
Definition at line 186 of file batch.F90.