H2Lib
3.0
|
BEM-Calculations on OpenCL hardware. More...
Data Structures | |
struct | _bem3d_ocl |
This structure contains geometry information for the OpenCL computation aswell as all OpenCL kernels and buffers for transferring work packages between main memory and GPU memory. More... | |
struct | _op_callbacks |
Struct of callback functions for different quadrature cases that arise in the nearfield computation. More... | |
struct | _nearfield_args |
Struct to store the parameters of the nearfield integration routine. More... | |
struct | _merge_data_nf |
Struct to store input data for multiple calls to nearfield integration routine. More... | |
Typedefs | |
typedef struct _bem3d_ocl | bem3d_ocl |
Abbreviation for struct _bem3d_ocl. | |
typedef bem3d_ocl * | pbem3d_ocl |
Abbreviation for a pointer to a bem3d_ocl object. | |
typedef enum _op_type | op_type |
Abbreviation for enum _op_type. | |
typedef struct _op_callbacks | op_callbacks |
Abbreviation for struct _op_callbacks. | |
typedef struct _nearfield_args | nearfield_args |
Abbreviation for struct _nearfield_args. | |
typedef struct _merge_data_nf | merge_data_nf |
Abbreviation for struct _merge_data_nf. | |
Enumerations | |
enum | _op_type { SLP, DLP } |
Simple Enum to distinguish between different boundary integral operators. More... | |
Functions | |
size_t | getsize_nf (void *data) |
returns the current size of taskgroup for nearfield computations. More... | |
void | cleanup_nf_task (void *data) |
Cleanup intermediate storage for nearfield computation task. More... | |
void | cleanup_nf_merge (void *data) |
Cleanup intermediate storage from a nearfield computation merge task. More... | |
void | split_nf_task (void *data, void ***split, uint *n) |
Splits a neafield computation task into smaller tasks. More... | |
size_t | getsize_nf_sing (void *data) |
returns the current size of taskgroup for singular nearfield computations. More... | |
void | cleanup_nf_sing_task (void *data) |
Cleanup intermediate storage for singular nearfield computation task. More... | |
void | cleanup_nf_sing_merge (void *data) |
Cleanup intermediate storage from a singular nearfield computation merge task. More... | |
void | split_nf_sing_task (void *data, void ***split, uint *n) |
Splits a singular neafield computation task into smaller tasks. More... | |
void | close_nf_dist (ptaskgroup tg) |
Close collection of task for disjoint triangle pairs. More... | |
void | close_nf_vert (ptaskgroup tg) |
Close collection of task for triangle pairs with common vertex. More... | |
void | close_nf_edge (ptaskgroup tg) |
Close collection of task for triangle pairs with common edge. More... | |
void | close_nf_iden (ptaskgroup tg) |
Close collection of task for identical triangle pairs. More... | |
void | merge_nf_sing (ptaskgroup tg, void **data) |
Merge a list of singular nearfield computation tasks into a single object. More... | |
void | distribute_nf_sing (ptaskgroup tg, void *data) |
Distribute computational results to their correct positions in memory. More... | |
void | add_nf_entry (pcbem3d bem, op_callbacks *op_cb, uint c, uint tt, uint ss, bool trans, field *entry) |
Adds a single singular entry to the corresponding list. More... | |
void | close_nf (ptaskgroup tg) |
Close collection of task for nearfield calculations. More... | |
void | merge_nf (ptaskgroup tg, void **data) |
Merge a list of nearfield computation tasks into a single object. More... | |
void | distribute_nf (ptaskgroup tg, void *data) |
Distribute computational results to their correct positions in memory. More... | |
Variables | |
bem3d_ocl | ocl_bem3d |
Static variable that contains OpenCL buffers and kernels for bem computations. | |
ptaskgroup | nf |
Global variable for general nearfield tasks. | |
omp_lock_t | nf_lock |
OpenMP lock for nf. | |
ptaskgroup | nf_dist |
Global variable for distant triangle pairs. | |
omp_lock_t | nf_dist_lock |
OpenMP lock for nf_dist. | |
ptaskgroup | nf_vert |
Global variable for common vertex triangle pairs. | |
omp_lock_t | nf_vert_lock |
OpenMP lock for nf_vert. | |
ptaskgroup | nf_edge |
Global variable for common edge triangle pairs. | |
omp_lock_t | nf_edge_lock |
OpenMP lock for nf_edge. | |
ptaskgroup | nf_iden |
Global variable for identical triangle pairs. | |
omp_lock_t | nf_iden_lock |
OpenMP lock for nf_iden. | |
op_callbacks | op_cb |
Global variable for integral operator callback functions. | |
BEM-Calculations on OpenCL hardware.
This modules defines various functions that are needed to compute integrals that arise in the BEM computations on OpenCL hardware, mainly for GPGPUs.
enum _op_type |
void add_nf_entry | ( | pcbem3d | bem, |
op_callbacks * | op_cb, | ||
uint | c, | ||
uint | tt, | ||
uint | ss, | ||
bool | trans, | ||
field * | entry | ||
) |
Adds a single singular entry to the corresponding list.
bem | bem3d object. |
op_cb | Struct of callback functions for all quadrature cases for the current operator. |
c | Number of common vertices for the triangle tt and ss . |
tt | First triangle. |
ss | Second triangle. |
trans | Transposed flag |
entry | Memory position where this entry should be stored lateron. |
void cleanup_nf_merge | ( | void * | data | ) |
Cleanup intermediate storage from a nearfield computation merge task.
data | Pointer to a struct of nearfield_args. |
void cleanup_nf_sing_merge | ( | void * | data | ) |
Cleanup intermediate storage from a singular nearfield computation merge task.
data | Pointer to a struct of merge_data_nf. |
void cleanup_nf_sing_task | ( | void * | data | ) |
Cleanup intermediate storage for singular nearfield computation task.
data | Pointer to a struct of merge_data_nf. |
void cleanup_nf_task | ( | void * | data | ) |
Cleanup intermediate storage for nearfield computation task.
data | Pointer to a struct of nearfield_args. |
void close_nf | ( | ptaskgroup | tg | ) |
Close collection of task for nearfield calculations.
tg | taskgroup object to be closed. |
void close_nf_dist | ( | ptaskgroup | tg | ) |
Close collection of task for disjoint triangle pairs.
tg | taskgroup object to be closed. |
void close_nf_edge | ( | ptaskgroup | tg | ) |
Close collection of task for triangle pairs with common edge.
tg | taskgroup object to be closed. |
void close_nf_iden | ( | ptaskgroup | tg | ) |
Close collection of task for identical triangle pairs.
tg | taskgroup object to be closed. |
void close_nf_vert | ( | ptaskgroup | tg | ) |
Close collection of task for triangle pairs with common vertex.
tg | taskgroup object to be closed. |
void distribute_nf | ( | ptaskgroup | tg, |
void * | data | ||
) |
Distribute computational results to their correct positions in memory.
tg | taskgroup to be distributed. |
data | Results, that have to be distributed to the tasks in tg . |
void distribute_nf_sing | ( | ptaskgroup | tg, |
void * | data | ||
) |
Distribute computational results to their correct positions in memory.
tg | taskgroup to be distributed. |
data | Results, that have to be distributed to the tasks in tg . |
size_t getsize_nf | ( | void * | data | ) |
returns the current size of taskgroup for nearfield computations.
data | Pointer to a struct of nearfield_args. |
size_t getsize_nf_sing | ( | void * | data | ) |
returns the current size of taskgroup for singular nearfield computations.
data | Pointer to a struct of merge_data_nf. |
void merge_nf | ( | ptaskgroup | tg, |
void ** | data | ||
) |
Merge a list of nearfield computation tasks into a single object.
tg | taskgroup to be merged. |
data | Object of type merge_data_nf that is being returned. |
void merge_nf_sing | ( | ptaskgroup | tg, |
void ** | data | ||
) |
Merge a list of singular nearfield computation tasks into a single object.
tg | taskgroup to be merged. |
data | Object of type merge_data_nf that is being returned. |
void split_nf_sing_task | ( | void * | data, |
void *** | split, | ||
uint * | n | ||
) |
Splits a singular neafield computation task into smaller tasks.
data | Pointer to a struct of merge_data_nf. |
split | Array of smaller subtasks is returned via splits . |
n | Number of subtasks is returned by n . |
void split_nf_task | ( | void * | data, |
void *** | split, | ||
uint * | n | ||
) |
Splits a neafield computation task into smaller tasks.
data | Pointer to a struct of nearfield_args. |
split | Array of smaller subtasks is returned via splits . |
n | Number of subtasks is returned by n . |