这篇教程C++ FLA_Finalize函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中FLA_Finalize函数的典型用法代码示例。如果您正苦于以下问题:C++ FLA_Finalize函数的具体用法?C++ FLA_Finalize怎么用?C++ FLA_Finalize使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了FLA_Finalize函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: mainint main(int argc, char* argv[]){ dim_t order; dim_t nA; dim_t permutation[FLA_MAX_ORDER]; FLA_Init(); //Parse input if(parse_input(argc, argv, &order, &nA, permutation) == FLA_FAILURE){ Usage(); FLA_Finalize(); return 0; } if(check_errors(order, nA, permutation) == FLA_FAILURE){ Usage(); FLA_Finalize(); return 0; } test_permute_tensor(order, nA, permutation); FLA_Finalize(); return 0;}
开发者ID:pgawron,项目名称:tlash,代码行数:26,
示例2: mexFunctionvoid mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int attr[NINT]; FLA_Obj obj[NOBJ]; double *dtime; FLA_Init(); /* Check if the number of arguments supplied is correct */ FLA_M2C_CheckNumArgs(NRHS, nrhs); /* Convert Matlab arguments into the appropriate FLAME C arguments */ FLA_M2C_ConvertArgs(NRHS, prhs, NINT, attr, obj); /* If an extra argument is supplied, collect timing informaion in it. */ if (nrhs == NRHS+1) dtime = FLA_M2C_ConvertDoublePtr(prhs[NRHS]); /* Now call the C FLAME function, timing it if the extra argument is given. */ if (nrhs == NRHS+1) *dtime = FLA_Clock(); FLA_Axpyt_external(attr[0], obj[0], obj[1], obj[2]); if (nrhs == NRHS+1) *dtime = FLA_Clock() - *dtime; FLA_Finalize();}
开发者ID:anaptyxis,项目名称:libflame,代码行数:30,
示例3: phonopy_pinv_libflameint phonopy_pinv_libflame(double *matrix, double *eigvals, const int size, const double cutoff){ FLA_Obj A, B, l; /* FLA_Obj C; */ double *inv_eigvals; int i; inv_eigvals = (double*)malloc(sizeof(double) * size); FLA_Init(); FLA_Obj_create_without_buffer(FLA_DOUBLE, size, size, &A); FLA_Obj_attach_buffer(matrix, 0, 0, &A); FLA_Obj_create_without_buffer(FLA_DOUBLE, size, 1, &l); FLA_Obj_attach_buffer(eigvals, 0, 0, &l); /* Eigensolver */ FLA_Obj_create_copy_of(FLA_NO_TRANSPOSE, A, &B); FLA_Hevd(FLA_EVD_WITH_VECTORS, FLA_LOWER_TRIANGULAR, B, l); /* SVD */ /* FLA_Obj_create(FLA_DOUBLE, size, size, 0, 0, &B); */ /* use U */ /* FLA_Svd(FLA_SVD_VECTORS_ALL, FLA_SVD_VECTORS_NONE, A, l, B, C); */ /* use V */ /* FLA_Svd(FLA_SVD_VECTORS_NONE, FLA_SVD_VECTORS_ALL, A, l, C, B); */ FLA_Obj_free_without_buffer(&l); for (i = 0; i < size; i++) { if (eigvals[i] < cutoff) { inv_eigvals[i] = 0; } else { inv_eigvals[i] = 1.0 / sqrt(eigvals[i]); } } FLA_Obj_create_without_buffer(FLA_DOUBLE, size, 1, &l); FLA_Obj_attach_buffer(inv_eigvals, 0, 0, &l); FLA_Apply_diag_matrix(FLA_RIGHT, FLA_NO_CONJUGATE, l, B); FLA_Syrk(FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_ONE, B, FLA_ZERO, A); FLA_Symmetrize(FLA_LOWER_TRIANGULAR, A); FLA_Obj_free_without_buffer(&A); FLA_Obj_free_without_buffer(&l); FLA_Obj_free(&B); FLA_Finalize(); free(inv_eigvals); return 0;}
开发者ID:chueter,项目名称:phonopy,代码行数:57,
示例4: mainint main(int argc, char* argv[]){ dim_t order; TLA_sym sym; dim_t n[FLA_MAX_ORDER]; dim_t b[FLA_MAX_ORDER]; dim_t permutation[FLA_MAX_ORDER]; FLA_Obj T; FLA_Init(); //Parse inputs if(parse_input(argc, argv, &order, &sym, n, b, permutation) == FLA_FAILURE){ Usage(); FLA_Finalize(); return 0; } //Error check if(check_errors(order, sym, n, b, permutation) == FLA_FAILURE){ Usage(); FLA_Finalize(); return 0; } //Perform test create_psym_tensor(order, sym, n, b, &T); FLA_Obj_print_matlab("T", T); test_permute_tensor(permutation, T); FLA_Obj_blocked_psym_tensor_free_buffer(&T); FLA_Obj_free_without_buffer(&T); FLA_Finalize(); return 0;}
开发者ID:pgawron,项目名称:tlash,代码行数:38,
示例5: mexFunctionvoid mexFunction(int nargout, mxArray * pargout[], int nargin, const mxArray * pargin[]){ if (nargin > 1) { mexErrMsgTxt("Too many input arguments."); } FLA_Init(); int i; //Parse input FLA_Obj A; mexPrintf("Creating tensor/n"); TLA_mxa_to_tensor(pargin[0], &A); FLA_Obj_print_matlab("A", A); //Pass output mexPrintf("Passing C back/n"); TLA_tensor_to_mxa(A, &(pargout[0])); //DELETE EVERYTHING mexPrintf("finalizing/n"); FLA_Finalize();}
开发者ID:pgawron,项目名称:tlash,代码行数:24,
示例6: main//.........这里部分代码省略......... if ( pc_str[param_combo][0] == 'l' ) { FLA_Obj_create( datatype, nb_alg, nb_alg, &A_flat ); FLASH_Obj_create( datatype, nb_alg, nb_alg, 1, &nb_alg, &A ); FLASH_Obj_create( datatype, nb_alg, nb_alg, 1, &nb_alg, &A_save ); FLA_Obj_create( datatype, bm, bn, &T_flat ); FLASH_Obj_create_ext( datatype, bm, bn, 1, &bm, &bn, &T ); FLASH_Obj_create_ext( datatype, bm, n, 1, &bm, &bn, &W ); } else { FLASH_Obj_create( datatype, n, n, 1, &nb_alg, &A ); } FLASH_Obj_create( datatype, nb_alg, n, 1, &nb_alg, &B ); FLASH_Obj_create( datatype, nb_alg, n, 1, &nb_alg, &B_ref ); FLA_Obj_create( datatype, nb_alg, 1, &t ); FLASH_Random_matrix( A ); FLASH_Random_matrix( B ); fprintf( stdout, "data_applyq_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); FLASH_Copy( A, A_save ); FLASH_Obj_flatten( A, A_flat ); FLA_QR_blk_external( A_flat, t ); FLASH_Obj_hierarchify( A_flat, A ); time_Apply_Q( param_combo, FLA_ALG_REFERENCE, n_repeats, m, n, A, B, B_ref, t, T, W, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); FLASH_Copy( A_save, A ); FLASH_Obj_flatten( A, A_flat ); FLA_QR_UT( A_flat, t, T_flat ); FLASH_Obj_hierarchify( A_flat, A ); FLASH_Obj_hierarchify( T_flat, T ); time_Apply_Q( param_combo, FLA_ALG_FRONT, n_repeats, m, n, A, B, B_ref, t, T, W, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLASH_Obj_free( &A ); FLA_Obj_free( &A_flat ); FLASH_Obj_free( &B ); FLASH_Obj_free( &B_ref ); FLA_Obj_free( &t ); FLASH_Obj_free( &T ); FLA_Obj_free( &T_flat ); FLASH_Obj_free( &W ); } fprintf( stdout, "/n" ); } fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_applyq_%s( :,1 ), data_applyq_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_applyq_%s( :,1 ), data_applyq_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_applyq//_%s', 'fla//_applyq//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME applyq front-end performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc applyq_front_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例7: main//.........这里部分代码省略......... sprintf( output_file_m, "%s/%s_output.m", OUTPUT_PATH, OUTPUT_FILE ); fpp = fopen( output_file_m, "a" ); fprintf( fpp, "%%/n" ); fprintf( fpp, "%% | Matrix Size | FLASH |/n" ); fprintf( fpp, "%% | n x n | GFlops |/n" ); fprintf( fpp, "%% -----------------------------/n" ); fprintf( fpp, "%s_%u = [/n", OUTPUT_FILE, nb_alg );#endif FLA_Init(); dtimes = ( double * ) FLA_malloc( n_repeats * sizeof( double ) ); flops = ( double * ) FLA_malloc( n_trials * sizeof( double ) ); FLASH_Queue_set_num_threads( n_threads ); FLASH_Queue_set_sorting( sorting ); FLASH_Queue_set_caching( caching ); FLASH_Queue_set_work_stealing( work_stealing ); FLASH_Queue_set_data_affinity( data_affinity ); for ( i = 0; i < n_trials; i++ ) { size = begin + i * increment; FLA_Obj_create( datatype, size, size, 0, 0, &A ); FLA_Obj_create( datatype, size, size, 0, 0, &B ); FLA_Obj_create( datatype, size, 1, 0, 0, &x ); FLA_Obj_create( datatype, size, 1, 0, 0, &b ); FLA_Obj_create( datatype, 1, 1, 0, 0, &b_norm ); for ( j = 0; j < n_repeats; j++ ) { FLA_Random_matrix( A ); FLA_Random_matrix( B ); FLA_Random_matrix( x ); FLA_Random_matrix( b ); FLA_Symmetrize( uplo, A ); FLA_Symmetrize( uplo, B ); length = ( double ) FLA_Obj_length( B ); FLA_Add_to_diag( &length, B ); FLA_Symv_external( uplo, FLA_ONE, B, x, FLA_ZERO, b ); FLASH_Obj_create_hier_copy_of_flat( A, 1, &nb_alg, &AH ); FLASH_Obj_create_hier_copy_of_flat( B, 1, &nb_alg, &BH ); FLASH_Chol( uplo, BH ); dtime = FLA_Clock(); FLASH_Eig_gest( inv, uplo, AH, BH ); dtime = FLA_Clock() - dtime; dtimes[j] = dtime; FLASH_Obj_free( &AH ); FLASH_Obj_free( &BH ); } dtime = dtimes[0]; for ( j = 1; j < n_repeats; j++ ) dtime = min( dtime, dtimes[j] ); flops[i] = 1.0 * size * size * size / dtime / 1e9;#ifdef FLA_ENABLE_WINDOWS_BUILD fprintf( stdout, " %d %6.3f %le/n", size, flops[i], b_norm_value );#else fprintf( fpp, " %d %6.3f/n", size, flops[i] ); fprintf( stdout, "Time: %e | GFlops: %6.3f/n", dtime, flops[i] ); fprintf( stdout, "Matrix size: %u x %u | nb_alg: %u/n", size, size, nb_alg ); fprintf( stdout, "Norm of difference: %le/n/n", b_norm_value ); #endif FLA_Obj_free( &A ); FLA_Obj_free( &B ); FLA_Obj_free( &x ); FLA_Obj_free( &b ); FLA_Obj_free( &b_norm ); }#ifdef FLA_ENABLE_WINDOWS_BUILD fprintf( stdout, "];/n/n" );#else fprintf( fpp, "];/n" ); fflush( fpp ); fclose( fpp );#endif FLA_free( dtimes ); FLA_free( flops ); FLA_Finalize(); return 0; }
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例8: main//.........这里部分代码省略......... sprintf( k_dim_tag, "k%dp", 1 ); } //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; FLASH_Queue_set_num_threads( n_threads ); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; k = k_input; if( m < 0 ) m = p / abs(m_input); if( k < 0 ) k = p / abs(k_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ // If transposing A, switch dimensions. if ( pc_str[param_combo][1] == 'n' ) { FLASH_Obj_create( datatype, m, k, 1, &nb_alg, &A ); FLASH_Obj_create( datatype, m, k, 1, &nb_alg, &B ); } else { FLASH_Obj_create( datatype, k, m, 1, &nb_alg, &A ); FLASH_Obj_create( datatype, k, m, 1, &nb_alg, &B ); } FLASH_Obj_create( datatype, m, m, 1, &nb_alg, &C ); FLASH_Obj_create( datatype, m, m, 1, &nb_alg, &C_ref ); FLASH_Random_matrix( A ); FLASH_Random_matrix( B ); FLASH_Random_matrix( C ); fprintf( stdout, "data_her2k_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Her2k( param_combo, FLA_ALG_REFERENCE, n_repeats, m, k, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Her2k( param_combo, FLA_ALG_FRONT, n_repeats, m, k, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLASH_Obj_free( &A ); FLASH_Obj_free( &B ); FLASH_Obj_free( &C ); FLASH_Obj_free( &C_ref ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_her2k_%s( :,1 ), data_her2k_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_her2k_%s( :,1 ), data_her2k_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_her2k//_%s', 'fla//_her2k//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME her2k front-end performance (%s, %s)' );/n", m_dim_desc, k_dim_desc ); fprintf( stdout, "print -depsc her2k_front_%s_%s.eps/n", m_dim_tag, k_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:pgawron,项目名称:tlash,代码行数:101,
示例9: main//.........这里部分代码省略......... if ( pc_str[param_combo][0] == 'c' || pc_str[param_combo][1] == 'c' ) { if ( precision == FLA_SINGLE_PRECISION ) datatype = FLA_COMPLEX; else datatype = FLA_DOUBLE_COMPLEX; } else { if ( precision == FLA_SINGLE_PRECISION ) datatype = FLA_FLOAT; else datatype = FLA_DOUBLE; } // If transposing A, switch dimensions. if ( pc_str[param_combo][0] == 'n' ) FLA_Obj_create( datatype, m, k, 0, 0, &A ); else FLA_Obj_create( datatype, k, m, 0, 0, &A ); // If transposing B, switch dimensions. if ( pc_str[param_combo][1] == 'n' ) FLA_Obj_create( datatype, k, n, 0, 0, &B ); else FLA_Obj_create( datatype, n, k, 0, 0, &B ); FLA_Obj_create( datatype, m, n, 0, 0, &C ); FLA_Obj_create( datatype, m, n, 0, 0, &C_ref ); FLA_Random_matrix( A ); FLA_Random_matrix( B ); FLA_Random_matrix( C ); FLA_Copy_external( C, C_ref ); fprintf( stdout, "data_gemm_%s( %d, 1:5 ) = [ %4d %4d %4d ", pc_str[param_combo], i, m, k, n ); fflush( stdout ); time_Gemm( param_combo, FLA_ALG_REFERENCE, n_repeats, m, k, n, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout );/* time_Gemm( param_combo, FLA_ALG_FRONT, n_repeats, m, k, n, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout );*/ fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &A ); FLA_Obj_free( &B ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_gemm_%s( :,1 ), data_gemm_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_gemm_%s( :,1 ), data_gemm_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_gemm//_%s', 'fla//_gemm//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME gemm front-end performance (%s, %s, %s)' );/n", m_dim_desc, k_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc gemm_front_%s_%s_%s.eps/n", m_dim_tag, k_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:flame,项目名称:libflame,代码行数:101,
示例10: main//.........这里部分代码省略......... FLA_Obj_create( datatype, n, n, 0, 0, &B ); FLA_Obj_create( datatype, m, n, 0, 0, &C ); FLA_Obj_create( datatype, m, n, 0, 0, &C_ref ); if ( datatype == FLA_DOUBLE || datatype == FLA_DOUBLE_COMPLEX ) { FLA_Obj_create( FLA_DOUBLE, 1, 1, 0, 0, &scale ); FLA_Obj_create( FLA_DOUBLE, 1, 1, 0, 0, &norm ); } else if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX ) { FLA_Obj_create( FLA_FLOAT, 1, 1, 0, 0, &scale ); FLA_Obj_create( FLA_FLOAT, 1, 1, 0, 0, &norm ); } FLA_Random_tri_matrix( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A ); FLA_Random_tri_matrix( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, B ); FLA_Random_matrix( C ); FLA_Norm1( A, norm ); FLA_Shift_diag( FLA_NO_CONJUGATE, norm, A ); FLA_Norm1( B, norm ); if ( FLA_Obj_is( isgn, FLA_MINUS_ONE ) ) FLA_Negate( norm ); FLA_Shift_diag( FLA_NO_CONJUGATE, norm, B ); time_Sylv_nn( 0, FLA_ALG_REFERENCE, n_repeats, m, n, nb_alg, isgn, A, B, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "data_REF( %d, 1:2 ) = [ %d %6.3lf ]; /n", i, p, gflops ); fflush( stdout ); for ( variant = 1; variant <= n_variants; variant++ ){ fprintf( stdout, "data_var%d( %d, 1:3 ) = [ %d ", variant, i, p ); fflush( stdout ); time_Sylv_nn( variant, FLA_ALG_UNB_OPT, n_repeats, m, n, nb_alg, isgn, A, B, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Sylv_nn( variant, FLA_ALG_BLOCKED, n_repeats, m, n, nb_alg, isgn, A, B, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); } FLA_Obj_free( &A ); FLA_Obj_free( &B ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); FLA_Obj_free( &scale ); FLA_Obj_free( &norm ); fprintf( stdout, "/n" ); } /* Print the MATLAB commands to plot the data */ /* Delete all existing figures */ fprintf( stdout, "figure;/n" ); /* Plot the performance of the reference implementation */ fprintf( stdout, "plot( data_REF( :,1 ), data_REF( :, 2 ), '-' ); /n" ); /* Indicate that you want to add to the existing plot */ fprintf( stdout, "hold on;/n" ); /* Plot the data for the other numbers of threads */ for ( i = 1; i <= n_variants; i++ ){ fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 2 ), '%c:%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); } fprintf( stdout, "legend( ... /n" ); fprintf( stdout, "'Reference', ... /n" ); for ( i = 1; i <= n_variants; i++ ) fprintf( stdout, "'FLAME var%d', ... /n", i ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME sylv//_nn performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc sylv_nn_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( );}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例11: main//.........这里部分代码省略......... } else if( n_input == -1 ) { sprintf( n_dim_desc, "n = p" ); sprintf( n_dim_tag, "n%dp", 1 ); } //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; n = n_input; if( m < 0 ) m = p / abs(m_input); if( n < 0 ) n = p / abs(n_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ // If multiplying A on the left, A is m x m; ...on the right, A is n x n. if ( pc_str[param_combo][0] == 'l' ) FLA_Obj_create( datatype, m, m, 0, 0, &A ); else FLA_Obj_create( datatype, n, n, 0, 0, &A ); FLA_Obj_create( datatype, m, n, 0, 0, &B ); FLA_Obj_create( datatype, m, n, 0, 0, &C ); FLA_Obj_create( datatype, m, n, 0, 0, &C_ref ); FLA_Random_matrix( A ); FLA_Random_matrix( B ); FLA_Random_matrix( C ); FLA_Copy_external( C, C_ref ); fprintf( stdout, "data_symm_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Symm( param_combo, FLA_ALG_REFERENCE, n_repeats, m, n, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Symm( param_combo, FLA_ALG_FRONT, n_repeats, m, n, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &A ); FLA_Obj_free( &B ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_symm_%s( :,1 ), data_symm_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_symm_%s( :,1 ), data_symm_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_symm//_%s', 'fla//_symm//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME symm front-end performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc symm_front_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:pgawron,项目名称:tlash,代码行数:101,
示例12: main//.........这里部分代码省略......... FLA_Random_unitary_matrix( Q ); //FLA_Fill_with_uniform_dist( FLA_ONE, l ); //FLA_Fill_with_inverse_dist( FLA_ONE, l ); FLA_Fill_with_geometric_dist( alpha, l ); { FLA_Copy( Q, Ql ); FLA_Apply_diag_matrix( FLA_RIGHT, FLA_NO_CONJUGATE, l, Ql ); FLA_Gemm( FLA_NO_TRANSPOSE, FLA_CONJ_TRANSPOSE, FLA_ONE, Ql, Q, FLA_ZERO, A ); FLA_Triangularize( FLA_LOWER_TRIANGULAR, FLA_NONUNIT_DIAG, A ); FLA_Copy( A, A_orig ); } FLA_Set( FLA_ZERO, l ); FLA_Set( FLA_ZERO, Q ); FLA_Tridiag_UT_create_T( A, &TT ); FLA_Tridiag_UT( FLA_LOWER_TRIANGULAR, A, TT ); FLA_Tridiag_UT_realify( FLA_LOWER_TRIANGULAR, A, r ); FLA_Tridiag_UT_extract_diagonals( FLA_LOWER_TRIANGULAR, A, d, e ); FLA_Tridiag_UT_form_Q( FLA_LOWER_TRIANGULAR, A, TT ); FLA_Apply_diag_matrix( FLA_RIGHT, FLA_CONJUGATE, r, A ); FLA_Obj_free( &TT ); time_Tevd_v( 0, FLA_ALG_REFERENCE, n_repeats, m, k_accum, b_alg, n_iter_max, A_orig, d, e, G, R, W2, A, l, &dtime, &diff1, &diff2, &gflops ); fprintf( stdout, "data_REFq( %d, 1:3 ) = [ %d %6.3lf %9.2e %6.2le %6.2le ]; /n", i, p, gflops, dtime, diff1, diff2 ); fflush( stdout ); for ( variant = 1; variant <= n_variants; variant++ ){ fprintf( stdout, "data_var%d( %d, 1:3 ) = [ %d ", variant, i, p ); fflush( stdout ); time_Tevd_v( variant, FLA_ALG_UNB_OPT, n_repeats, m, k_accum, b_alg, n_iter_max, A_orig, d, e, G, R, W2, A, l, &dtime, &diff1, &diff2, &gflops ); fprintf( stdout, "%6.3lf %9.2e %6.2le %6.2le ", gflops, dtime, diff1, diff2 ); fflush( stdout ); fprintf( stdout, "];/n" ); fflush( stdout ); } fprintf( stdout, "/n" ); FLA_Obj_free( &A ); FLA_Obj_free( &A_orig ); FLA_Obj_free( &Q ); FLA_Obj_free( &Ql ); FLA_Obj_free( &G ); FLA_Obj_free( &W2 ); FLA_Obj_free( &r ); FLA_Obj_free( &l ); FLA_Obj_free( &d ); FLA_Obj_free( &e ); FLA_Obj_free( &R ); FLA_Obj_free( &alpha ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "plot( data_REF( :,1 ), data_REF( :, 2 ), '-' ); /n" ); fprintf( stdout, "hold on;/n" ); for ( i = 1; i <= n_variants; i++ ) { fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 2 ), '%c:%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 4 ), '%c-.%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); } fprintf( stdout, "legend( ... /n" ); fprintf( stdout, "'Reference', ... /n" ); for ( i = 1; i < n_variants; i++ ) fprintf( stdout, "'unb//_var%d', 'blk//_var%d', ... /n", i, i ); fprintf( stdout, "'unb//_var%d', 'blk//_var%d' ); /n", i, i ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME Hevd_lv performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc tridiag_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例13: main//.........这里部分代码省略......... for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; if( m < 0 ) m = p / f2c_abs(m_input); FLA_Obj_create( datatype, m, m, 0, 0, &A ); FLA_Obj_create( datatype, m, 1, 0, 0, &b ); FLA_Obj_create( datatype, m, 1, 0, 0, &b_orig );/* FLA_Obj_create( datatype, m, m, m, 1, &A ); FLA_Obj_create( datatype, m, 1, 1, 1, &b ); FLA_Obj_create( datatype, m, 1, 1, 1, &b_orig );*/ if ( FLA_Obj_is_single_precision( A ) ) FLA_Obj_create( FLA_FLOAT, 1, 1, 0, 0, &norm ); else FLA_Obj_create( FLA_DOUBLE, 1, 1, 0, 0, &norm ); FLA_Random_tri_matrix( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A ); FLA_Random_matrix( b ); FLA_Copy_external( b, b_orig );/* time_Trinv_un( 0, FLA_ALG_REFERENCE, n_repeats, m, nb_alg, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "data_REF( %d, 1:2 ) = [ %d %6.3lf ]; /n", i, p, gflops ); fflush( stdout );*/ for ( variant = 1; variant <= n_variants; variant++ ){ fprintf( stdout, "data_var%d( %d, 1:7 ) = [ %d ", variant, i, p ); fflush( stdout ); time_Trinv_un( variant, FLA_ALG_UNBLOCKED, n_repeats, m, nb_alg, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Trinv_un( variant, FLA_ALG_UNB_OPT, n_repeats, m, nb_alg, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Trinv_un( variant, FLA_ALG_BLOCKED, n_repeats, m, nb_alg, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); } FLA_Obj_free( &A ); FLA_Obj_free( &b ); FLA_Obj_free( &b_orig ); FLA_Obj_free( &norm ); fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); fprintf( stdout, "plot( data_REF( :,1 ), data_REF( :, 2 ), '-' ); /n" ); for ( i = 1; i <= n_variants; i++ ){ fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 2 ), '%c:%c' ); /n", variant, variant, colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); fprintf( stdout, "'Reference', ... /n" ); for ( i = 1; i <= n_variants; i++ ) fprintf( stdout, "'FLAME var%d', ... /n", i ); fprintf( stdout, "'Location', 'SouthWest' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME trinv//_u performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc trinv_l_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( );}
开发者ID:flame,项目名称:libflame,代码行数:101,
示例14: main//.........这里部分代码省略......... if( m < 0 ) m = p / f2c_abs(m_input); //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; FLA_Obj_create( datatype, m, m, 0, 0, &A ); FLA_Obj_create( datatype, m, m, 0, 0, &Y ); FLA_Obj_create( datatype, m, m, 0, 0, &B ); FLA_Random_spd_matrix( uplo, A ); FLA_Hermitianize( uplo, A ); FLA_Random_spd_matrix( uplo, B ); FLA_Chol( uplo, B );/* time_Eig_gest_nu( 0, FLA_ALG_REFERENCE, n_repeats, p, b_alg, inv, uplo, A, B, &dtime, &diff, &gflops ); fprintf( stdout, "data_REF( %d, 1:2 ) = [ %d %6.3lf ]; /n", i, p, gflops ); fflush( stdout );*/ for ( variant = 1; variant <= n_variants; variant++ ){ fprintf( stdout, "data_var%d( %d, 1:7 ) = [ %d ", variant, i, p ); fflush( stdout ); time_Eig_gest_nu( variant, FLA_ALG_UNBLOCKED, n_repeats, p, b_alg, inv, uplo, A, Y, B, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Eig_gest_nu( variant, FLA_ALG_UNB_OPT, n_repeats, p, b_alg, inv, uplo, A, Y, B, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Eig_gest_nu( variant, FLA_ALG_BLOCKED, n_repeats, p, b_alg, inv, uplo, A, Y, B, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); } FLA_Obj_free( &A ); FLA_Obj_free( &Y ); FLA_Obj_free( &B ); fprintf( stdout, "/n" ); }/* // Print the MATLAB commands to plot the data // Delete all existing figures fprintf( stdout, "figure;/n" ); // Plot the performance of the reference implementation fprintf( stdout, "plot( data_REF( :,1 ), data_REF( :, 2 ), '-' ); /n" ); // Indicate that you want to add to the existing plot fprintf( stdout, "hold on;/n" ); // Plot the data for the other numbers of threads for ( i = 1; i <= n_variants; i++ ){ fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 2 ), '%c:%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); } fprintf( stdout, "legend( ... /n" ); fprintf( stdout, "'Reference', ... /n" ); for ( i = 1; i <= n_variants; i++ ) fprintf( stdout, "'FLAME var%d', ... /n", i ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME chol//_l performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc chol_l_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:flame,项目名称:libflame,代码行数:101,
示例15: mainint main( int argc, char *argv[] ){ int m_input, n_input, m, n, rs, cs, i, datatype; int blocksize[3]; int depth; double buffer[64]; double buffer2[64]; FLA_Obj Af, Ah, Bh; FLA_Init(); fprintf( stdout, "%c Enter hierarchy depth:", '%' ); scanf( "%d", &depth ); fprintf( stdout, "%c %d/n", '%', depth ); for ( i = 0; i < depth; ++i ) { fprintf( stdout, "%c Enter blocksize %d:", '%', i ); scanf( "%d", &blocksize[i] ); fprintf( stdout, "%c %d/n", '%', blocksize[i] ); } fprintf( stdout, "%c enter m n: ", '%' ); scanf( "%d%d", &m_input, &n_input ); fprintf( stdout, "%c %d %d/n", '%', m_input, n_input ); datatype = FLA_DOUBLE; m = m_input; n = n_input; rs = 1; cs = m_input; for( i = 0; i < 64; i++ ) buffer[i] = ( double ) i; for( i = 0; i < 64; i++ ) buffer2[i] = ( double ) 0; //FLASH_Obj_create( datatype, m, n, depth, blocksize, &Ah ); FLASH_Obj_create_without_buffer( datatype, m, n, depth, blocksize, &Ah ); FLASH_Obj_attach_buffer( buffer, rs, cs, &Ah ); //FLASH_Obj_create_flat_conf_to_hier( FLA_NO_TRANSPOSE, Ah, &Af ); //FLASH_Obj_create_hier_conf_to_flat( FLA_NO_TRANSPOSE, Af, depth, blocksize, &Bh ); //FLASH_Obj_create_flat_copy_of_hier( Ah, &Af ); //FLASH_Obj_create_hier_copy_of_flat( Af, depth, blocksize, &Bh ); FLASH_Obj_create_conf_to( FLA_NO_TRANSPOSE, Ah, &Bh ); //FLASH_Axpy( FLA_TWO, Ah, Bh ); FLASH_Copy( Ah, Bh ); //FLA_Obj_create_without_buffer( datatype, 4, 4, &Af ); //FLA_Obj_attach_buffer( buffer2, 4, &Af ); //FLASH_Axpy_flat_to_hier( FLA_TWO, Af, 1, 1, Ah ); //FLASH_Axpy_hier_to_flat( FLA_TWO, 1, 1, Ah, Af ); //FLASH_Axpy_buffer_to_hier( FLA_ONE, 4, 4, buffer, 4, 1, 1, Ah ); //FLASH_Axpy_hier_to_buffer( FLA_ONE, 2, 2, Ah, 4, 4, buffer2, 4 ); //fprintf( stderr, "T: Am An = %d %d/n", FLASH_Obj_scalar_length( Ah ), // FLASH_Obj_scalar_width( Ah ) ); //FLASH_Random_matrix( Ah ); //fprintf( stderr, "depth = %d/n", FLASH_Obj_depth( Ah ) );;/* { int depth; int b_m[4]; int b_n[4]; depth = FLASH_Obj_blocksizes( Bh, b_m, b_n ); fprintf( stderr, "depth = %d/n", depth );; fprintf( stderr, "b_m[0] = %d/n", b_m[0] );; fprintf( stderr, "b_n[0] = %d/n", b_n[0] );; }*/ FLASH_Obj_show( "", Ah, "%11.4e", "" ); FLASH_Obj_show( "", Bh, "%11.4e", "" ); //FLA_Obj_show( "", Af, "%11.4e", "" ); //FLASH_print_struct( Ah ); //fprintf( stderr, "max_diff = %e/n", FLASH_Max_elemwise_diff( Ah, Bh ) );; //FLASH_Obj_free_without_buffer( &Ah ); //FLASH_Obj_free( &Af ); //FLA_Obj_free( &Af ); FLA_Finalize(); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:100,
示例16: main//.........这里部分代码省略......... printf( "plot( data_unb_var3( :,1 ), data_unb_var3( :, 2 ), 'b-.' ); /n" );#endif#if TEST_UNB_VAR4==TRUE printf( "plot( data_unb_var4( :,1 ), data_unb_var4( :, 2 ), 'm-.' ); /n" );#endif#if TEST_UNB_VAR5==TRUE printf( "plot( data_unb_var5( :,1 ), data_unb_var5( :, 2 ), 'c-.' ); /n" );#endif#if TEST_UNB_VAR6==TRUE printf( "plot( data_unb_var6( :,1 ), data_unb_var6( :, 2 ), 'y-.' ); /n" );#endif#if TEST_UNB_VAR7==TRUE printf( "plot( data_unb_var7( :,1 ), data_unb_var7( :, 2 ), 'k-.' ); /n" );#endif#if TEST_UNB_VAR8==TRUE printf( "plot( data_unb_var8( :,1 ), data_unb_var8( :, 2 ), 'm:' ); /n" );#endif#if TEST_BLK_VAR1==TRUE printf( "plot( data_blk_var1( :,1 ), data_blk_var1( :, 2 ), 'r--' ); /n" );#endif#if TEST_BLK_VAR2==TRUE printf( "plot( data_blk_var2( :,1 ), data_blk_var2( :, 2 ), 'g--' ); /n" );#endif#if TEST_BLK_VAR3==TRUE printf( "plot( data_blk_var3( :,1 ), data_blk_var3( :, 2 ), 'b--' ); /n" );#endif#if TEST_BLK_VAR4==TRUE printf( "plot( data_blk_var4( :,1 ), data_blk_var4( :, 2 ), 'm--' ); /n" );#endif#if TEST_BLK_VAR5==TRUE printf( "plot( data_blk_var5( :,1 ), data_blk_var5( :, 2 ), 'c--' ); /n" );#endif#if TEST_BLK_VAR6==TRUE printf( "plot( data_blk_var6( :,1 ), data_blk_var6( :, 2 ), 'y--' ); /n" );#endif#if TEST_BLK_VAR7==TRUE printf( "plot( data_blk_var7( :,1 ), data_blk_var7( :, 2 ), 'k--' ); /n" );#endif#if TEST_BLK_VAR8==TRUE printf( "plot( data_blk_var8( :,1 ), data_blk_var8( :, 2 ), 'm-' ); /n" );#endif printf( "hold on /n"); printf( "xlabel( 'matrix dimension m=n' );/n"); printf( "ylabel( 'GFLOPS/sec.' );/n"); // printf( "axis( [ 0 %d 0 %3.1f ] ); /n", nlast, max_gflops ); printf( "legend( 'FLA Trsm', .../n");#if TEST_UNB_VAR1==TRUE printf( " 'unb var1', .../n");#endif#if TEST_UNB_VAR2==TRUE printf( " 'unb var2', .../n");#endif#if TEST_UNB_VAR3==TRUE printf( " 'unb var3', .../n");#endif#if TEST_UNB_VAR4==TRUE printf( " 'unb var4', .../n");#endif#if TEST_UNB_VAR5==TRUE printf( " 'unb var5', .../n");#endif#if TEST_UNB_VAR6==TRUE printf( " 'unb var6', .../n");#endif#if TEST_UNB_VAR7==TRUE printf( " 'unb var7', .../n");#endif#if TEST_UNB_VAR8==TRUE printf( " 'unb var8', .../n");#endif#if TEST_BLK_VAR1==TRUE printf( " 'blk var1', .../n");#endif#if TEST_BLK_VAR2==TRUE printf( " 'blk var2', .../n");#endif#if TEST_BLK_VAR3==TRUE printf( " 'blk var3', .../n");#endif#if TEST_BLK_VAR4==TRUE printf( " 'blk var4', .../n");#endif#if TEST_BLK_VAR5==TRUE printf( " 'blk var5', .../n");#endif#if TEST_BLK_VAR6==TRUE printf( " 'blk var6', .../n");#endif#if TEST_BLK_VAR7==TRUE printf( " 'blk var7', .../n");#endif#if TEST_BLK_VAR8==TRUE printf( " 'blk var8', .../n");#endif printf( " 2 );/n"); FLA_Finalize( );}
开发者ID:ebeweber,项目名称:CS378-Invariant-Project,代码行数:101,
示例17: main//.........这里部分代码省略......... } else if ( datatype == FLA_FLOAT || datatype == FLA_COMPLEX ) { FLA_Obj_create( FLA_FLOAT, 1, 1, &scale ); FLA_Obj_create( FLA_FLOAT, 1, 1, &norm ); } FLASH_Queue_disable(); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; n = n_input; if( m < 0 ) m = p / abs(m_input); if( n < 0 ) n = p / abs(n_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ FLASH_Obj_create( datatype, m, m, 1, &nb_alg, &A ); FLASH_Obj_create( datatype, n, n, 1, &nb_alg, &B ); FLASH_Obj_create( datatype, m, n, 1, &nb_alg, &C ); FLASH_Obj_create( datatype, m, n, 1, &nb_alg, &C_ref ); FLASH_Random_matrix( A ); FLASH_Random_matrix( B ); FLASH_Random_matrix( C ); FLASH_Norm1( A, norm ); FLASH_Obj_shift_diagonal( FLA_NO_CONJUGATE, norm, A ); FLASH_Norm1( B, norm ); if ( FLA_Obj_is( isgn, FLA_MINUS_ONE ) ) FLA_Negate( norm ); FLASH_Obj_shift_diagonal( FLA_NO_CONJUGATE, norm, B ); FLASH_Copy( C, C_ref ); fprintf( stdout, "data_sylv_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Sylv( param_combo, FLA_ALG_REFERENCE, n_repeats, m, n, isgn, A, B, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Sylv( param_combo, FLA_ALG_FRONT, n_repeats, m, n, isgn, A, B, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLASH_Obj_free( &A ); FLASH_Obj_free( &B ); FLASH_Obj_free( &C ); FLASH_Obj_free( &C_ref ); } fprintf( stdout, "/n" ); } FLA_Obj_free( &scale ); FLA_Obj_free( &norm ); fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_sylv_%s( :,1 ), data_sylv_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_sylv_%s( :,1 ), data_sylv_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_sylv//_%s', 'fla//_sylv//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME sylv front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc sylv_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( );}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例18: main//.........这里部分代码省略......... sprintf( m_dim_tag, "m%dp", 1 ); } if ( 0 < sign ) isgn = FLA_ONE; else isgn = FLA_MINUS_ONE; //datatype = FLA_FLOAT; datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; //datatype = FLA_DOUBLE_COMPLEX; for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; if( m < 0 ) m = p / abs(m_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ FLA_Obj_create( datatype, m, m, 0, 0, &A ); FLA_Obj_create( datatype, m, m, 0, 0, &C ); FLA_Obj_create( datatype, m, m, 0, 0, &C_ref ); FLA_Obj_create( FLA_Obj_datatype_proj_to_real( A ), 1, 1, 0, 0, &scale ); FLA_Obj_create( FLA_Obj_datatype_proj_to_real( A ), 1, 1, 0, 0, &norm ); FLA_Random_tri_matrix( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A ); FLA_Triangularize( FLA_UPPER_TRIANGULAR, FLA_NONUNIT_DIAG, A ); FLA_Norm1( A, norm ); FLA_Shift_diag( FLA_NO_CONJUGATE, norm, A ); FLA_Random_matrix( C ); FLA_Hermitianize( FLA_UPPER_TRIANGULAR, C ); fprintf( stdout, "data_lyap_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Lyap( param_combo, FLA_ALG_REFERENCE, n_repeats, m, isgn, A, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Lyap( param_combo, FLA_ALG_FRONT, n_repeats, m, isgn, A, C, C_ref, scale, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &A ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); FLA_Obj_free( &scale ); FLA_Obj_free( &norm ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_lyap_%s( :,1 ), data_lyap_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_lyap_%s( :,1 ), data_lyap_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_lyap//_%s', 'fla//_lyap//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME lyap front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc lyap_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例19: F77_fla_finalizevoid F77_fla_finalize(){ FLA_Finalize();}
开发者ID:fmarrabal,项目名称:libflame,代码行数:4,
示例20: main//.........这里部分代码省略......... fprintf( stdout, "/nclear all;/n/n" ); if ( m_input > 0 ) { sprintf( m_dim_desc, "m = %d", m_input ); sprintf( m_dim_tag, "m%dc", m_input); } else if( m_input < -1 ) { sprintf( m_dim_desc, "m = p/%d", -m_input ); sprintf( m_dim_tag, "m%dp", -m_input ); } else if( m_input == -1 ) { sprintf( m_dim_desc, "m = p" ); sprintf( m_dim_tag, "m%dp", 1 ); } //datatype = FLA_FLOAT; datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; //datatype = FLA_DOUBLE_COMPLEX; FLASH_Queue_disable(); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; if( m < 0 ) m = p / abs(m_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ FLASH_Obj_create( datatype, m, m, 1, &nb_alg, &A ); FLASH_Obj_create( datatype, m, m, 1, &nb_alg, &A_ref ); if ( pc_str[param_combo][0] == 'l' ) FLASH_Random_spd_matrix( FLA_LOWER_TRIANGULAR, A ); else FLASH_Random_spd_matrix( FLA_UPPER_TRIANGULAR, A ); FLASH_Copy( A, A_ref ); fprintf( stdout, "data_chol_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Chol( param_combo, FLA_ALG_REFERENCE, n_repeats, m, A, A_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Chol( param_combo, FLA_ALG_FRONT, n_repeats, m, A, A_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLASH_Obj_free( &A ); FLASH_Obj_free( &A_ref ); } fprintf( stdout, "/n" ); } fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_chol_%s( :,1 ), data_chol_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_chol_%s( :,1 ), data_chol_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_chol//_%s', 'fla//_chol//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME chol front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc chol_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例21: main//.........这里部分代码省略......... if ( m_input > 0 ) { sprintf( m_dim_desc, "m = %d", m_input ); sprintf( m_dim_tag, "m%dc", m_input); } else if( m_input < -1 ) { sprintf( m_dim_desc, "m = p/%d", -m_input ); sprintf( m_dim_tag, "m%dp", -m_input ); } else if( m_input == -1 ) { sprintf( m_dim_desc, "m = p" ); sprintf( m_dim_tag, "m%dp", 1 ); } //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; FLASH_Queue_set_num_threads( n_threads ); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; if( m < 0 ) m = p / abs(m_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ if ( pc_str[param_combo][0] == 'i' ) inv = FLA_INVERSE; else inv = FLA_NO_INVERSE; if ( pc_str[param_combo][1] == 'l' ) uplo = FLA_LOWER_TRIANGULAR; else uplo = FLA_UPPER_TRIANGULAR; FLASH_Obj_create( datatype, m, m, 1, &b_flash, &A ); FLASH_Obj_create( datatype, m, m, 1, &b_flash, &B ); FLA_Obj_create( FLA_Obj_datatype_proj_to_real( A ), 1, 1, 0, 0, &norm ); FLASH_Random_spd_matrix( uplo, A ); FLASH_Hermitianize( uplo, A ); FLASH_Random_spd_matrix( uplo, B ); FLASH_Chol( uplo, B ); fprintf( stdout, "data_eig_gest_%s( %d, 1:3 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_Eig_gest( param_combo, FLA_ALG_FRONT, n_repeats, m, inv, uplo, A, B, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLASH_Obj_free( &A ); FLASH_Obj_free( &B ); FLA_Obj_free( &norm ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_eig_gest_%s( :,1 ), data_eig_gest_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_eig_gest_%s( :,1 ), data_eig_gest_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_eig_gest//_%s', 'fla//_eig_gest//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME eig_gest front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc eig_gest_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize(); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例22: main//.........这里部分代码省略......... else if( m_input < -1 ) { sprintf( m_dim_desc, "m = p/%d", -m_input ); sprintf( m_dim_tag, "m%dp", -m_input ); } else if( m_input == -1 ) { sprintf( m_dim_desc, "m = p" ); sprintf( m_dim_tag, "m%dp", 1 ); } //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; if( m < 0 ) m = p / abs(m_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ){ //FLA_Obj_create( datatype, m, m, 0, 0, &A ); FLA_Obj_create( datatype, m, m, m, 1, &A ); FLA_Obj_create( datatype, m, 1, 0, 0, &b ); FLA_Obj_create( datatype, m, 1, 0, 0, &b_orig ); if ( FLA_Obj_is_single_precision( A ) ) FLA_Obj_create( FLA_FLOAT, 1, 1, 0, 0, &norm ); else FLA_Obj_create( FLA_DOUBLE, 1, 1, 0, 0, &norm ); FLA_Param_map_netlib_to_flame_uplo( &pc_str[param_combo][0], &uplo ); FLA_Param_map_netlib_to_flame_diag( &pc_str[param_combo][1], &diag ); FLA_Random_tri_matrix( uplo, diag, A ); FLA_Random_matrix( b ); FLA_Copy_external( b, b_orig ); fprintf( stdout, "data_trinv_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout );/* time_Trinv( param_combo, FLA_ALG_REFERENCE, n_repeats, m, uplo, diag, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout );*/ time_Trinv( param_combo, FLA_ALG_FRONT, n_repeats, m, uplo, diag, A, b, b_orig, norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &A ); FLA_Obj_free( &b ); FLA_Obj_free( &b_orig ); FLA_Obj_free( &norm ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_trinv_%s( :,1 ), data_trinv_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_trinv_%s( :,1 ), data_trinv_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_trinv//_%s', 'fla//_trinv//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthWest' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME trinv front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc trinv_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例23: main//.........这里部分代码省略......... else if( n_input < -1 ) { sprintf( n_dim_desc, "n = p/%d", -n_input ); sprintf( n_dim_tag, "n%dp", -n_input ); } else if( n_input == -1 ) { sprintf( n_dim_desc, "n = p" ); sprintf( n_dim_tag, "n%dp", 1 ); } //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; for ( pp = p_first, i = 1; pp <= p_last; pp += p_inc, i += 1 ) { m = m_input; n = n_input; if( m < 0 ) m = pp / abs(m_input); if( n < 0 ) n = pp / abs(n_input); min_m_n = min( m, n ); for ( pivot_combo = 0; pivot_combo < n_pivot_combos; pivot_combo++ ){ FLA_Obj_create( datatype, m, n, 0, 0, &C ); FLA_Obj_create( datatype, m, 1, 0, 0, &b ); FLA_Obj_create( datatype, m, 1, 0, 0, &b_orig ); if ( FLA_Obj_is_single_precision( C ) ) FLA_Obj_create( FLA_FLOAT, 1, 1, 0, 0, &b_norm ); else FLA_Obj_create( FLA_DOUBLE, 1, 1, 0, 0, &b_norm ); FLA_Random_matrix( C ); FLA_Random_matrix( b ); FLA_Copy_external( b, b_orig ); fprintf( stdout, "data_lu_%s( %d, 1:5 ) = [ %d ", pc_str[pivot_combo], i, pp ); fflush( stdout ); //time_LU( pivot_combo, FLA_ALG_REFERENCE, n_repeats, m, n, // C, b, b_orig, b_norm, &dtime, &diff, &gflops ); //fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); //fflush( stdout ); time_LU( pivot_combo, FLA_ALG_FRONT, n_repeats, m, n, C, b, b_orig, b_norm, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &C ); FLA_Obj_free( &b ); FLA_Obj_free( &b_orig ); FLA_Obj_free( &b_norm ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_pivot_combos; i++ ) { fprintf( stdout, "plot( data_lu_%s( :,1 ), data_lu_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_lu_%s( :,1 ), data_lu_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_pivot_combos; i++ ) fprintf( stdout, "'ref//_lu//_%s', 'fla//_lu//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME LU front-end performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc lu_front_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例24: main//.........这里部分代码省略......... } else if( m_input < -1 ) { sprintf( m_dim_desc, "m = p/%d", -m_input ); sprintf( m_dim_tag, "m%dp", -m_input ); } else if( m_input == -1 ) { sprintf( m_dim_desc, "m = p" ); sprintf( m_dim_tag, "m%dp", 1 ); } //datatype = FLA_FLOAT; datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; //datatype = FLA_DOUBLE_COMPLEX; FLASH_Queue_set_num_threads( n_threads ); //FLASH_Queue_set_verbose_output( TRUE ); //FLA_Check_error_level_set( FLA_NO_ERROR_CHECKING ); //FLASH_Queue_disable(); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; n = n_input; if ( m < 0 ) m = p * abs(m_input); if ( n < 0 ) n = p * abs(n_input); for ( param_combo = 0; param_combo < n_param_combos; param_combo++ ) { FLA_Obj_create( datatype, m, n, 0, 0, &A_flat ); FLA_Obj_create( datatype, n, 1, 0, 0, &x_flat ); FLA_Obj_create( datatype, m, 1, 0, 0, &b_flat ); FLA_Random_matrix( A_flat ); FLA_Random_matrix( b_flat ); FLASH_QR_UT_create_hier_matrices( A_flat, 1, &b_flash, &A, &TW ); FLASH_Obj_create_hier_copy_of_flat( b_flat, 1, &b_flash, &b ); FLASH_Obj_create_hier_copy_of_flat( x_flat, 1, &b_flash, &x ); fprintf( stdout, "data_qrut_%s( %d, 1:5 ) = [ %d ", pc_str[param_combo], i, p ); fflush( stdout ); time_QR_UT( param_combo, FLA_ALG_FRONT, n_repeats, m, n, A, TW, b, x, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &A_flat ); FLA_Obj_free( &b_flat ); FLA_Obj_free( &x_flat ); FLASH_Obj_free( &A ); FLASH_Obj_free( &TW ); FLASH_Obj_free( &b ); FLASH_Obj_free( &x ); } }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_param_combos; i++ ) { fprintf( stdout, "plot( data_qrut_%s( :,1 ), data_qrut_%s( :, 2 ), '%c:%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_qrut_%s( :,1 ), data_qrut_%s( :, 4 ), '%c-.%c' ); /n", pc_str[i], pc_str[i], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_param_combos; i++ ) fprintf( stdout, "'ref//_qrut//_%s', 'fla//_qrut//_%s', ... /n", pc_str[i], pc_str[i] ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME qrut front-end performance (%s)' );/n", m_dim_desc ); fprintf( stdout, "print -depsc qrut_front_%s.eps/n", m_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例25: main//.........这里部分代码省略......... fprintf( fpp, "%%/n" ); fprintf( fpp, "%% | Matrix Size | FLASH |/n" ); fprintf( fpp, "%% | n x n | GFlops |/n" ); fprintf( fpp, "%% -----------------------------/n" ); fprintf( fpp, "%s_%u = [/n", OUTPUT_FILE, nb_alg );#endif FLA_Init(); dtimes = ( double * ) FLA_malloc( n_repeats * sizeof( double ) ); flops = ( double * ) FLA_malloc( n_trials * sizeof( double ) ); FLASH_Queue_set_num_threads( n_threads ); FLASH_Queue_set_sorting( sorting ); FLASH_Queue_set_caching( caching ); FLASH_Queue_set_work_stealing( work_stealing ); FLASH_Queue_set_data_affinity( data_affinity ); for ( i = 0; i < n_trials; i++ ) { size = begin + i * increment; FLA_Obj_create( datatype, size, size, 0, 0, &A ); FLA_Obj_create( datatype, size, 1, 0, 0, &x ); FLA_Obj_create( datatype, size, 1, 0, 0, &b ); FLA_Obj_create( datatype, 1, 1, 0, 0, &b_norm ); for ( j = 0; j < n_repeats; j++ ) { FLA_Random_matrix( A ); FLA_Random_matrix( b ); FLASH_Obj_create_hier_copy_of_flat( A, 1, &nb_alg, &AH ); FLASH_Obj_create( FLA_INT, size, 1, 1, &nb_alg, &pH ); FLASH_Obj_create_hier_copy_of_flat( b, 1, &nb_alg, &bH ); dtime = FLA_Clock(); FLASH_LU_piv( AH, pH ); dtime = FLA_Clock() - dtime; dtimes[j] = dtime; FLASH_Apply_pivots( FLA_LEFT, FLA_NO_TRANSPOSE, pH, bH ); FLASH_Trsv( FLA_LOWER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_UNIT_DIAG, AH, bH ); FLASH_Trsv( FLA_UPPER_TRIANGULAR, FLA_NO_TRANSPOSE, FLA_NONUNIT_DIAG, AH, bH ); FLASH_Obj_free( &AH ); FLASH_Obj_free( &pH ); FLASH_Obj_flatten( bH, x ); FLASH_Obj_free( &bH ); } dtime = dtimes[0]; for ( j = 1; j < n_repeats; j++ ) dtime = min( dtime, dtimes[j] ); flops[i] = 2.0 / 3.0 * size * size * size / dtime / 1e9; FLA_Gemv_external( FLA_NO_TRANSPOSE, FLA_ONE, A, x, FLA_MINUS_ONE, b ); FLA_Nrm2_external( b, b_norm ); FLA_Obj_extract_real_scalar( b_norm, &b_norm_value );#ifdef FLA_ENABLE_WINDOWS_BUILD fprintf( stdout, " %d %6.3f %le/n", size, flops[i], b_norm_value );#else fprintf( fpp, " %d %6.3f/n", size, flops[i] ); fprintf( stdout, "Time: %e | GFlops: %6.3f/n", dtime, flops[i] ); fprintf( stdout, "Matrix size: %u x %u | nb_alg: %u/n", size, size, nb_alg ); fprintf( stdout, "Norm of difference: %le/n/n", b_norm_value );#endif FLA_Obj_free( &A ); FLA_Obj_free( &x ); FLA_Obj_free( &b ); FLA_Obj_free( &b_norm ); }#ifdef FLA_ENABLE_WINDOWS_BUILD fprintf( stdout, "];/n/n" );#else fprintf( fpp, "];/n" ); fflush( fpp ); fclose( fpp );#endif FLA_free( dtimes ); FLA_free( flops ); FLA_Finalize(); return 0; }
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例26: main//.........这里部分代码省略......... blas_thread_init(); for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { m = m_input; k = k_input; n = n_input; if( m < 0 ) m = p / abs(m_input); if( k < 0 ) k = p / abs(k_input); if( n < 0 ) n = p / abs(n_input); FLA_Obj_create( FLA_DOUBLE, m, k, &A ); FLA_Obj_create( FLA_DOUBLE, k, n, &B ); FLA_Obj_create( FLA_DOUBLE, m, n, &C ); FLA_Obj_create( FLA_DOUBLE, m, n, &C_ref ); /* Generate random matrices A, C */ if( p > 4000 ){ FLA_Random_matrix( A ); FLA_Random_matrix( B ); FLA_Random_matrix( C ); FLA_Copy_external( C, C_ref ); } blas_cpu_number = 1; //time_Gemm_nn( 0, FLA_ALG_REFERENCE, n_repeats, p, nb_alg, // A, B, C, C_ref, &dtime, &diff, &gflops ); //fprintf( stdout, "data_REF( %d, 1:2 ) = [ %d %6.3lf ]; /n", i, p, gflops ); //fflush( stdout ); for ( j = 0; j < n_thread_experiments; j++ ){ n_threads = n_threads_exp[j]; blas_cpu_number = n_threads; fprintf( stdout, "data_nth%d( %d, 1:3 ) = [ %d ", n_threads, i, p ); fflush( stdout ); time_Gemm_nn( 0, FLA_ALG_REFERENCE, n_repeats, p, nb_alg, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); } fprintf( stdout, "/n" ); FLA_Obj_free( &A ); FLA_Obj_free( &B ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); } /* Print the MATLAB commands to plot the data */ /* Delete all existing figures */ fprintf( stdout, "figure;/n" ); /* Indicate that you want to add to the existing plot */ fprintf( stdout, "hold on;/n" ); /* Plot the data for the other numbers of threads */ for ( i = 0; i < n_thread_experiments; i++ ){ fprintf( stdout, "plot( data_nth%d( :,1 ), data_nth%d( :, 2 ), '%c:%c' ); /n", n_threads_exp[ i ], n_threads_exp[ i ], colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_thread_experiments-1; i++ ) fprintf( stdout, "'%d threads', ... /n", n_threads_exp[ i ] ); fprintf( stdout, "'%d threads', 'Location', 'Best' ); /n", n_threads_exp[ n_thread_experiments-1 ] ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, n_threads_exp[n_thread_experiments-1] * max_gflops ); fprintf( stdout, "title( 'Goto BLAS dgemm performance (%s, %s, %s)' );/n", m_dim_desc, k_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc gemm_nn_goto_p_%s_%s_%s.eps/n", m_dim_tag, k_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( );}
开发者ID:pgawron,项目名称:tlash,代码行数:101,
示例27: FLA_Finalize_safevoid FLA_Finalize_safe( FLA_Error init_result ){ if ( init_result == FLA_SUCCESS ) FLA_Finalize();}
开发者ID:pgawron,项目名称:tlash,代码行数:5,
示例28: main//.........这里部分代码省略......... fprintf( stdout, "/nclear all;/n/n" ); //datatype = FLA_FLOAT; //datatype = FLA_DOUBLE; //datatype = FLA_COMPLEX; datatype = FLA_DOUBLE_COMPLEX; for ( p = p_first, i = 1; p <= p_last; p += p_inc, i += 1 ) { mB = mB_input; mC = mC_input; mD = mD_input; n = n_input; if( mB < 0 ) mB = p / abs(mB_input); if( mC < 0 ) mC = p / abs(mC_input); if( mD < 0 ) mD = p / abs(mD_input); if( n < 0 ) n = p / abs(n_input); for ( variant = 0; variant < n_variants; variant++ ){ FLA_Obj_create( datatype, mB, n, 0, 0, &B ); FLA_Obj_create( datatype, mC, n, 0, 0, &C ); FLA_Obj_create( datatype, mD, n, 0, 0, &D ); FLA_Obj_create( datatype, b_alg, n, 0, 0, &T ); FLA_Obj_create( datatype, n, n, 0, 0, &R ); FLA_Obj_create( datatype, n, n, 0, 0, &E ); FLA_Random_matrix( B ); FLA_Random_matrix( C ); FLA_Random_matrix( D ); FLA_Set( FLA_ZERO, R ); FLA_Herk_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_ONE, B, FLA_ONE, R ); FLA_Herk_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_ONE, D, FLA_ONE, R ); FLA_Chol( FLA_UPPER_TRIANGULAR, R ); FLA_Set( FLA_ZERO, E ); FLA_Herk_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_ONE, B, FLA_ONE, E ); FLA_Herk_external( FLA_UPPER_TRIANGULAR, FLA_CONJ_TRANSPOSE, FLA_ONE, C, FLA_ONE, E ); FLA_Chol( FLA_UPPER_TRIANGULAR, E ); fprintf( stdout, "data_uddate_ut( %d, 1:5 ) = [ %d ", i, p ); fflush( stdout ); time_UDdate_UT( variant, FLA_ALG_FRONT, n_repeats, mB, mC, mD, n, B, C, D, T, R, E, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); FLA_Obj_free( &B ); FLA_Obj_free( &C ); FLA_Obj_free( &D ); FLA_Obj_free( &T ); FLA_Obj_free( &R ); FLA_Obj_free( &E ); } fprintf( stdout, "/n" ); }/* fprintf( stdout, "figure;/n" ); fprintf( stdout, "hold on;/n" ); for ( i = 0; i < n_variants; i++ ) { fprintf( stdout, "plot( data_qr_ut( :,1 ), data_qr_ut( :, 2 ), '%c:%c' ); /n", colors[ i ], ticks[ i ] ); fprintf( stdout, "plot( data_qr_ut( :,1 ), data_qr_ut( :, 4 ), '%c-.%c' ); /n", colors[ i ], ticks[ i ] ); } fprintf( stdout, "legend( ... /n" ); for ( i = 0; i < n_variants; i++ ) fprintf( stdout, "'ref//_qr//_ut', 'fla//_qr//_ut', ... /n" ); fprintf( stdout, "'Location', 'SouthEast' ); /n" ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME UDdate_UT front-end performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc qr_ut_front_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout );*/ FLA_Finalize( ); return 0;}
开发者ID:anaptyxis,项目名称:libflame,代码行数:101,
示例29: main//.........这里部分代码省略......... datatype = FLA_DOUBLE_COMPLEX; /* Allocate space for the matrices */ FLA_Obj_create( datatype, m, m, &A ); FLA_Obj_create( datatype, m, n, &C ); FLA_Obj_create( datatype, m, n, &C_ref ); /* Generate random matrices A, C */ FLA_Random_tri_matrix( FLA_LOWER_TRIANGULAR, FLA_UNIT_DIAG, A ); FLA_Random_matrix( C ); FLA_Copy_external( C, C_ref ); /* Time the reference implementation */ time_Trmm_luh( 0, FLA_ALG_REFERENCE, n_repeats, p, nb_alg, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "data_REF( %d, 1:2 ) = [ %d %6.3lf ]; /n", i, p, gflops ); fflush( stdout ); for ( variant = 1; variant <= n_variants; variant++ ){ //fprintf( stdout, "data_var%d( %d, 1:7 ) = [ %d ", variant, i, p ); fprintf( stdout, "data_var%d( %d, 1:5 ) = [ %d ", variant, i, p ); fflush( stdout ); time_Trmm_luh( variant, FLA_ALG_UNBLOCKED, n_repeats, p, nb_alg, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); time_Trmm_luh( variant, FLA_ALG_BLOCKED, n_repeats, p, nb_alg, A, B, C, C_ref, &dtime, &diff, &gflops ); fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); fflush( stdout ); //time_Trmm_luh( variant, FLA_ALG_OPTIMIZED, n_repeats, p, nb_alg, // A, B, C, C_ref, &dtime, &diff, &gflops ); //fprintf( stdout, "%6.3lf %6.2le ", gflops, diff ); //fflush( stdout ); fprintf( stdout, " ]; /n" ); fflush( stdout ); } fprintf( stdout, "/n" ); FLA_Obj_free( &A ); FLA_Obj_free( &C ); FLA_Obj_free( &C_ref ); } /* Print the MATLAB commands to plot the data */ /* Delete all existing figures */ fprintf( stdout, "figure;/n" ); /* Plot the performance of the reference implementation */ fprintf( stdout, "plot( data_REF( :,1 ), data_REF( :, 2 ), '-' ); /n" ); /* Indicate that you want to add to the existing plot */ fprintf( stdout, "hold on;/n" ); /* Plot the data for the other numbers of threads */ for ( i = 1; i <= n_variants; i++ ) { fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 2 ), '%c:%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 4 ), '%c-.%c' ); /n", i, i, colors[ i-1 ], ticks[ i-1 ] ); //fprintf( stdout, "plot( data_var%d( :,1 ), data_var%d( :, 6 ), '%c--%c' ); /n", // i, i, colors[ i-1 ], ticks[ i-1 ] ); } fprintf( stdout, "legend( ... /n" ); fprintf( stdout, "'Reference', ... /n" ); for ( i = 1; i < n_variants; i++ ) //fprintf( stdout, "'unb//_var%d', 'blk//_var%d', 'opt//_var%d', ... /n", i, i, i ); fprintf( stdout, "'unb//_var%d', 'blk//_var%d', ... /n", i, i ); i = n_variants; fprintf( stdout, "'unb//_var%d', 'blk//_var%d' ); /n", i, i ); fprintf( stdout, "xlabel( 'problem size p' );/n" ); fprintf( stdout, "ylabel( 'GFLOPS/sec.' );/n" ); fprintf( stdout, "axis( [ 0 %d 0 %.2f ] ); /n", p_last, max_gflops ); fprintf( stdout, "title( 'FLAME trmm//_luc performance (%s, %s)' );/n", m_dim_desc, n_dim_desc ); fprintf( stdout, "print -depsc trmm_luc_%s_%s.eps/n", m_dim_tag, n_dim_tag ); fprintf( stdout, "hold off;/n"); fflush( stdout ); FLA_Finalize( );}
开发者ID:pgawron,项目名称:tlash,代码行数:101,
示例30: main//.........这里部分代码省略.........#if TIME_BLK_VAR3 == TRUE Chol_blk_var3( A, nb_alg );#else REF_Chol( TIME_LAPACK, A, nb_alg );#endif dtime = FLA_Clock() - dtime; if ( irep == 0 ) dtime_best = dtime; else dtime_best = ( dtime < dtime_best ? dtime : dtime_best ); } diff = FLA_Max_elemwise_diff( A, Aref ); printf( "data_blk_var3( %d, 1:3 ) = [ %d %le %le];/n", i, n, gflops / dtime_best, diff ); fflush( stdout ); FLA_Obj_free( &A ); FLA_Obj_free( &Aold ); FLA_Obj_free( &Aref ); FLA_Obj_free( &delta ); printf( "/n" ); i++; } /* Print the MATLAB commands to plot the data */ /* Delete all existing figures */ printf( "close all/n" );#if OCTAVE == TRUE /* Plot the performance of FLAME */ printf( "plot( data_FLAME( :,1 ), data_FLAME( :, 2 ), '-k;libflame;' ); /n" ); /* Indicate that you want to add to the existing plot */ printf( "hold on/n" ); /* Plot the performance of the reference implementation */ printf( "plot( data_REF( :,1 ), data_REF( :, 2 ), '-m;reference;' ); /n" ); /* Plot the performance of your implementations */ printf( "plot( data_unb_var1( :,1 ), data_unb_var1( :, 2 ), /"-rx;UnbVar1;/" ); /n" ); printf( "plot( data_unb_var2( :,1 ), data_unb_var2( :, 2 ), /"-go;UnbVar2;/" ); /n" ); printf( "plot( data_unb_var3( :,1 ), data_unb_var3( :, 2 ), /"-b*;UnbVar3;/" ); /n" ); printf( "plot( data_blk_var1( :,1 ), data_blk_var1( :, 2 ), /"-rx;BlkVar1;/", /"markersize/", 3 ); /n" ); printf( "plot( data_blk_var2( :,1 ), data_blk_var2( :, 2 ), /"-go;BlkVar2;/", /"markersize/", 3 ); /n" ); printf( "plot( data_blk_var3( :,1 ), data_blk_var3( :, 2 ), /"-b*;BlkVar3;/", /"markersize/", 3 ); /n" );#else /* Plot the performance of FLAME */ printf( "plot( data_FLAME( :,1 ), data_FLAME( :, 2 ), 'k--' ); /n" ); /* Indicate that you want to add to the existing plot */ printf( "hold on/n" ); /* Plot the performance of the reference implementation */ printf( "plot( data_REF( :,1 ), data_REF( :, 2 ), 'k-' ); /n" ); /* Plot the performance of your implementations */ printf( "plot( data_unb_var1( :,1 ), data_unb_var1( :, 2 ), 'r-.x' ); /n" ); printf( "plot( data_unb_var2( :,1 ), data_unb_var2( :, 2 ), 'g-.o' ); /n" ); printf( "plot( data_unb_var3( :,1 ), data_unb_var3( :, 2 ), 'b-.*' ); /n" ); printf( "plot( data_blk_var1( :,1 ), data_blk_var1( :, 2 ), 'r-x'); /n" ); printf( "plot( data_blk_var2( :,1 ), data_blk_var2( :, 2 ), 'g-o'); /n" ); printf( "plot( data_blk_var3( :,1 ), data_blk_var3( :, 2 ), 'b-*'); /n" );#endif printf( "hold off /n"); printf( "xlabel( 'matrix dimension m=n' );/n"); printf( "ylabel( 'GFLOPS/sec.' );/n"); printf( "axis( [ 0 %d 0 %3.1f ] ); /n", nlast, max_gflops );#if OCTAVE == TRUE printf( "legend( 2 ); /n" ); printf(" print -landscape -solid -color -deps -F:24 Chol.eps/n" );#else printf( "legend( 'FLA Chol', .../n"); printf( " 'Simple loops', .../n"); printf( " 'unb var1', .../n"); printf( " 'unb var2', .../n"); printf( " 'unb var3', .../n"); printf( " 'blk var1', .../n"); printf( " 'blk var2', .../n"); printf( " 'blk var3', 2);/n"); printf( "print -r100 -dpdf Chol.pdf/n");#endif FLA_Finalize( ); exit( 0 );}
开发者ID:ztschir,项目名称:High-Performance,代码行数:101,
注:本文中的FLA_Finalize函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ FLA_Gemm_internal函数代码示例 C++ FLA_FLOAT_PTR函数代码示例 |