Hello Michael,
in the svn there is a simpler but improved version. In my amd 64 machine dual
core linux ubuntu jaunty no problem. No segmentation .. no errors with the new
version.
I tested it with the new function MPI_Comm_Load. All the examples with
montercarlo work as well.
Bests
Riccardo
--- Mar 1/12/09, Michael Creel <michael.cr...@uab.es> ha scritto:
Da: Michael Creel <michael.cr...@uab.es>
Oggetto: Re: [OctDev] A simple C++ example of a class with MPI_Comunicator
property
A: "Riccardo Corradini" <riccardocorrad...@yahoo.it>
Data: Martedì 1 dicembre 2009, 13:49
Hi Riccardo,
You might find
this screenshot amusing. This is a PelicanHPC made using Debian Sid, with
Octave 3.2.3, and with your MPI bindings. I'm looking forward to trying out
your fix for the comm stuff.
Cheers, MIchael
On Tue, Dec 1, 2009 at 12:43 PM, Riccardo Corradini
<riccardocorrad...@yahoo.it> wrote:
Dear Jaroslav
after goggling a lot I found a nice example that I converted to fix the
MPI_Comunicator problem
Here there is the code adjusted from
http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/
there are just two files Comm.h and Comexample.cc
#define FILL_COMM(RNAME,LNAME) \
MPI_Comm RNAME##comm = MPI_LNAME;\
#include "mpi.h"
#define READ_ONLY 1
#define WRITE_ONLY 2
#define READ_WRITE 3
template <typename Container, typename ValueType, int nPropType>
class property
{
public:
property()
{
m_cObject = NULL;
Set = NULL;
Get = NULL;
}
//-- This to set a pointer to the class that contain the
// property --
void
setContainer(Container* cObject)
{
m_cObject = cObject;
}
//-- Set the set member function that will change the value --
void setter(void (Container::*pSet)(ValueType value))
{
if((nPropType == WRITE_ONLY) || (nPropType == READ_WRITE))
Set = pSet;
else
Set = NULL;
}
//-- Set the get member function that will retrieve the value --
void getter(ValueType (Container::*pGet)())
{
if((nPropType == READ_ONLY) || (nPropType == READ_WRITE))
Get = pGet;
else
Get = NULL;
}
//-- Overload the '=' sign to set the value using the set
// member --
ValueType operator =(const ValueType& value)
{
assert(m_cObject != NULL);
assert(Set != NULL);
(m_cObject->*Set)(value);
return value;
}
//-- To make possible to cast the property
class to the
// internal type --
operator ValueType()
{
assert(m_cObject != NULL);
assert(Get != NULL);
return (m_cObject->*Get)();
}
private:
Container* m_cObject; //-- Pointer to the module that
// contains the property --
void (Container::*Set)(ValueType value);
//-- Pointer to set member function --
ValueType (Container::*Get)();
//-- Pointer to get member function --
};
class
PropTest
{
public:
PropTest()
{
Comm.setContainer(this);
Comm.setter(&PropTest::setComm);
Comm.getter(&PropTest::getComm);
}
MPI_Comm getComm()
{
return m_nComm;
}
void setComm(MPI_Comm nComm)
{
m_nComm = nComm;
}
property<PropTest,MPI_Comm,READ_WRITE> Comm;
private:
MPI_Comm m_nComm;
};
And the DLD function
#include <octave/oct.h>
#include "Comm.h"
DEFUN_DLD(CommExample,args,,"A simple example using a C++ class holding
Comunicator as property")
{
// Example setting
PropTest SetTest;
SetTest.Comm = MPI_COMM_WORLD;
// Example getting
MPI_Comm ex_comm;
ex_comm = SetTest.Comm;
// the problem is how could SetTest
comunicate with GNU Octave ?
}
I think the situation here is simpler because we have a simple class holding
all pieces of info and perhaps the pointers to this class are easier to
handle.. and more universal among different MPI implementations ...
What do you think ?
Thanks a lot in advance for all your patience and help.
Bests
Riccardo
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing.
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev
------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing.
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev