如何在OpenMP LLVM中使用运行时跟踪?

时间:2020-03-08 09:12:05

标签: c openmp llvm llvm-clang

我想启用运行时跟踪并查看输出。类似于

的输出
KD_TRACE(10, ( buff, gtid, schedule, chunk, lb, ub, st ) );

在kmp_dispatch.cpp中

请参阅此 https://elixir.bootlin.com/llvm/latest/source/openmp/runtime/src/kmp_dispatch.cpp#L624

到目前为止,我已经遵循了以下教程: https://passlab.github.io/CSE436536/Assignments/project_dev_setup.html 但是我看不到跟踪器的任何输出。

是否存在特定文件或记录输出的内容?还是登录到终端?

我正在像这样编译openMP程序:

clang omp1.c -L/PATH/llvm_work/openmp/BUILD/runtime/src   -o omp1

ldd omp1

这是输出:

linux-vdso.so.1 (0x00007ffdae305000)

libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fca2f3bb000)

/lib64/ld-linux-x86-64.so.2 (0x00007fca2f7ac000)

我希望这是使用我从源代码构建的OpenMP,而不是libomp。

omp1.c:

#include<stdio.h>
#include "omp.h"

int main()
{
    int i=0;
    #pragma omp parallel for schedule(static)
    for(i=0;i<1000;++i)
    {
        int x = 4+i;
    }
}

但是,当我尝试使用同一命令运行this程序时,出现错误。

/tmp/omp2-d969a9.o: In function `main':

omp2.c:(.text+0x1c8): undefined reference to omp_set_num_threads

clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

有人可以帮助我使用从源代码构建的openMP代码以及在使用示踪剂的情况下正确编译openMP程序吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为您必须告诉编译器,您想通过-fopenmp使用OpenMP:

clang -fopenmp omp1.c -L/PATH/llvm_work/openmp/BUILD/runtime/src -o omp1

答案 1 :(得分:2)

您需要使用-fopenmp标志进行编译。另外,您需要具有运行时的调试版本(使用调试信息构建)+设置环境变量export KMP_DEBUG=511

相关问题