我正在从事一项适合面向对象 (OO) 方法的任务。我在 MATLAB 中做这件事,因为我处于原型设计阶段。但是,我知道以后我肯定必须执行更大规模的计算(我的大学有一个集群)。方法是对计算量大的部分使用 mex 函数。但它不适用于 MATLAB 类。另一种选择是用C++编写代码,其OOP与MATLAB的OOP不同,但有很多相似之处,思路是一样的。将 OpenMP、MPI、PETSC 等与 C++ 类一起使用来并行化我的代码有多容易?第三种选择是忽略 OOP,但是我牺牲了程序的优雅性和可扩展性。我的问题:
1)您建议我继续使用 OOP,还是切换到程序化方式?
2) 您推荐我使用哪种并行化技术(OpenMP、MPI、PETSC 等)?我不想在上面投入大量时间。我对 MATLAB 非常熟练,但对 C 语言只有基本知识,对 C++ 一无所知。
编辑
从其中一条评论中可以看出,如果我使用标准变量或对象没有区别。所以重新制定问题1)
1)当我要进行并行化时,是否确定 OOP 不会让我的生活变得更艰难?我将创建一个特定的应用程序而不是通用工具;在这种情况下,有多少 OO C++ 难学?我不需要特殊的数据结构,只需要循环、if 语句和并行化库的调用。这是一个可行的解决方案,只是使类方法并行(以便实现对外部隐藏)还是需要完全重写?