void para(void* data) { param_struct* params = (param_struct*)data; printf("Hello outer world with number %d\n", params->num); param_struct subparams = {666}; irt_joinable j = irt_lib_parallel(2, 2, ¶_inner, &subparams, sizeof(param_struct)); param_struct loopparams = {37}; irt_lib_pfor(0, 10, 2, &loop_body, &loopparams, sizeof(param_struct)); irt_merge(j); }
void insieme_wi_startup_implementation(irt_work_item* wi) { irt_parallel_job job = { 8,8,1, &g_insieme_impl_table[INSIEME_TEST_WI_INDEX], NULL }; irt_joinable joinable = irt_parallel(&job); irt_merge(joinable); }
/* ------- Function Definitions --------- */ int32_t __insieme_fun_8(int32_t argc, char** argv) { int32_t N = 650; if (argc > 1) { N = atoi(argv[1]); }; int32_t numIter = 100; if (argc > 2) { numIter = atoi(argv[1]); }; float* u; float* tmp; float* f; float* res; u = (float*)malloc(sizeof(float)*((uint64_t)(N*N)*sizeof(float)/sizeof(float))); // WINFIX: missing cast to float* added tmp = (float*)malloc(sizeof(float)*((uint64_t)(N*N)*sizeof(float)/sizeof(float))); // WINFIX: missing cast to float* added f = (float*)malloc(sizeof(float)*((uint64_t)(N*N)*sizeof(float)/sizeof(float))); // WINFIX: missing cast to float* added res = (float*)malloc(sizeof(float)*((uint64_t)(N*N)*sizeof(float)/sizeof(float))); // WINFIX: missing cast to float* added if (!(!(u == 0) && !(tmp == 0) && !(f == 0) && !(res == 0))) { printf("Error allocating arrays\n"); }; memset((void*)u, 0, (uint64_t)(N*N)*sizeof(float)); memset((void*)f, 0, (uint64_t)(N*N)*sizeof(float)); for (int32_t var_20 = 0, var_87 = N, var_88 = 1; var_20 < var_87; var_20+=var_88) { for (int32_t var_22 = 0, var_89 = N, var_90 = 1; var_22 < var_89; var_22+=var_90) { f[var_20*N+var_22] = (float)init_func(var_20, var_22); }; }; double resv = 0.0; double factor = pow((double)1/(double)N, (double)2); for (int32_t var_32 = 0, var_92 = numIter, var_93 = 1; var_32 < var_92; var_32+=var_93) { // WINFIX: // old: irt_merge(irt_parallel(&(irt_parallel_job){1, 4294967295, 1, 1, (irt_lw_data_item*)(&(struct __insieme_gen_type_27){8, &N, &u, &tmp, &factor, &f})})); // new: irt_merge(irt_parallel(&(IRT_STACK_STRUCT(irt_parallel_job, 1, 4294967295, 1, &g_insieme_impl_table[1], (irt_lw_data_item*)(&IRT_STACK_STRUCT(_insieme_gen_type_27, 8, &N, &u, &tmp, &factor, &f)))))); memcpy((void*)u, (void*)tmp, (uint64_t)(N*N)*sizeof(float)); for (int32_t var_40 = 1, var_101 = N-1, var_102 = 1; var_40 < var_101; var_40+=var_102) { for (int32_t var_42 = 1, var_103 = N-1, var_104 = 1; var_42 < var_103; var_42+=var_104) { res[var_40*N+var_42] = f[var_40*N+var_42]-(float)4*u[var_40*N+var_42]+u[(var_40-1)*N+var_42]+u[(var_40+1)*N+var_42]+u[var_40*N+var_42-1]+u[var_40*N+var_42+1]; }; }; double norm = (double)0; for (int32_t var_45 = 1, var_105 = N-1, var_106 = 1; var_45 < var_105; var_45+=var_106) { for (int32_t var_47 = 1, var_107 = N-1, var_108 = 1; var_47 < var_107; var_47+=var_108) { norm = norm+pow((double)res[var_45*N+var_47], (double)2); }; }; resv = sqrt(norm)/(double)(N-1); }; free(u); free(tmp); free(f); free(res); printf("Job Done! - residuo: %lf\n", resv); irt_exit(0); // WINFIX: missing return return 0; }