您的位置:首页 > 其它

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

2010-07-02 13:34 561 查看
集群端程序: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端预览程序。同时输出了参数文件,可以用集群端程序读取参数文件生成高精度图片。





























下图是程序界面截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐