none
請問這段程式碼如何改寫可加速???

    問題

  • #define Matrix_Size 8 	//矩陣大小
    /*
    float g_fMatrixValue[8][8]
    */
    float 	fNodeValue = g_fMatrixValue[y][x];
    float 	fNorthVal, fWestVal;
    int 	iTemp;
    
    for(iTemp=0; iTemp < Matrix_Size; iTemp++){
    	if ( y == iTemp && x == iTemp) {
    		fNodeValue = sqrt(fNodeValue);
    		g_fMatrixValue[y][x]=fNodeValue;
    		if (y < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y+1][x], fNodeValue);
    		}
    		if (x < Matrix_Size-1) {
    			send(nProc_id, matrix[y][x+1], fNodeValue);
    		}
    	}//===Step(1) End ===
    
    	//===Step(2)===
    	else if ( y > iTemp && x == iTemp) {
    		fNorthVal = receive(nProc_id, matrix[y-1][x]); 
    		fNodeValue = fNodeValue/fNorthVal;
    		g_fMatrixValue[y][x]=fNodeValue;
    		if (y < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y+1][x], fNorthVal); 
    		}
    		if (x < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y][x+1], fNodeValue);
    		}
    	}//===Step(2) End ===
    
    	//===Step(3)===
    	else if ( y == iTemp && x > iTemp) {
    		fWestVal = receive(nProc_id, matrix[y][x-1]);
    		fNodeValue = fNodeValue/fWestVal;
    		g_fMatrixValue[y][x]=fNodeValue;
    		if (x < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y][x+1], fWestVal);)
    		}
    		if (y < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y+1][x], fNodeValue);
    		}
    	}//===Step(3) End ===
    
    	//===Step(4)===
    	else if ( x > iTemp && y > iTemp ){
    		fNorthVal = receive(nProc_id, matrix[y-1][x]);
    		fWestVal =  receive(nProc_id, matrix[y][x-1]);
    
    		fNodeValue = fNodeValue - fNorthVal*fWestVal;
    		g_fMatrixValue[y][x]=fNodeValue;
    		
    		if (y < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y+1][x], fNorthVal); 
    		}
    		if (x < Matrix_Size-1 ) {
    			send(nProc_id, matrix[y][x+1], fWestVal);
    		}
    	}//===Step(4) End ===
    }
    

    這邊只有部分程式代碼
    程式可以跑沒有錯誤
    只是想問有沒有優化程式碼的方法??或可以加快程式效率的方法??
    謝謝

    2012年4月13日 下午 12:35

所有回覆