2022-11-04 09:35:42 -07:00

42 lines
806 B
C

/*
* @@name: parallel.1
* @@type: C
* @@operation: link
* @@expect: success
* @@version: pre_omp_3.0
*/
#include <omp.h>
void subdomain(float *x, int istart, int ipoints)
{
int i;
for (i = 0; i < ipoints; i++)
x[istart+i] = 123.456;
}
void sub(float *x, int npoints)
{
int iam, nt, ipoints, istart;
#pragma omp parallel default(shared) private(iam,nt,ipoints,istart)
{
iam = omp_get_thread_num();
nt = omp_get_num_threads();
ipoints = npoints / nt; /* size of partition */
istart = iam * ipoints; /* starting array index */
if (iam == nt-1) /* last thread may do more */
ipoints = npoints - istart;
subdomain(x, istart, ipoints);
}
}
int main()
{
float array[10000];
sub(array, 10000);
return 0;
}