|
MADNESS 0.10.1
|


Public Member Functions | |
| TestSystolicMatrixAlgorithm (DistributedMatrix< T > &A, int tag) | |
| bool | converged (const TaskThreadEnv &env) const |
| Invoked simultaneously by all threads after each sweep to test for convergence. | |
| void | kernel (int i, int j, T *rowi, T *rowj) |
| Threadsafe routine to apply the operation to rows i and j of the matrix. | |
| void | start_iteration_hook (const TaskThreadEnv &env) |
| Invoked by all threads at the start of each iteration. | |
Public Member Functions inherited from madness::SystolicMatrixAlgorithm< T > | |
| SystolicMatrixAlgorithm (DistributedMatrix< T > &A, int tag, int nthread=ThreadPool::size()+1) | |
| A must be a column distributed matrix with an even column tile >= 2. | |
| virtual | ~SystolicMatrixAlgorithm () |
| virtual void | end_iteration_hook (const TaskThreadEnv &env) |
| Invoked by all threads at the end of each iteration before convergence test. | |
| int64_t | get_coldim () const |
| Returns length of column. | |
| ProcessID | get_rank () const |
| Returns rank of this process in the world. | |
| int64_t | get_rowdim () const |
| Returns length of row. | |
| World & | get_world () const |
| Returns a reference to the world. | |
| void | run (World &world, const TaskThreadEnv &env) |
| Invoked by the task queue to run the algorithm with multiple threads. | |
| void | solve_sequential () |
| Invoked by the user to run the algorithm with one thread mostly for debugging. | |
Public Member Functions inherited from madness::TaskInterface | |
| TaskInterface (const TaskAttributes &attr) | |
| Create a new task with zero dependencies and given attributes. | |
| TaskInterface (int ndepend, const char *caller, const TaskAttributes attr=TaskAttributes()) | |
| TaskInterface (int ndepend=0, const TaskAttributes attr=TaskAttributes()) | |
| Create a new task with ndepend dependencies (default 0) and given attributes. | |
| virtual | ~TaskInterface () |
| World * | get_world () const |
| virtual void | run (World &) |
| Runs a single-threaded task ... derived classes must implement this. | |
Public Member Functions inherited from madness::PoolTaskInterface | |
| PoolTaskInterface () | |
| Default constructor. | |
| PoolTaskInterface (const TaskAttributes &attr) | |
| virtual | ~PoolTaskInterface ()=default |
| Destructor. | |
| void | execute () |
| void | set_nthread (int nthread) |
| Call this to reset the number of threads before the task is submitted. | |
Public Member Functions inherited from madness::TaskAttributes | |
| TaskAttributes (const TaskAttributes &attr) | |
| Copy constructor. | |
| TaskAttributes (unsigned long flags=0) | |
| Sets the attributes to the desired values. | |
| virtual | ~TaskAttributes () |
| int | get_nthread () const |
| Get the number of threads. | |
| bool | is_generator () const |
| Test if the generator attribute is true. | |
| bool | is_high_priority () const |
| Test if the high priority attribute is true. | |
| bool | is_stealable () const |
| Test if the stealable attribute is true. | |
| template<typename Archive > | |
| void | serialize (Archive &ar) |
| Serializes the attributes for I/O. | |
| TaskAttributes & | set_generator (bool generator_hint) |
| Sets the generator attribute. | |
| TaskAttributes & | set_highpriority (bool hipri) |
| Sets the high priority attribute. | |
| void | set_nthread (int nthread) |
| Set the number of threads. | |
| TaskAttributes & | set_stealable (bool stealable) |
| Sets the stealable attribute. | |
Public Member Functions inherited from madness::DependencyInterface | |
| DependencyInterface (int ndep, const char *caller) | |
| DependencyInterface (int ndep=0) | |
| virtual | ~DependencyInterface () |
| Destructor. | |
| void | dec () |
Decrement the number of dependencies and invoke the callback if ndepend==0. | |
| void | dec_debug (const char *caller) |
| void | inc () |
| Increment the number of dependencies. | |
| void | inc_debug (const char *caller) |
Same as inc(), but keeps track of caller; calling dec_debug() will signal error if no matching inc_debug() had been invoked | |
| int | ndep () const |
| Returns the number of unsatisfied dependencies. | |
| void | notify () |
| Invoked by callbacks to notify of dependencies being satisfied. | |
| void | notify_debug (const char *caller) |
| Overload of CallbackInterface::notify_debug(), updates dec() | |
| bool | probe () const |
Returns true if ndepend == 0 (no unsatisfied dependencies). | |
| void | register_callback (CallbackInterface *callback) |
Registers a callback that will be executed when ndepend==0; immediately invoked if ndepend==0. | |
| void | register_final_callback (CallbackInterface *callback) |
Registers the final callback to be executed when ndepend==0; immediately invoked if ndepend==0. | |
Public Member Functions inherited from madness::CallbackInterface | |
| virtual | ~CallbackInterface () |
Private Attributes | |
| volatile int | niter |
Additional Inherited Members | |
Static Public Member Functions inherited from madness::TaskAttributes | |
| static TaskAttributes | generator () |
| static TaskAttributes | hipri () |
| static TaskAttributes | multi_threaded (int nthread) |
Static Public Attributes inherited from madness::TaskInterface | |
| static bool | debug = false |
Static Public Attributes inherited from madness::TaskAttributes | |
| static const unsigned long | GENERATOR = 1ul<<8 |
| Mask for generator bit. | |
| static const unsigned long | HIGHPRIORITY = GENERATOR<<2 |
| Mask for priority bit. | |
| static const unsigned long | NTHREAD = 0xff |
| Mask for nthread byte. | |
| static const unsigned long | STEALABLE = GENERATOR<<1 |
| Mask for stealable bit. | |
Protected Member Functions inherited from madness::TaskInterface | |
| virtual void | run (const TaskThreadEnv &env) |
| Override this method to implement a multi-threaded task. | |
Protected Member Functions inherited from madness::CallbackInterface | |
| virtual void | notify_debug_impl (const char *caller) |
Static Protected Member Functions inherited from madness::PoolTaskInterface | |
| template<typename fnobjT > | |
| static std::enable_if<!(detail::function_traits< fnobjT >::value||detail::memfunc_traits< fnobjT >::value)>::type | make_id (std::pair< void *, unsigned short > &id, const fnobjT &) |
| template<typename fnT > | |
| static std::enable_if< detail::function_traits< fnT >::value||detail::memfunc_traits< fnT >::value >::type | make_id (std::pair< void *, unsigned short > &id, fnT fn) |
|
inline |
References madness::print().
|
inlinevirtual |
Invoked simultaneously by all threads after each sweep to test for convergence.
There is a thread barrier before and after the invocation of this routine
| [in] | env | The madness thread environment in case synchronization between threads is needed during computation of the convergence condition. |
Implements madness::SystolicMatrixAlgorithm< T >.
References TestSystolicMatrixAlgorithm< T >::niter, madness::nonlinear_vector_solver(), and madness::print().
Threadsafe routine to apply the operation to rows i and j of the matrix.
| [in] | i | First row index in the matrix |
| [in] | j | Second row index in the matrix |
| [in] | rowi | Pointer to row i of the matrix (to be modified by kernel in-place) |
| [in] | rowj | Pointer to row j of the matrix (to be modified by kernel in-place) |
Implements madness::SystolicMatrixAlgorithm< T >.
References k, MADNESS_CHECK, and madness::nonlinear_vector_solver().
|
inlinevirtual |
Invoked by all threads at the start of each iteration.
There is a thread barrier before and after the invocation of this routine
| [in] | env | The madness thread environment in case synchronization between threads is needed during startup. |
Reimplemented from madness::SystolicMatrixAlgorithm< T >.
References TestSystolicMatrixAlgorithm< T >::niter, and madness::nonlinear_vector_solver().