Beispiel #1
0
int main() {
    initialize_kernel();

    active = task_create(first, 0, MEDIUM);
    make_ready(active);

    unsigned int kernel_cpu_time = 0;
    Request *req;
    FineTimer timer;
    fine_timer_reset(&timer);
    while((active = schedule())) {
        kernel_cpu_time += fine_timer_elapsed(&timer);
        fine_timer_reset(&timer);
        req = kernel_exit(active);
        active->cpu_time += fine_timer_elapsed(&timer);
        fine_timer_reset(&timer);
        int shutdown = handle(active, req);
        if (shutdown) break;
    }

    // Print out runtime stats
    dump_timing_info(kernel_cpu_time);

    log ("Kernel exiting\n");
    disable_interrupts();
    return 0;
}
void initialize_kernel_c_wrapper(double *p_a0, double *p_a1, double *p_a2,
                                 double *p_a3, double *p_a4, int *p_a5,
                                 int arg_idx0, int x_size) {
#ifdef OPS_GPU
#pragma acc parallel deviceptr(p_a0, p_a1, p_a2, p_a3, p_a4)
#pragma acc loop
#endif
  for (int n_x = 0; n_x < x_size; n_x++) {
    int arg_idx[] = {arg_idx0 + n_x};
    initialize_kernel(p_a0 + n_x * 1 * 1, p_a1 + n_x * 1 * 1,
                      p_a2 + n_x * 1 * 1, p_a3 + n_x * 1 * 1,
                      p_a4 + n_x * 1 * 1, arg_idx);
  }
}
Beispiel #3
0
void frecuency_multiplication(Image<T> &img,const char *filename, int num_kernel = 0){
    int Ncols = (img.cols == (1<<(log_2(img.cols))-1))? img.cols : 1<<(log_2(img.cols));
    int Nrows = (img.rows == (1<<(log_2(img.rows))-1))? img.rows : 1<<(log_2(img.rows));
    Ncols = Nrows = max(Ncols,Nrows);

    cout<<Ncols<<" "<<Nrows<<endl;
    
    Image<cpx> ori(Nrows,Ncols);
    Image<cpx> kernel(Nrows,Ncols);
    Image<cpx> kernel_frec(Nrows,Ncols);
    Image<T> init_kernel(3,3);
    Image<cpx> dest(Nrows,Ncols);
    Image<cpx> final(Nrows,Ncols);
    Image<T> final2(Nrows,Ncols);

    initialize_kernel(init_kernel,num_kernel);
    cp_and_padding(ori,img);
    cp_and_padding(kernel,init_kernel);
  
    FFT_image(ori,dest);
    FFT_image(kernel,kernel_frec);
    multiply(dest,kernel_frec,final);

    FFT_image(final,ori,-1);
        
    for(int i = 0; i < final.rows; ++i)
        for(int j = 0; j < final.cols; ++j){
            //final2(i,j) = ori(i,j).a / (Nrows*Ncols); // REAL
            final2(i,j) = sqrt(ori(i,j).modsq()) / (Nrows*Ncols); // Magnitude
            assert(ori(i,j).b < 1e-4);
        }
    

    final2.normalize(400);

    save_image(filename, final2);   
}