Skip to Content.
Sympa Menu

charm - Re: [charm] [ppl] splitting .ci files into multiples

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] [ppl] splitting .ci files into multiples


Chronological Thread 
  • From: Phil Miller <mille121 AT illinois.edu>
  • To: Evghenii Gaburov <egaburov.work AT gmail.com>
  • Cc: charm AT cs.uiuc.edu
  • Subject: Re: [charm] [ppl] splitting .ci files into multiples
  • Date: Sat, 17 Mar 2012 18:04:51 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

Evghenii,

At present, there isn't a way to accomplish this separation, beyond
placing the code in the body of larger atomic blocks in sequential
functions defined in a .cpp file. Some higher-level languages that
we're building to simplify Charm++ development may provide this
separation more directly.

Phil

On Wed, Mar 14, 2012 at 09:57, Evghenii Gaburov
<egaburov.work AT gmail.com>
wrote:
> Hi All,
>
> I was wondering if it is possible to separate definition of a method and
> SDAG implementation into two or more separate *.ci files.
>
> For example, I have a typical .ci file:
>
> myModule.ci:
> mainmodule myModule
> {
>   mainchare Main {  ...
>
>   array [1D] Simulation
>   {
>     entry void r1a(..);
>     entry void r1b(..);
>     entry void g1(..)
>     {
>        atomic { many_code_lines }
>        for (imsg = 0; imsg < nmsg; imsg++)
>          when r1a(..) atomic { many_code_lines }
>        for (imsg = 0; imsg < nmsg; imsg++)
>          when r1b(..) atomic { many_code_lines }
>        atomic { many_code_lines }
>     }
>     ...
>     entry void rNa(..);
>     entry void rNb(..);
>     entry void gN(..)   { .. };
>
>   }
> }
>
> with many entries in array [1D] Simulation are written in SDAG, so the .ci
> file becomes rather large in code-line count and hard to maintain.
>
> Is there a way to split the array's method definitions and their SDAG
> implementation into two different *.ci files, e.g.
>
> g1.ci:
> mainmodule g1
> {
>  array [1D] Simulation
>  {
>    entry void r1a(..);
>    entry void r2a(..);
>    entry void g1() {...}
>  }
> }
> ...
>
> gN.ci:
> mainmodule gN
> {
>  array [1D] Simulation
>  {
>    entry void rNa(..);
>    entry void rNa(..);
>    entry void gN() {...}
>  }
> }
>
> When I try it in this way, it complains: error: redefintion of class
> CkIndex_Simulation, CkProxyElement_Simulation, etc. Any help will be of
> great value!
>
> Thanks!
>
> Cheers,
>  Evghenii
> _______________________________________________
> charm mailing list
> charm AT cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/charm
> _______________________________________________
> ppl mailing list
> ppl AT cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/ppl





Archive powered by MHonArc 2.6.16.

Top of Page