The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use Test::More tests => 8;
use Inline (
C => 'DATA',
with => qw/OpenMP::Simple/,
);
my $env = OpenMP::Environment->new;
note qq{Testing macro provided by OpenMP::Simple, 'PerlOMP_UPDATE_WITH_ENV__MAX_ACTIVE_LEVELS'};
for my $max_active_levels ( 1 .. 8 ) {
my $current_value = $env->omp_max_active_levels($max_active_levels);
is _get_max_active_levels(), $max_active_levels, sprintf qq{The number of threads (%0d) spawned in the OpenMP runtime via OMP_MAX_ACTIVE_LEVELS, as expected}, $max_active_levels;
}
__DATA__
__C__
int _get_max_active_levels() {
PerlOMP_UPDATE_WITH_ENV__MAX_ACTIVE_LEVELS
int ret = 0;
#pragma omp parallel
{
#pragma omp single
ret = omp_get_max_active_levels();
}
return ret;
}
__END__