文件名称:nbody:二维 n 体求解器,带有 OpenMP、MPI、AVX
文件大小:770KB
文件格式:ZIP
更新时间:2024-06-25 20:38:38
C
没有人 n 体求解器,旨在编写快速 MPI 实现。 对于 n 体问题,这有点不重要,因为每个时间步都需要每个体的位置,并且我们需要减少加速度贡献,因此这是一个通信繁重的问题。 可用于测试的集群只有一个千兆以太网互连,因此高效的通信将是必不可少的。 对于每对物体,我们需要计算 Fij = G*mi*mj*(ri-rj)/|ri-rj|^3。 由于力相等且相反,我们只需计算此矩阵的上三角形。 这些力为我们提供了加速度值,我们使用这些值通过简单的欧拉积分来更新速度和位置。 对于 n 个物体,我们需要执行 n*(n/2) 力计算。 我们希望以“时间步数/秒”衡量的性能以这种方式扩展。 串行实现 身体位置、速度、加速度和质量都存储在单独的数组中,而不是更简洁的基于结构的方法,以便于自动矢量化器和使用手动矢量内在函数。 手动矢量化 在ComputeAccel内循环中一次计算 2、4 个身体对(双
【文件预览】:
nbody-master
----src()
--------nbody.c(13KB)
----plots()
--------img()
----Makefile(234B)
----README.md(8KB)