Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef struct
- {
- double a[MAX_THREADS];
- double b[MAX_THREADS];
- } lib_workspace;
- double lib_calc_something(double x, lib_workspace * work)
- {
- int thread_id = omp_get_thread_num();
- work->a[thread_id] = x - 2.0;
- work->b[thread_id] = x + 1.0;
- return work->a[thread_id] * work->b[thread_id];
- }
- #pragma omp parallel for
- for (x = 0.0; x < 1.0; x += 0.1)
- {
- double y = lib_calc_something(x, work);
- ...
- }
- typedef struct
- {
- double a;
- double b;
- } lib_workspace;
- double lib_calc_something(double x, lib_workspace * work)
- {
- work->a = x - 2.0;
- work->b = x + 1.0;
- return work->a * work->b;
- }
- /* allocate MAX_THREADS copies of lib_workspace */
- for (i = 0; i < MAX_THREADS; ++i)
- work[i] = lib_alloc();
- #pragma omp parallel for
- for (x = 0.0; x < 1.0; x += 0.1)
- {
- int thread_id = omp_get_thread_num();
- double y = lib_calc_something(x, work[thread_id]);
- ...
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement