Exemple #1
0
int main()
{
    unsigned int OUTER_LOOP_COUNT, NUM_X, NUM_Y, NUM_T;
	const REAL s0 = 0.03, strike = 0.03, t = 5.0, alpha = 0.2, nu = 0.6, beta = 0.5;

    readDataSet( OUTER_LOOP_COUNT, NUM_X, NUM_Y, NUM_T );

    const int Ps = get_CPU_num_threads();
    REAL* res = (REAL*)malloc(OUTER_LOOP_COUNT*sizeof(REAL));

    {   // Original Program (Sequential CPU Execution)
        cout<<"\n// Running OpenMP parallelized project program"<<endl;

        unsigned long int elapsed = 0;
        struct timeval t_start, t_end, t_diff;
        gettimeofday(&t_start, NULL);

        run_OrigCPU( OUTER_LOOP_COUNT, NUM_X, NUM_Y, NUM_T, s0, t, alpha, nu, beta, res );

        gettimeofday(&t_end, NULL);
        timeval_subtract(&t_diff, &t_end, &t_start);
        elapsed = t_diff.tv_sec*1e6+t_diff.tv_usec;

        // validation and writeback of the result
        bool is_valid = validate   ( res, OUTER_LOOP_COUNT );
        writeStatsAndResult( is_valid, res, OUTER_LOOP_COUNT,
                             NUM_X, NUM_Y, NUM_T, false, Ps, elapsed );
    }

    return 0;
}
Exemple #2
0
int main() {
    LoopROScalars    scals;
    SobolArrays      sob_arrs;
    ModelArrays      md_arrs;
    BrowBridgeArrays bb_arrs;

    fprintf(stdout, "\n// Generic Pricing, Multi-Threaded Benchmark:\n");

    readDataSet(scals, sob_arrs, md_arrs, bb_arrs);

    fprintf(stdout, "// Contract: %d, MC Its#: %d, #Underlyings: %d, #Path Dates: %d, chunk: %d\n\n", 
            scals.contract, scals.num_mcits, scals.num_under, scals.num_dates, scals.chunk      );

    const int Ps = get_CPU_num_threads();

    double* prices;
    unsigned long int elapsed;
    { // run kernel
        struct timeval t_start, t_end, t_diff;
        gettimeofday(&t_start, NULL);

        computeSobolFixIndex( sob_arrs, scals.chunk );
        { // do work and cleanup
            prices = run_CPUkernel( Ps, scals, sob_arrs, md_arrs, bb_arrs );
        }

        gettimeofday(&t_end, NULL);
        timeval_subtract(&t_diff, &t_end, &t_start);
        elapsed = t_diff.tv_sec*1e6+t_diff.tv_usec;

        md_arrs .cleanup();
        bb_arrs .cleanup();
        sob_arrs.cleanup();
    }

    {   // validation and writeback of the result
        bool is_valid = validate   ( scals.num_models, prices );
        writeStatsAndResult( is_valid, scals.num_models, prices, false, Ps, elapsed ); 
        free(prices);       
    }

    return 0; // XXX this was "1" before, why?
}