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

标签 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 程序吗?

谢谢你。

最佳答案

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

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

关于c - 如何在 OpenMP LLVM 中使用运行时跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60586002/

相关文章:

parallel-processing - #pragma for 末尾的隐式障碍

ios - 在 Xcode 中使用 -force_load 链接器标志会导致重复符号错误

compiler-construction - LLVM是否适合并行语言?

llvm - 如何判断LLVM指令是否具有左侧

c - Ubuntu 16.04 缓冲区溢出

c - 从函数中重新分配结构中的动态数组

c++ - Linux 上的共享库和链接 (elf)

在 C 程序中更改子进程的内容。

c++ - ICPC : command line error: option '-openmp' not supported

time - 为 Fortran 多线程程序计时