突然得到“ __builtin_ia32_sqrtsd_round”是不确定的,使用nvcc / gcc

问题描述 投票:0回答:2

我有一个CUDA NSight项目,可以很好地编译,但是突然之间编译失败。上周我确实安装了一些系统更新(Ubuntu 18.04),这很可能是原因(或部分原因)。不幸的是,我不知道确切安装了什么。我不记得列表中有任何CUDA东西。

无论如何,Nsight创建的nvcc命令行如下:

/usr/local/cuda-10.2/bin/nvcc -I/usr/include/gdal -O2 --compile --relocatable-device-code=false -gencode arch=compute_37,code=compute_37 -gencode arch=compute_61,code=compute_61 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_61,code=sm_61  -x cu -o  "MySource.o" "../MySource.cu"

这会产生很多非常相似的错误,开始于:

/usr/lib/gcc/x86_64-linux-gnu/7/include/avx512fintrin.h(1761): error: identifier "__builtin_ia32_sqrtsd_round" is undefined

/usr/lib/gcc/x86_64-linux-gnu/7/include/avx512fintrin.h(1770): error: identifier "__builtin_ia32_sqrtss_round" is undefined

/usr/lib/gcc/x86_64-linux-gnu/7/include/avx512fintrin.h(2728): error: identifier "__builtin_ia32_scalefsd_round" is undefined

/usr/lib/gcc/x86_64-linux-gnu/7/include/avx512fintrin.h(2737): error: identifier "__builtin_ia32_scalefss_round" is undefined

avx512fintrin.h确实存在于引用位置,并且日期戳记可以追溯到12月。

我正在运行Ubuntu 18.04 x64。gcc和g ++都报告为:7.5.0

正在运行CUDA 10.2(并由nvidia-smi确认)。nvcc --version报告版本10.2 V10.2.89

构建cuda-10.2 / samples / 0_Simple / matrixMul样本(带有make),无错误构建。

定义的错误中的标识符在哪里?我想念什么?发生了什么更改或损坏?

ubuntu gcc compiler-errors cuda nvcc
2个回答
0
投票

我相信我已经找到了问题。 @Marc Glisse对GDAL的评论是一个重要线索。我正在使用nvcc编译所有内容。对于标准C ++,这只是将工作传递给g ++。我也有相同的包含路径。当然,不能直接从CUDA调用GDAL C ++接口(我正在使用)。从CUDA nvcc删除GDAL包含路径,并重新排列包含文件解决了该问题。

一个很好的副作用是它迫使我极大地改善了我的包含文件的卫生!

摘要:在最新的Linux更新中,GDAL甚至不希望包含在CUDA代码中。


0
投票

对此表示感谢。我有完全一样的问题。我尝试仅删除NVCC包含属性中的gdal包含,但仍然遇到此问题。抱歉,但您能否详细说明一下您所做的事情(抱歉,我对很多事情还是陌生的。)

谢谢

Darrel

© www.soinside.com 2019 - 2024. All rights reserved.