我今年夏天正在做一些研究,并致力于并行化已有的代码.现在主要关注的是一种对代码进行负载平衡的方法,以便它在集群上运行更高效.当前的任务是创建一个概念证明,创建几个进程,每个进程都有自己的堆栈可用,当进程完成处理堆栈时,它会查询两个最接近的进程,看看他们的堆栈中是否有更多可用的工作.
我在python中对此进行概念化时遇到了困难,但希望有人能指出我正确的方向,或者在mpi4py或ParallelPython中有类似的例子.此外,如果有人知道更好或更容易的模块,那么这将是很好的知道.
谢谢.
我目前正在开发一个处理People类对象向量的项目.程序编译并运行得很好,但是当我使用调试器时,它在尝试使用PersonWrangler对象时会死掉.我目前有3个不同的课程,一个是人,一个是集体处理所有人的人,一个处理游戏输入和输出的游戏类.
编辑:我的基本问题是理解它在调用outputPeople时死亡的原因.此外,我想了解为什么我的程序完全正常工作,除非我使用调试器.outputPeople函数以我想要的方式工作.
编辑2:callstack有3个错误的调用:
相关代码:
class Game
{
public:
Game();
void gameLoop();
void menu();
void setStatus(bool inputStatus);
bool getStatus();
PersonWrangler* hal;
private:
bool status;
};
Run Code Online (Sandbox Code Playgroud)
它调用outputPeople,它会立即从baadf00d错误中死掉.
void Game::menu()
{
hal->outputPeople();
}
Run Code Online (Sandbox Code Playgroud)
其中hal是PersonWrangler类型的对象
class PersonWrangler
{
public:
PersonWrangler(int inputStartingNum);
void outputPeople();
vector<Person*> peopleVector;
vector<Person*>::iterator personIterator;
int totalPeople;
};
Run Code Online (Sandbox Code Playgroud)
并且outputPeople函数定义为
void PersonWrangler::outputPeople()
{
int totalConnections = 0;
cout << " Total People:" << peopleVector.size() << …Run Code Online (Sandbox Code Playgroud)