绪论
由于最近写论文走火入魔,所以第一部分是绪论。
起因是我遇到了标题所示的问题,但是百度了一圈,大部分都是转载的同一个解决办法:将sm_XX改成sm_60。也许这样有效,但是为什么呢?
相关工作
找了几秒钟,突然看到一个Stack Overflow的相关问题链接,感觉柳暗花明又一村!(顺带提一嘴,外国冲浪选手的这种论坛真的比国内的强一点,希望国内的还是戒骄戒躁,一个问题能够搞清楚本质)
问题链接如下:Stack Overflow问题(nvcc fatal: Value ‘sm_20’ is not defined for option ‘gpu-architecture’)(之前的连接不知道为啥掉了,重新贴了一个链接)
问题中提供的具体信息链接:smXX与显卡架构对照(Matching CUDA arch and CUDA gencode for various NVIDIA architectures)
因为我太过贴心,再附上一个链接供参考:Windows/Linux如何查看GPU架构?
解决办法
翻译一下,-arch后面跟的参数smXX与你的显卡架构有关,比如sm20是一个很老的值了,只在Fermi架构上可用,在其他架构的显卡上报错,这就是报错由来。
为了防止链接再掉,将第二个链接的部分截图放到这供参考
(当然文章里面还有更加详细的信息,将具体的NVIDIA GPU版本和smXX做了对应,感兴趣的可以进去详细看看):
那么很简单,根据你的显卡选一个sm选项,就可以了。而不是一味地60,小锤60,大锤也60,这样你亏本,你的显卡也摸鱼。如果能摸鱼,我也想把自己设置成sm20。
最后,在哪里改-arch参数呢?太过久远我不记得了,但是综合参考链接以及评论区,应该是修改CMakeList.txt文件没错。如果有错欢迎评论区指正~