H2Lib  3.0
Data Structures | Typedefs | Enumerations | Functions | Variables
oclbem3d

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_oclpbem3d_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.
 

Detailed Description

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.

Enumeration Type Documentation

enum _op_type

Simple Enum to distinguish between different boundary integral operators.

Enumerator
SLP 

SLP Single layer potential.

DLP 

DLP Double layer potential.

Function Documentation

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.

Parameters
bembem3d object.
op_cbStruct of callback functions for all quadrature cases for the current operator.
cNumber of common vertices for the triangle tt and ss.
ttFirst triangle.
ssSecond triangle.
transTransposed flag
entryMemory position where this entry should be stored lateron.
void cleanup_nf_merge ( void *  data)

Cleanup intermediate storage from a nearfield computation merge task.

Parameters
dataPointer to a struct of nearfield_args.
void cleanup_nf_sing_merge ( void *  data)

Cleanup intermediate storage from a singular nearfield computation merge task.

Parameters
dataPointer to a struct of merge_data_nf.
void cleanup_nf_sing_task ( void *  data)

Cleanup intermediate storage for singular nearfield computation task.

Parameters
dataPointer to a struct of merge_data_nf.
void cleanup_nf_task ( void *  data)

Cleanup intermediate storage for nearfield computation task.

Parameters
dataPointer to a struct of nearfield_args.
void close_nf ( ptaskgroup  tg)

Close collection of task for nearfield calculations.

Parameters
tgtaskgroup object to be closed.
void close_nf_dist ( ptaskgroup  tg)

Close collection of task for disjoint triangle pairs.

Parameters
tgtaskgroup object to be closed.
void close_nf_edge ( ptaskgroup  tg)

Close collection of task for triangle pairs with common edge.

Parameters
tgtaskgroup object to be closed.
void close_nf_iden ( ptaskgroup  tg)

Close collection of task for identical triangle pairs.

Parameters
tgtaskgroup object to be closed.
void close_nf_vert ( ptaskgroup  tg)

Close collection of task for triangle pairs with common vertex.

Parameters
tgtaskgroup object to be closed.
void distribute_nf ( ptaskgroup  tg,
void *  data 
)

Distribute computational results to their correct positions in memory.

Parameters
tgtaskgroup to be distributed.
dataResults, 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.

Parameters
tgtaskgroup to be distributed.
dataResults, 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.

Parameters
dataPointer to a struct of nearfield_args.
Returns
The current size of a taskgroup.
size_t getsize_nf_sing ( void *  data)

returns the current size of taskgroup for singular nearfield computations.

Parameters
dataPointer to a struct of merge_data_nf.
Returns
The current size of a taskgroup.
void merge_nf ( ptaskgroup  tg,
void **  data 
)

Merge a list of nearfield computation tasks into a single object.

Parameters
tgtaskgroup to be merged.
dataObject 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.

Parameters
tgtaskgroup to be merged.
dataObject 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.

Parameters
dataPointer to a struct of merge_data_nf.
splitArray of smaller subtasks is returned via splits.
nNumber of subtasks is returned by n.
void split_nf_task ( void *  data,
void ***  split,
uint n 
)

Splits a neafield computation task into smaller tasks.

Parameters
dataPointer to a struct of nearfield_args.
splitArray of smaller subtasks is returned via splits.
nNumber of subtasks is returned by n.