/******************************************************************* * * _DemoButton */ static void _DemoButton(void) { BUTTON_Handle hButton; int Stat = 0; GUI_SetFont(&GUI_Font8x16); GUI_DispStringHCenterAt("Click on phone button...", 160,80); GUI_Delay(500); /* Create the button */ hButton = BUTTON_Create(142, 100, 36, 40, GUI_ID_OK, WM_CF_SHOW); /* Modify the button attributes */ BUTTON_SetBkColor (hButton, 1, GUI_RED); /* Loop until button is pressed */ while (1) { BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_1, 2, 4); BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4); if (!_Wait(50)) break; BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4); BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_0, 2, 4); if (!_Wait(45)) break; BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_2, 2, 4); BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_2, 2, 4); if (!_Wait(50)) break; BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4); BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_0, 2, 4); if (!_Wait(45)) break; } BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_1, 2, 4); BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4); GUI_ClearRect(0, 80, 319, 120); GUI_DispStringHCenterAt("You have answered the telephone", 160, 145); GUI_Delay(2000); /* Delete button object */ BUTTON_Delete(hButton); GUI_ClearRect(0, 50, 319, 239); GUI_Delay(400); }
void strsm_llnu_lu( unsigned int SPE_id, LS_ShaderInfo *info, Operation_t *myop, Functions_t *funcs ) { _DBGP_UINT( 1 ); // Make room for python meta data PyArrayObject *A = (PyArrayObject *)info->LS_shaderMemory; PyArrayObject *B = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject ); PyArrayObject *alpha = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject )*2; PyArrayObject *cb = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject )*3; // Get meta data _GetPyArrayMetaData( myop->obj[0], A, 0 ); _GetPyArrayMetaData( myop->obj[1], B, 0 ); _GetPyArrayMetaData( myop->scalar[0], alpha, 0 ); _GetPyArrayMetaData( myop->scalar[1], cb, 0 ); _Wait(0); // WAIT!!! _DBGP_UINT( 2 ); // Make room for data block arrays char **blocks_A = (char**)( ( (unsigned int)( cb + sizeof( PyArrayObject )) + 127 ) &~ 127 ); char **blocks_B = (char**)( blocks_A + _Pad16bytes( A->numberOfBlocks ) ); char **blocks_alpha = (char**)( blocks_B + _Pad16bytes( B->numberOfBlocks ) ); char **blocks_cb = (char**)( blocks_alpha + _Pad16bytes( alpha->numberOfBlocks ) ); // Local vars unsigned int idx = 0, nextidx; unsigned int i, j, k, l, row, col; // unsigned int c = 0; // // unsigned int Afourth = A->blockSize / 4; // unsigned int xfourth = x->blockSize / 4; // unsigned int AAfourth = A->blockSize*A->blockSize / 4; // unsigned int t = 0; // Uploadet scalars float alpha_f, beta_f; unsigned int CB; _GetScalar( alpha, blocks_alpha, &alpha_f, 1 ); _GetScalar( cb, blocks_cb, &CB, 1 ); _DBGP_UINT( 3 ); vector float alphav = spu_splats(alpha_f); // Fetch pointers to first __ datablocks for vectors _GetBlockPointers( B, blocks_B, B->numberOfBlocks, _BTAG ); _GetBlockPointers( A, blocks_A, A->numberOfBlocks, _BTAG ); _Wait(_BTAG); vector float *BKJ, *BIJ, aik; float *AIK; unsigned int x; int ain, ain2; _DBGP_UINT( 4000 ); _DBGP_UINT( CB ); // Same A, get it once _GetBlock( blocks_A, info->LS_blockDataArea[1], CB*A->numberOfBlocksXDim+CB, A->blockSize*A->blockSize, idx ); _Wait(idx); _DBGP_UINT( CB*B->numberOfBlocksXDim+1+CB+SPE_id ); // Get first block of B _GetBlock( blocks_B, info->LS_blockDataArea[0], CB*B->numberOfBlocksXDim+1+CB+SPE_id, B->blockSize*B->blockSize, idx ); _Wait(idx); _DBGP_UINT( 5000 ); //funcs->printuint(CB + SPE_id + 1); //funcs->printuint(B->numberOfBlocksXDim-myop->num_SPES); // For each block column // BLOCK > for( col = CB + SPE_id + 1 ; col < B->numberOfBlocksXDim-myop->num_SPES ; col += myop->num_SPES ) { _DBGP_UINT( 100000 + col ); nextidx = idx ^ 1; //funcs->printuint(CB*A->numberOfBlocksXDim+col+myop->num_SPES); _GetBlock( blocks_B, info->LS_blockDataArea[nextidx*3], CB*B->numberOfBlocksXDim+col+myop->num_SPES, B->blockSize*B->blockSize, nextidx ); _Wait( idx ); for( l = 1 ; l < B->blockSize ; l++ ) { _DBGP_UINT( 200000 + l ); BKJ = (vector float*)( info->LS_blockDataArea[idx*3] + (l-1) % B->blockSize * B->blockSize * 4 ); // BIJ[i] = BIJ[i] - BKJ[i] * aik; _compute( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1] ); //_compute2( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1], funcs ); } // Return the result to the PPE _PutAsync( (unsigned int)blocks_B[CB*A->numberOfBlocksXDim+col], B->blockSize * B->blockSize * 4, info->LS_blockDataArea[idx*3], idx ); idx = nextidx; } _DBGP_UINT( 100000 + col ); _Wait( idx ); for( l = 1 ; l < B->blockSize ; l++ ) { BKJ = (vector float*)( info->LS_blockDataArea[idx*3] + (l-1) % B->blockSize * B->blockSize * 4 ); //_compute2( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1], funcs ); _compute( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1] ); } //funcs->printuint( 678 ); //_PrintMatrix( B, info->LS_blockDataArea[idx*3], funcs ); // Return the result to the PPE _PutAsync( (unsigned int)blocks_B[CB*A->numberOfBlocksXDim+col], B->blockSize * B->blockSize * 4, info->LS_blockDataArea[idx*3], idx ); }