ExaFMM 1
Fast-multipole Method for exascale systems
Classes | Defines | Typedefs | Enumerations | Functions
include/quark.h File Reference
#include <limits.h>
#include <stdio.h>
#include <inttypes.h>
#include "quark_unpack_args.h"
Include dependency graph for quark.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  quark_task_flags_s

Defines

#define DBGPRINTF(...)   if (0) {};
#define QUARK_SUCCESS   0
#define QUARK_ERR   -1
#define QUARK_ERR_UNEXPECTED   -1
#define QUARK_ERR_NOT_SUPPORTED   -2
#define QUARK_REGION_BITMASK   0x0000FF
#define QUARK_REGION_ALL   0x0FF
#define QUARK_DIRECTION_BITMASK   0x000F00
#define INPUT   0x100
#define QUARK_VALUE_FLAGS_BITMASK   0xFFF000
#define LOCALITY   ( 1 << 12 )
#define NOLOCALITY   0x00
#define ACCUMULATOR   ( 1 << 13 )
#define NOACCUMULATOR   0x00
#define GATHERV   ( 1 << 14 )
#define NOGATHERV   0x00
#define TASK_LABEL   ( 1 << 15 )
#define TASKLABEL   TASK_LABEL
#define TASK_COLOR   ( 1 << 16 )
#define TASKCOLOR   TASK_COLOR
#define TASK_PRIORITY   ( 1 << 17 )
#define TASK_LOCK_TO_THREAD   ( 1 << 18 )
#define TASK_SEQUENCE   ( 1 << 19 )
#define TASK_THREAD_COUNT   ( 1 << 20 )
#define THREAD_SET_TO_MANUAL_SCHEDULING   ( 1 << 21 )
#define TASK_LOCK_TO_THREAD_MASK   ( 1 << 22 )
#define QUARK_TASK_MIN_PRIORITY   0
#define QUARK_TASK_MAX_PRIORITY   INT_MAX
#define Quark_Task_Flags_Initializer   { (int)0, (int)-1, (char *)NULL, (char *)NULL, (void *)NULL, (int)1, (int)-1, (unsigned char *)NULL }

Typedefs

typedef struct quark_s Quark
typedef struct quark_task_s Quark_Task
typedef struct quark_task_flags_s Quark_Task_Flags
typedef struct Quark_sequence_s Quark_Sequence

Enumerations

enum  quark_data_region_t {
  QUARK_REGION_0 = 1<<0, QUARK_REGION_1 = 1<<1, QUARK_REGION_2 = 1<<2, QUARK_REGION_3 = 1<<3,
  QUARK_REGION_4 = 1<<4, QUARK_REGION_5 = 1<<5, QUARK_REGION_6 = 1<<6, QUARK_REGION_7 = 1<<7
}
enum  quark_ldu_region_t { QUARK_REGION_L = QUARK_REGION_0|QUARK_REGION_1|QUARK_REGION_2, QUARK_REGION_D = QUARK_REGION_3|QUARK_REGION_4, QUARK_REGION_U = QUARK_REGION_5|QUARK_REGION_6|QUARK_REGION_7 }
enum  quark_direction_t {
  QINPUT = 0x100, OUTPUT = 0x200, INOUT = 0x300, VALUE = 0x400,
  NODEP = 0x500, SCRATCH = 0x600
}

Functions

QuarkQUARK_Setup (int num_threads)
QuarkQUARK_New (int num_threads)
unsigned long long QUARK_Insert_Task (Quark *quark, void(*function)(Quark *), Quark_Task_Flags *task_flags,...)
void QUARK_Worker_Loop (Quark *quark, int thread_rank)
void QUARK_Barrier (Quark *quark)
void QUARK_Waitall (Quark *quark)
void QUARK_Delete (Quark *quark)
void QUARK_Free (Quark *quark)
int QUARK_Cancel_Task (Quark *quark, unsigned long long taskid)
void * QUARK_Args_List (Quark *quark)
int QUARK_Get_RankInTask (Quark *quark)
void * QUARK_Args_Pop (void *args_list, void **last_arg)
int QUARK_Thread_Rank (Quark *quark)
Quark_TaskQUARK_Task_Init (Quark *quark, void(*function)(Quark *), Quark_Task_Flags *task_flags)
void QUARK_Task_Pack_Arg (Quark *quark, Quark_Task *task, int arg_size, void *arg_ptr, int arg_flags)
unsigned long long QUARK_Insert_Task_Packed (Quark *quark, Quark_Task *task)
unsigned long long QUARK_Execute_Task (Quark *quark, void(*function)(Quark *), Quark_Task_Flags *task_flags,...)
char * QUARK_Get_Task_Label (Quark *quark)
Quark_Task_FlagsQUARK_Task_Flag_Set (Quark_Task_Flags *flags, int flag, intptr_t val)
Quark_SequenceQUARK_Sequence_Create (Quark *quark)
int QUARK_Sequence_Cancel (Quark *quark, Quark_Sequence *sequence)
Quark_SequenceQUARK_Sequence_Destroy (Quark *quark, Quark_Sequence *sequence)
int QUARK_Sequence_Wait (Quark *quark, Quark_Sequence *sequence)
Quark_SequenceQUARK_Get_Sequence (Quark *quark)
int QUARK_Get_Priority (Quark *quark)
intptr_t QUARK_Task_Flag_Get (Quark *quark, int flag)
void QUARK_DOT_DAG_Enable (Quark *quark, int boolean_value)
static int QUARK_Bit_Get (unsigned char *set, int number)
static void QUARK_Bit_Set (unsigned char *set, int number, int value)

Detailed Description

Dynamic scheduler functions

PLASMA is a software package provided by Univ. of Tennessee, Univ. of California Berkeley and Univ. of Colorado Denver

Version:
2.4.5
Author:
Asim YarKhan
Date:
2010-11-15

Definition in file quark.h.


Define Documentation

#define ACCUMULATOR   ( 1 << 13 )

Definition at line 74 of file quark.h.

#define DBGPRINTF (   ...)    if (0) {};

Definition at line 41 of file quark.h.

#define GATHERV   ( 1 << 14 )

Definition at line 78 of file quark.h.

#define INPUT   0x100

Definition at line 65 of file quark.h.

#define LOCALITY   ( 1 << 12 )

Definition at line 70 of file quark.h.

#define NOACCUMULATOR   0x00

Definition at line 75 of file quark.h.

#define NOGATHERV   0x00

Definition at line 79 of file quark.h.

#define NOLOCALITY   0x00

Definition at line 71 of file quark.h.

#define QUARK_DIRECTION_BITMASK   0x000F00

Definition at line 63 of file quark.h.

#define QUARK_ERR   -1

Definition at line 45 of file quark.h.

#define QUARK_ERR_NOT_SUPPORTED   -2

Definition at line 47 of file quark.h.

#define QUARK_ERR_UNEXPECTED   -1

Definition at line 46 of file quark.h.

#define QUARK_REGION_ALL   0x0FF

Definition at line 51 of file quark.h.

#define QUARK_REGION_BITMASK   0x0000FF

Definition at line 50 of file quark.h.

#define QUARK_SUCCESS   0

Definition at line 44 of file quark.h.

#define Quark_Task_Flags_Initializer   { (int)0, (int)-1, (char *)NULL, (char *)NULL, (void *)NULL, (int)1, (int)-1, (unsigned char *)NULL }

Definition at line 125 of file quark.h.

#define QUARK_TASK_MAX_PRIORITY   INT_MAX

Definition at line 103 of file quark.h.

#define QUARK_TASK_MIN_PRIORITY   0

Definition at line 102 of file quark.h.

#define QUARK_VALUE_FLAGS_BITMASK   0xFFF000

Definition at line 67 of file quark.h.

#define TASK_COLOR   ( 1 << 16 )

Definition at line 86 of file quark.h.

#define TASK_LABEL   ( 1 << 15 )

Definition at line 83 of file quark.h.

#define TASK_LOCK_TO_THREAD   ( 1 << 18 )

Definition at line 91 of file quark.h.

#define TASK_LOCK_TO_THREAD_MASK   ( 1 << 22 )

Definition at line 99 of file quark.h.

#define TASK_PRIORITY   ( 1 << 17 )

Definition at line 89 of file quark.h.

#define TASK_SEQUENCE   ( 1 << 19 )

Definition at line 93 of file quark.h.

#define TASK_THREAD_COUNT   ( 1 << 20 )

Definition at line 95 of file quark.h.

#define TASKCOLOR   TASK_COLOR

Definition at line 87 of file quark.h.

#define TASKLABEL   TASK_LABEL

Definition at line 84 of file quark.h.

#define THREAD_SET_TO_MANUAL_SCHEDULING   ( 1 << 21 )

Definition at line 97 of file quark.h.


Typedef Documentation

typedef struct quark_s Quark

Definition at line 106 of file quark.h.

typedef struct Quark_sequence_s Quark_Sequence

Definition at line 195 of file quark.h.

typedef struct quark_task_s Quark_Task

Definition at line 109 of file quark.h.

Definition at line 123 of file quark.h.


Enumeration Type Documentation

Enumerator:
QUARK_REGION_0 
QUARK_REGION_1 
QUARK_REGION_2 
QUARK_REGION_3 
QUARK_REGION_4 
QUARK_REGION_5 
QUARK_REGION_6 
QUARK_REGION_7 

Definition at line 52 of file quark.h.

Enumerator:
QINPUT 
OUTPUT 
INOUT 
VALUE 
NODEP 
SCRATCH 

Definition at line 64 of file quark.h.

Enumerator:
QUARK_REGION_L 
QUARK_REGION_D 
QUARK_REGION_U 

Definition at line 54 of file quark.h.


Function Documentation

void* QUARK_Args_List ( Quark quark)
void* QUARK_Args_Pop ( void *  args_list,
void **  last_arg 
)
void QUARK_Barrier ( Quark quark)
static int QUARK_Bit_Get ( unsigned char *  set,
int  number 
) [inline, static]

Definition at line 225 of file quark.h.

static void QUARK_Bit_Set ( unsigned char *  set,
int  number,
int  value 
) [inline, static]

Definition at line 232 of file quark.h.

int QUARK_Cancel_Task ( Quark quark,
unsigned long long  taskid 
)
void QUARK_Delete ( Quark quark)

Here is the caller graph for this function:

void QUARK_DOT_DAG_Enable ( Quark quark,
int  boolean_value 
)
unsigned long long QUARK_Execute_Task ( Quark quark,
void(*)(Quark *)  function,
Quark_Task_Flags task_flags,
  ... 
)
void QUARK_Free ( Quark quark)
int QUARK_Get_Priority ( Quark quark)
int QUARK_Get_RankInTask ( Quark quark)
Quark_Sequence* QUARK_Get_Sequence ( Quark quark)
char* QUARK_Get_Task_Label ( Quark quark)
unsigned long long QUARK_Insert_Task ( Quark quark,
void(*)(Quark *)  function,
Quark_Task_Flags task_flags,
  ... 
)
unsigned long long QUARK_Insert_Task_Packed ( Quark quark,
Quark_Task task 
)
Quark* QUARK_New ( int  num_threads)

Here is the caller graph for this function:

int QUARK_Sequence_Cancel ( Quark quark,
Quark_Sequence sequence 
)
Quark_Sequence* QUARK_Sequence_Create ( Quark quark)
Quark_Sequence* QUARK_Sequence_Destroy ( Quark quark,
Quark_Sequence sequence 
)
int QUARK_Sequence_Wait ( Quark quark,
Quark_Sequence sequence 
)
Quark* QUARK_Setup ( int  num_threads)
intptr_t QUARK_Task_Flag_Get ( Quark quark,
int  flag 
)
Quark_Task_Flags* QUARK_Task_Flag_Set ( Quark_Task_Flags flags,
int  flag,
intptr_t  val 
)
Quark_Task* QUARK_Task_Init ( Quark quark,
void(*)(Quark *)  function,
Quark_Task_Flags task_flags 
)
void QUARK_Task_Pack_Arg ( Quark quark,
Quark_Task task,
int  arg_size,
void *  arg_ptr,
int  arg_flags 
)
int QUARK_Thread_Rank ( Quark quark)
void QUARK_Waitall ( Quark quark)
void QUARK_Worker_Loop ( Quark quark,
int  thread_rank 
)
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines