MPI分形图像高精度绘制程序和PC端Mandelbrot-Julia分形集预览程序

集群端程序:Linux + MPI + C++。 Windows + dotNET + C#。更详细情况可以参见我的相册

要源代码的,可以留下邮箱

 

 

 

MPI程序在集群上8台结点机输出4096×4096分辨率BMP图像时,达到了最大7.31的稳定加速比,达到预期目的。而且随着画布尺寸的增加,拆分块数的相应适当增加,相信加速比还有提高的余地。程序在8192×8192分辨率BMP恶事,65进程,8结点机情况下,一度达到了7.33的加速比,由于运行时间较长,只计算了一次,不列为稳定的数据。

程序功能设计上已经达到预期全部功能和指标:

基本功能:

①支持MPI并行计算;

②任务日志文件的输出;

③支持高阶(三阶、四阶、五阶)Mandelbrot集和Julia集的生成。

④自动批量无人值守处理任务。

⑤PC端程序支持多线程并行计算,能够充分发挥多核处理器的全部性能,默认最大支持128线程。

创新元素:

  颜色表的颜色由正弦函数控制,变化柔和。

  高精度浮点和低精度浮点运算根据需要自动切换。

  颜色调配更加复杂,产生图像的颜色和形状更加多样化。

  支持ini型参数文件的输出和读取,使得分形图像具有便携性(一个参数文件不到1KB)且不用担心图像精度问题。

  优化了原算法的颜色生成函数,使得生成颜色所需时间是原来的十分之一。

  优化了PC端程序的随机颜色功能,以前的随机只是改变一个100以内的自然数,现在外加4个颜色控制参数也一起随机生成,使得颜色变化更加丰富,而省去了手动调整。

  优化了PC端“颜色更新”功能:形状控制参数不变时,收敛速度不用重复计算,省去了大部分计算时间,直接用旧的收敛速度生成新图片。可以节省50%95%的计算时间。

  MPI程序增加背景线程。最初版本没有这个,后来版本有了背景线程,假设有八台结点机,第一台结点机只有八分之一的几率是“短板”,只要不是短板,就不会阻塞其他结点机。所以大多数情况下,背景线程提高了计算速度。

  改进算法,传输收敛速度,而不是传输颜色。用16bit short型,节省一半的数据传输量。

  支持任意画布尺寸(除非内存限制),消除了2n的画布宽度限制,因为计算时程序会自动填补画布到2n大小,输出图像时再去掉多余部分。

本文的MPI设计思想对其他领域中可以分块生成图像的任务有一定指导作用。

 

以下图片由PC端预览程序。同时输出了参数文件,可以用集群端程序读取参数文件生成高精度图片。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下图是程序界面截图

 

你可能感兴趣的:(软件语言与编程)