Skip to Content.
Sympa Menu

charm - [charm] Building a linked list of chares?

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

[charm] Building a linked list of chares?


Chronological Thread 
  • From: Nicolas Bock <nicolasbock AT gmail.com>
  • To: charm AT cs.uiuc.edu
  • Subject: [charm] Building a linked list of chares?
  • Date: Wed, 5 Jun 2013 15:56:42 -0600
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm/>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

Hi list,

this question may have an obvious answer, but my C++ skills are so rusty that it's not obvious to me right now...

I would like to build a linked list of chares. I envision something like the inlined code. However, I am getting a compiler error, saying that:

test.cc: In member function 'void LinkedListNode::append(int)':
test.cc:28:45: error: cannot convert 'CkChareID' to 'CProxy_LinkedListNode*' in assignment

I guess I am not understanding how chares are instantiated. What does the ckNew() method do? Do I have to throw in a new operator?

Thanks already,

nick




test.ci:

mainmodule linkedList
{
  mainchare Main
  {
    entry Main (CkArgMsg *msg);
  };

  chare LinkedListNode
  {
    entry LinkedListNode ();
    entry void set (const int ID);
    entry void append (const int ID);
  };
};

test.cc:

#include "linkedList.decl.h"

class LinkedListNode : public CBase_LinkedListNode
{
  private:

    int ID;
    CProxy_LinkedListNode *next;

  public:

    LinkedListNode ()
    {
      ID = -1;
      next = NULL;
    }

    void set (const int ID)
    {
      this->ID = ID;
    }

    void append (const int ID)
    {
      if(next != NULL) { next->append(ID); }
      else 
      {
        next = CProxy_LinkedListNode::ckNew();
        next->set(ID);
      }
    }
};

class Main : public CBase_Main
{
  private:

    CProxy_LinkedListNode first;

  public:

    Main (CkArgMsg *msg)
    {
      first = CProxy_LinkedListNode::ckNew();
      first.set(0);
      for(int i = 1; i < 10; i++)
      {
        first.append(i);
      }
    }
};

#include "linkedList.def.h"



Archive powered by MHonArc 2.6.16.

Top of Page