Bug #757: disable unnecassary network polling in multicore build
[charm.git] / doc / faq / other.tex
blob79f1e82f3fb98250c378ceb1b2847aad145663fa
1 \section{Other PPL Tools, Libraries and Applications}
3 \subsubsection{What is Structured Dagger?}
5 {\em Structured Dagger} is a structured notation for specifying intra-process
6 control dependencies in message-driven programs. It combines the efficiency
7 of message-driven execution with the explicitness of control specification.
8 Structured Dagger allows easy expression of dependencies among messages
9 and computations and also among computations within the same object using
10 {\tt when-blocks}
11 and various structured constructs. See the Charm++ manual for the details.
13 \subsubsection{What are the performance problems with AMPI packing and unpacking?}
15 There is an extra copy involved, because the AMPI message is reusable
16 immediately after the AMPI call returns. Since Charm++ messages are to
17 be handed over to the system, there is an extra copy involved (plus creation
18 of a Charm++ message) while sending.
20 %<li>
21 %<b>Why does AMPI now derive from </b><tt>ArrayElement1D</tt><b> rather
22 %than </b><tt>TempoArray</tt><b>?</b></li>
24 %<br>Deriving it from <tt>TempoArray</tt> was causing some inefficiencies
25 %because of the introduction of derived data types. Basically, it was causing
26 %multiple copies. Also, I felt that some more optimizations, especially
27 %with collective operations can be done this way, so I have changed AMPI
28 %to be a standalone Charm++ library, rather than being dependent on Tempo.
30 \subsubsection{Is {\tt TempoArray::ckTempoSendElem()} the only way for non-AMPI
31 code to communicate with running AMPI code?}
33 <br>A static method <tt>sendraw</tt> is added to the AMPI class, that allows
34 you to send a message to AMPI threads from outside AMPI. So, instead of
35 using the <tt>TempoArray</tt> method, you can use:
36 <tt>ampi::sendraw(tag1,tag2,msg,len,arrayid,index);</tt>
38 \subsubsection{What is Charisma?}
40 Charisma++ is a prototype language for describing global view of control in a parallel program. It is designed to solve the problem of obscured control flow in the object-based model with Charm++.
42 \subsubsection{Does Projections use wall time or CPU time?}
44 Wall time.