HMLP: High-performance Machine Learning Primitives
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
hmlp::mpigofmm::S2STask2< NODE, LETNODE, T > Class Template Reference

Notice that S2S depends on all Far interactions, which may include local tree nodes or let nodes. For HSS case, the only Far interaction is the sibling. Skeleton weight of the sibling will always be exchanged by default in N2S. Thus, currently we do not need a distributed S2S, because the skeleton weight is already in place. More...

#include <gofmm_mpi.hpp>

Inheritance diagram for hmlp::mpigofmm::S2STask2< NODE, LETNODE, T >:
hmlp::Task

Public Member Functions

void Set (NODE *user_arg, vector< LETNODE * > user_src, int user_p, Lock *user_lock, int *user_num_arrived_subtasks)
 
void DependencyAnalysis ()
 
void Execute (Worker *user_worker)
 
- Public Member Functions inherited from hmlp::Task
 Task ()
 (Default) Task constructor. More...
 
 ~Task ()
 (Default) Task destructor. More...
 
TaskStatus GetStatus ()
 Status is a private member.
 
void SetStatus (TaskStatus status)
 Move foward to the next status.
 
void SetBatchStatus (TaskStatus status)
 
void Submit ()
 Ask the runtime to create an normal task in file.
 
virtual void Set (string user_name, void(*user_function)(Task *), void *user_arg)
 This is only for virtual function pointer.
 
virtual void Prefetch (Worker *)
 
void Enqueue ()
 
void Enqueue (size_t tid)
 
bool TryEnqueue ()
 Try to dispatch the task if there is no dependency left.
 
void ForceEnqueue (size_t tid)
 
void CallBackWhileWaiting ()
 This is the callback function for the owner of thenested task. More...
 
virtual void GetEventRecord ()
 
void DependenciesUpdate ()
 Update the my outgoing and children's incoming edges. More...
 
void Acquire ()
 
void Release ()
 
bool IsNested ()
 

Public Attributes

NODE * arg = NULL
 
vector< LETNODE * > Sources
 
int p = 0
 
Locklock = NULL
 
int * num_arrived_subtasks
 
- Public Attributes inherited from hmlp::Task
class Workerworker = NULL
 
string name
 
string label
 
int taskid
 
float cost = 0
 
bool priority = false
 
Event event
 
void(* function )(Task *)
 
void * arg
 
volatile int n_dependencies_remaining = 0
 
deque< Task * > in
 
deque< Task * > out
 
Locktask_lock = NULL
 
Tasknext = NULL
 
volatile bool stealable = true
 
volatile int created_by = 0
 

Detailed Description

template<typename NODE, typename LETNODE, typename T>
class hmlp::mpigofmm::S2STask2< NODE, LETNODE, T >

Notice that S2S depends on all Far interactions, which may include local tree nodes or let nodes. For HSS case, the only Far interaction is the sibling. Skeleton weight of the sibling will always be exchanged by default in N2S. Thus, currently we do not need a distributed S2S, because the skeleton weight is already in place.

end class DistUpdateWeightsTask compute flops and mops setup the event assume computation bound "LOW" priority MPI Support. Only 0th rank (owner) will execute this task.

Member Function Documentation

template<typename NODE , typename LETNODE , typename T >
void hmlp::mpigofmm::S2STask2< NODE, LETNODE, T >::Execute ( Worker user_worker)
inlinevirtual

Temporary buffer

Free KIJ, if !is_cached.

Implements hmlp::Task.

template<typename NODE , typename LETNODE , typename T >
void hmlp::mpigofmm::S2STask2< NODE, LETNODE, T >::Set ( NODE *  user_arg,
vector< LETNODE * >  user_src,
int  user_p,
Lock user_lock,
int *  user_num_arrived_subtasks 
)
inline

Compute FLOPS and MOPS

Setup the event

Assume computation bound

Assume computation bound


The documentation for this class was generated from the following file: