Why is this code slow?
rkompass
rkompass at gmx.de
Thu Mar 28 20:18:10 UTC 2024
On Thursday, 28 March 2024 at 14:07:43 UTC, Salih Dincer wrote:
> On Thursday, 28 March 2024 at 11:50:38 UTC, rkompass wrote:
>>
>> Turning back to this: Are there similarly simple libraries for
>> C, that allow for
>> parallel computation?
>
> You can achieve parallelism in C using libraries such as
> OpenMP, which provides a set of compiler directives and runtime
> library routines for parallel programming.
>
> Here’s an example of how you might modify the code to use
> OpenMP for parallel processing:
>
> ```c
> . . .
>
> #pragma omp parallel for reduction(+:result)
> for (int s = ITERS; s >= 0; s -= STEPS) {
> result += leibniz(s);
> }
> . . . ```
> To compile this code with OpenMP support, you would use a
> command like gcc -fopenmp your_program.c. This tells the GCC
> compiler to enable OpenMP directives. The #pragma omp parallel
> for directive tells the compiler to parallelize the loop, and
> the reduction clause is used to safely accumulate the result
> variable across multiple threads.
>
> SDB at 79
Nice, thank you.
It worked endlessly until I saw I had to correct the `for` to
`for (int s = ITERS; s > ITERS-STEPS; s--)`
Now the result is:
```
3.1415926535897936
Execution time: 0.212483 (seconds).
```
This result is sooo similar!
I didn't know that OpenMP programming could be that easy.
Binary size is 16K, same order of magnitude, although somewhat
less.
D advantage is gone here, I would say.
More information about the Digitalmars-d-learn
mailing list