[英]Binary doesn't work and IR doesn't have any characteristic forking calls
我试图使用 libgomp 运行带有 clang 10.0.0 的 openmp 代码。
这是我使用 libomp 运行代码所做的(我也需要查看 LLVM-IR)
clang -Xclang -cc1 file.c -emit-llvm -S -fopenmp=libomp
clang -fopenmp=libomp file.ll
在这里,二进制文件按预期工作(并行)并且 IR 具有特征@__kmpc_fork_call
function。
当我尝试使用 libgomp 进行相同操作时
clang -Xclang -cc1 file.c -emit-llvm -S -fopenmp=libgomp
clang -fopenmp=libgomp file.ll
在这种情况下,二进制文件既不能按预期工作(只有一个线程运行),IR 也没有任何特征分叉调用。 我在这里做错了吗?
AFAIK,遗憾的是,到目前为止还没有真正支持此功能。 Clang (12.0) 的最新版本显然不会生成 GOMP function 调用,而它使用自己的 OpenMP 运行时。
有关详细信息,请参阅此报告的错误。 开发人员说:
我认为
-fopenmp=libgomp
根本不起作用。 [...]-fopenmp=libgomp
就像您在没有-fopenmp
的情况下进行编译一样。 [...] Clang 仅使用libomp
接口,不依赖libgomp
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.