< align=center><FONT face=仿宋_GB2312 size=6>并行算法的设计与实现</FONT></P><><FONT face=Arial size=3><b>1 <FONT></FONT></b></FONT><FONT size=3>初始化</FONT><FONT face=Arial size=3><b>MPI<FONT></FONT></b></FONT><FONT size=3>库</FONT></P><><FONT face=Arial size=3><b>MPI_Init(&argc,&argv);</b></FONT></P><P><FONT face=Arial size=3><b>MPI_Comm_size(MPI_COMM_WORLD,&numprocs);</b></FONT></P><P><FONT face=Arial size=3><b>MPI_Comm_rank(MPI_COMM_WORLD,&myrank);</b></FONT></P><P><FONT face=Arial size=3><b>2 </b></FONT><FONT size=3>零号进程读数据文件</FONT></P><P><FONT face=Arial size=3><b>3 </b></FONT><FONT size=3>播送门限值和原始数据</FONT></P><P><FONT face=Arial size=3><b>MPI_Bcast(&thashold,1,MPI_INT,0,MPI_COMM_WORLD);</b></FONT></P><P><FONT face=Arial size=3><b>MPI_Bcast(density,DX*DY*DZ,MPI_BYTE,0,MPI_COMM_WORLD);</b></FONT></P><P><FONT face=Arial size=3><b>4 </b></FONT><FONT size=3>各个处理机独立的进行计算</FONT></P><P><FONT face=Arial size=3><b>for (<FONT></FONT></b></FONT><FONT size=3><b>象平面的每一个象素</b></FONT><FONT face=Arial size=3><b>[j] )do </b></FONT></P><P><FONT face=Arial size=3><b>{</b></FONT></P><P><FONT face=Arial size=3><b><FONT></FONT></b></FONT><FONT size=3>计算从</FONT><FONT face=Arial size=3><b>[j]<FONT></FONT></b></FONT><FONT size=3>发出的射线遇到的第一个象素</FONT><FONT face=Arial size=3><b>[x][y][z];</b></FONT></P><P><FONT face=Arial size=3><b>while <FONT></FONT></b></FONT><FONT size=3>体素</FONT><FONT face=Arial size=3><b>[x][y][z]<FONT></FONT></b></FONT><FONT size=3>在体素空间中<b> </b></FONT><FONT face=Arial size=3><b>do</b></FONT></P><P><FONT face=Arial size=3><b>{</b></FONT></P><P><FONT face=Arial size=3><b>if (<FONT></FONT></b></FONT><FONT size=3>体素</FONT><FONT face=Arial size=3><b>[x][y][z]<FONT></FONT></b></FONT><FONT size=3>的阻光度</FONT><FONT face=Arial size=3><b>=1 )</b></FONT></P><P><FONT face=Arial size=3><b><FONT>{</FONT></b></FONT></P><P><FONT face=Arial size=3><b>get_grad(x,y,z);</b></FONT></P><P><FONT face=Arial size=3><b>recorrect_Phong(x,y,z);</b></FONT></P><P><FONT face=Arial size=3><b>image[j]=<FONT></FONT></b></FONT><FONT size=3>体素</FONT><FONT face=Arial size=3><b>[x][y][z]<FONT></FONT></b></FONT><FONT size=3>的颜色</FONT><FONT face=Arial size=3><b>;</b></FONT></P><P><FONT face=Arial size=3><b>break;</b></FONT></P><P><FONT face=Arial size=3><b>}</b></FONT></P><P><FONT face=Arial size=3><b><FONT></FONT></b></FONT><FONT size=3>计算下一个体素的位置</FONT><FONT face=Arial size=3><b>[x][y][z];</b></FONT></P><P><FONT face=Arial size=3><b>}</b></FONT></P><P><FONT face=Arial size=3><b>image[j]=<FONT></FONT></b></FONT><FONT size=3>背景的颜色</FONT><FONT face=Arial size=3><b>;</b></FONT></P><P><FONT face=Arial size=3><b>}</b></FONT></P><FONT face=Arial size=3><b><FONT></b></FONT><FONT face=Arial size=3></FONT></FONT><P><FONT face=Arial size=3><b>5 </b></FONT><FONT size=3>收集数据</FONT></P><P><FONT face=Arial size=3><b>MPI_Gather(gatherBuffer,DX*DZ*3/numprocs,MPI_BYTE,buffer,DX*DZ*3/numprocs,MPI_BYTE,0,MPI_COMM_WORLD);</b></FONT></P> |