Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/perl-openmp/p5-openmp

Metapackage for using OpenMP in Perl
https://github.com/perl-openmp/p5-openmp

Last synced: about 1 month ago
JSON representation

Metapackage for using OpenMP in Perl

Awesome Lists containing this project

README

        

This is a metapackage for using OpenMP and Perl.

```perl
#!/usr/bin/env perl
use strict;
use warnings;

use OpenMP;

use Inline (
C => 'DATA',
with => qw/OpenMP::Simple/,
);

my $omp = OpenMP->new;

for my $want_num_threads ( 1 .. 8 ) {
$omp->env->omp_num_threads($want_num_threads);

$omp->env->assert_omp_environment; # (optional) validates %ENV

# call parallelized C function
my $got_num_threads = _check_num_threads();

printf "%0d threads spawned in ".
"the OpenMP runtime, expecting %0d\n",
$got_num_threads, $want_num_threads;
}

__DATA__
__C__

/* C function parallelized with OpenMP */
int _check_num_threads() {
int ret = 0;

PerlOMP_UPDATE_WITH_ENV__NUM_THREADS /* <~ MACRO x OpenMP::Simple */

#pragma omp parallel
{
#pragma omp single
ret = omp_get_num_threads();
}

return ret;
}

__END__
```