コード例 #1
0
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, &para_inner, &subparams, sizeof(param_struct));

	param_struct loopparams = {37};
	irt_lib_pfor(0, 10, 2, &loop_body, &loopparams, sizeof(param_struct));
	irt_merge(j);
}
コード例 #2
0
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);
}
コード例 #3
0
/* ------- 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;
}