使用Cython包装返回MPI通信器的C++函数

2024-10-02 20:39:45 发布

您现在位置:Python中文网/ 问答频道 /正文

<>我试图包装一个不接受任何输入并返回MPI通信器的C++函数。在

食物

class Foo{
 public:
  Foo(MPI_Comm _comm){
   _comm = comm;
  }
  MPI_Comm getMPIComm(){
   return comm
  }
  virtual void Foo1() = 0 

我试过以下方法:

在源.pyx在

^{pr2}$

这段代码经过编译,我能够编写一个继承这个类的python代码。但是,当我尝试在python级别访问getmpicom时,遇到了一个分段错误,valgrind给出的错误是:

Access not within mapped region at address 0x8

这是否意味着我没有正确包装getMPIComm()?有人知道我该怎么做吗?在


Tags: 函数代码returnfoo错误virtualpublicclass
1条回答
网友
1楼 · 发布于 2024-10-02 20:39:45

我认为您永远不会分配*thisptr,因此在尝试调用getMPIComm时,会出现访问冲突。尝试创建一个Foo实例,如下所示:

cdef class pyFoo:
   cdef Foo *thisptr
   def __cinit__(self,MPI.Comm _comm):
      self.thisptr = new Foo(_comm)
   # ...

相关问题 更多 >