我正在开发科学计算社区的代码,特别是用于迭代解决线性方程组(Ax=b形式)。我已经使用了BLAS和LAPACK进行原始矩阵子程序,但我现在意识到有一些手动并行化的空间。我正在使用共享内存系统,留下了两个选择:OpenMP和PThreads。
假设时间不是最重要的因素(&代码的性能是),哪种并行化方式更好、更具未来性,并且可能可移植(到CUDA)?使用PThreads所花费的时间是否值得性能提升?
我相信我的应用程序(基本上涉及同时启动许多事物,然后从所有这些事物中操作“最佳”值),将受益于明确的线程控制,但我担心编码将花费太多时间,最终不会有性能回报。
我已经看过这里的几个类似问题,但它们都与一般应用程序有关。 这个是关于Linux中通用多线程应用程序的问题。 这个也是一个一般性的问题。
假设时间不是最重要的因素(&代码的性能是),哪种并行化方式更好、更具未来性,并且可能可移植(到CUDA)?使用PThreads所花费的时间是否值得性能提升?
我相信我的应用程序(基本上涉及同时启动许多事物,然后从所有这些事物中操作“最佳”值),将受益于明确的线程控制,但我担心编码将花费太多时间,最终不会有性能回报。
我已经看过这里的几个类似问题,但它们都与一般应用程序有关。 这个是关于Linux中通用多线程应用程序的问题。 这个也是一个一般性的问题。
我知道SciComp.SE,但觉得在这里更相关。