Skip to content

[Flang][OpenMP][OMPT] Warning for loop types not needed anymore #112545

Open
@Thyre

Description

@Thyre

Back in #63904, I've reported that the OpenMP Tools Interface implementation in LLVM fails to transfer the loop type to an attached tool, giving only a limited amount of information.

At some point between the reported issue and #97429, a warning was added for Flang explicitly:

OMP: Warning #189: OMPT: Cannot determine workshare type; using the default (loop) instead. This issue is fixed in an up-to-date compiler.

Back when the issue was not fixed in libomp, the warning was a bit weird, as the issue was not fixed in an up-to-date compiler. However, the issue is now irrelevant, as the information is transferred correctly:

program parallel_sum
    use omp_lib
    implicit none

    integer(8) :: sum
    integer :: i

    sum = 0

    call omp_set_num_threads( 2 )

    !$omp parallel do reduction(+:sum) default(none)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

    !$omp parallel do reduction(+:sum) default(none) schedule(static)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

    !$omp parallel do reduction(+:sum) default(none) schedule(dynamic)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

    !$omp parallel do reduction(+:sum) default(none) schedule(guided)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

    !$omp parallel do reduction(+:sum) default(none) schedule(auto)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

    !$omp parallel do reduction(+:sum) default(none) schedule(runtime)
    do i = 0, 99
        sum = sum + i
    end do
    !$omp end parallel do

end program parallel_sum

Attaching a basic information dumping tool, the following information is obtained:

$ flang --version
flang version 20.0.0git (https://github.com/llvm/llvm-project.git 77f8297c6fdaa62121ddb108043dcaad5c45c7ad)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/apps/software/Clang/trunk/bin
Build config: +assertions
$ flang -fopenmp test.f90
flang-20: warning: OpenMP support in flang is still experimental [-Wexperimental-option]
$ ./a.out | grep "callback_work"
OMP: Warning #189: OMPT: Cannot determine workshare type; using the default (loop) instead. This issue is fixed in an up-to-date compiler.
[0][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000001 (0x55b5b7030f60) | task_data->value = 555000002 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591b310
[0][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000001 (0x55b5b7030f60) | task_data->value = 555000002 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591b34d
[1][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000001 (0x55b5b7030f60) | task_data->value = 555000003 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591b310
[1][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000001 (0x55b5b7030f60) | task_data->value = 555000003 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591b34d
[0][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000002 (0x55b5b7030f60) | task_data->value = 555000004 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591b140
[0][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000002 (0x55b5b7030f60) | task_data->value = 555000004 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591b17d
[1][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000002 (0x55b5b7030f60) | task_data->value = 555000005 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591b140
[1][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000002 (0x55b5b7030f60) | task_data->value = 555000005 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591b17d
[0][callback_work] work_type = loop_dynamic | endpoint = begin | parallel_data->value = 666000003 (0x55b5b7030f60) | task_data->value = 555000006 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591af5f
[1][callback_work] work_type = loop_dynamic | endpoint = begin | parallel_data->value = 666000003 (0x55b5b7030f60) | task_data->value = 555000007 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591af5f
[0][callback_work] work_type = loop_dynamic | endpoint = end | parallel_data->value = 666000003 (0x55b5b7030f60) | task_data->value = 555000006 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591af82
[1][callback_work] work_type = loop_dynamic | endpoint = end | parallel_data->value = 666000003 (0x55b5b7030f60) | task_data->value = 555000007 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591af82
[0][callback_work] work_type = loop_guided | endpoint = begin | parallel_data->value = 666000004 (0x55b5b7030f60) | task_data->value = 555000008 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591ad8f
[1][callback_work] work_type = loop_guided | endpoint = begin | parallel_data->value = 666000004 (0x55b5b7030f60) | task_data->value = 555000009 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591ad8f
[1][callback_work] work_type = loop_guided | endpoint = end | parallel_data->value = 666000004 (0x55b5b7030f60) | task_data->value = 555000009 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591adb2
[0][callback_work] work_type = loop_guided | endpoint = end | parallel_data->value = 666000004 (0x55b5b7030f60) | task_data->value = 555000008 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591adb2
[0][callback_work] work_type = loop_guided | endpoint = begin | parallel_data->value = 666000005 (0x55b5b7030f60) | task_data->value = 555000010 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591abbf
[0][callback_work] work_type = loop_guided | endpoint = end | parallel_data->value = 666000005 (0x55b5b7030f60) | task_data->value = 555000010 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591abe2
[1][callback_work] work_type = loop_guided | endpoint = begin | parallel_data->value = 666000005 (0x55b5b7030f60) | task_data->value = 555000011 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591abbf
[1][callback_work] work_type = loop_guided | endpoint = end | parallel_data->value = 666000005 (0x55b5b7030f60) | task_data->value = 555000011 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591abe2
[0][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000006 (0x55b5b7030f60) | task_data->value = 555000012 (0x55b5b7039640) | count = 100 | codeptr_ra = 0x55b5b591a9ef
[0][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000006 (0x55b5b7030f60) | task_data->value = 555000012 (0x55b5b7039640) | count = 0 | codeptr_ra = 0x55b5b591aa12
[1][callback_work] work_type = loop_static | endpoint = begin | parallel_data->value = 666000006 (0x55b5b7030f60) | task_data->value = 555000013 (0x55b5b7039780) | count = 100 | codeptr_ra = 0x55b5b591a9ef
[1][callback_work] work_type = loop_static | endpoint = end | parallel_data->value = 666000006 (0x55b5b7030f60) | task_data->value = 555000013 (0x55b5b7039780) | count = 0 | codeptr_ra = 0x55b5b591aa12

This matches the information obtained with a C / C++ source code.
Therefore, the warning can probably just be removed.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions