我希望在整个U和V网格上找到R的值。您可以看到我已经计算了沿U = -100和V = 0的R_0的值某个方程式
我试图设置一个并行的过程,但我的笔记本电脑每次都崩溃。ly在评论中提到的矩阵是大的。 您应该研究针对此的核心计算的机制。
年级包括:
blocking:您可以让每个线程分配一行,也可以分配整个矩阵,或者可以分配整个矩阵,或者可以将任何块大小分配,以便块和大小*num_cors*num_cores小于您的RAM。完成后,他们将其放在磁盘上并释放内存。如果行可以轻松分发,这很容易,如果所有这些行都需要同时访问所有这些行,则可能会更加困难。第二个是内存映射(mmap)文件,这是一个Linux机制,它为您提供了看起来像存储器块的东西,然后您可以映射到您的数组,但是当您写入[] [] [],操作系统缓存一段时间,当内存完整时,将其写入磁盘。由于共享MMAP文件,因此这种方法可能很复杂,这意味着您需要同步控制(锁),以确保在编写和阅读时线程不会彼此踩踏。因此,算法肯定应该有效,但是,如果您具有非常随机的访问模式,并且是硬盘驱动器,那么这是一种众所周知的方法,因为HDD在随机的IO中表现不佳,因此这是一种良好的方法。 其他方法存在不同的权衡或要求,并且不需要对算法进行任何更改。