[PerlOMP] test 2

Brett Estrade, Principal brett at acutisdata.com
Fri Jul 19 02:19:00 CEST 2024


Check this out,

#

!/usr/bin/env perl

use

strict;

use

warnings;

use

OpenMP::Simple;

use

OpenMP::Environment;

use

Inline (

C

=>

'

DATA

'

,

with

=>

qw/

OpenMP::Simple

/

,
);

my

$env

= OpenMP::Environment

->

new;

for

my

$want_num_threads

( 1 .. 8 ) {

$env

->

omp_num_threads(

$want_num_threads

);

$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__

--
Brett Estrade
Principal/Owner
Coastal Computing Services, LLC
DBA Acutis Computing and Data Consultancy
https://coastalcomputingservices.net

https://acutisdata.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://perl-guilds.net/pipermail/openmp_perl-guilds.net/attachments/20240719/0ee520ea/attachment.htm>


More information about the OpenMP mailing list