报错如下:

filtered_lrelu.cpp(147): error C4984: 'if constexpr' is a C++17 language extension

原因是我用的Visual studio 2017里的编译器好像是C++14的标准,但是这个语句是C++17的。自动学完C++就再也没碰过,所以只能摸索着整。尝试装了2022版本的VS,但是CUDA 11.1编译只支持2017和2019的,官方给的installer里又没有2019。后来在stylegan3的官方库里找到一个issue是有大哥碰到了这个问题并解决了:
https://github.com/NVlabs/stylegan3/issues/38

在这里记录一下解决的方法:
(1) 在/torch_utils/ops/filtered_lrelu.h里加入

template < typename T >
struct ScalarTypeLessThan4 {using type = T;
};template <>
struct ScalarTypeLessThan4 < double > {using type = float;
};

(2) 在/torch_utils/ops/filtered_lrelu.cpp中,把大概157行的这一段,也就是出问题的地方

        if constexpr (sizeof(scalar_t) <= 4) // Exclude doubles. constexpr prevents template instantiation.{using scalar_t_l4 = ScalarTypeLessThan4<scalar_t>::type;// Choose kernel based on index type, datatype and sign read/write modes.if      (!index64b &&  writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int32_t, true,  false>(p, sharedKB);else if (!index64b && !writeSigns &&  readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int32_t, false, true >(p, sharedKB);else if (!index64b && !writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int32_t, false, false>(p, sharedKB);else if ( index64b &&  writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int64_t, true,  false>(p, sharedKB);else if ( index64b && !writeSigns &&  readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int64_t, false, true >(p, sharedKB);else if ( index64b && !writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t, int64_t, false, false>(p, sharedKB);}

替换为:

        if /*constexpr*/ (sizeof(scalar_t) <= 4) // Exclude doubles. constexpr prevents template instantiation.{using scalar_t_l4 = ScalarTypeLessThan4<scalar_t>::type;// Choose kernel based on index type, datatype and sign read/write modes.if      (!index64b &&  writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int32_t, true,  false>(p, sharedKB);else if (!index64b && !writeSigns &&  readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int32_t, false, true >(p, sharedKB);else if (!index64b && !writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int32_t, false, false>(p, sharedKB);else if ( index64b &&  writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int64_t, true,  false>(p, sharedKB);else if ( index64b && !writeSigns &&  readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int64_t, false, true >(p, sharedKB);else if ( index64b && !writeSigns && !readSigns) spec = choose_filtered_lrelu_kernel<scalar_t_l4, int64_t, false, false>(p, sharedKB);}

然后就可以顺利运行啦!
附一张生成的图

关于stylegan3第一次运行编译filtered_lrelu_plugin出错的问题相关推荐

  1. 用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢?...

    用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢? Delphi / Windows SDK/API http://www.delphi2007.net/DelphiM ...

  2. java运行构建期间出错_构建和运行Java 8支持

    java运行构建期间出错 尚未提供对Java 8的Eclipse支持. 如果要使用它,则必须构建它. Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java ...

  3. 第一次运行JADE平台

    JADE是多agent开发框架,遵循fipa规范,他提供了基本的命名服务,黄业服务,通讯机制等,可以有效地与其它java开发平台和技术集成. 今天第一次运行jade3.4,并成功执行一个最简单的hel ...

  4. 基于ubuntu-20.04.3的snort+Barnyard2+BASE的入侵检测系统安装时Barnyard2反编译时出错解决

    基于ubuntu-20.04.3的snort+Barnyard2+BASE的入侵检测系统安装时Barnyard2反编译时出错解决 在按照https://www.modb.pro/db/159797大佬 ...

  5. 试图运行项目时出错,无法启动调试。没有正确安装调试器,请运行安装程序安装或恢复调试器。...

            用Visual Studio.net 2003调试项目时,出现错误对话框,显示如下:         试图运行项目时出错,无法启动调试.没有正确安装调试器,请运行安装程序安装或恢复调试 ...

  6. Android 中设置只是程序第一次运行才显示的界面

    程序安装后第一次启动: 启动页-->功能介绍页-->系统主页 以后启动: 启动页-->系统主页 所以在启动页中判断一下就可以了 可以弄一个文件保存一个状态,推荐用SharedPref ...

  7. [UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库

    利用应用程序设置来实现此功能. 1.首先,获取APP设置的容器: ApplicationDataContainer localSettings = ApplicationData.Current.Lo ...

  8. Android编译Libwebcore出错解决方法

    Android编译Libwebcore出错解决方法 如下,在编译android源码时出现错误 target SharedLib: libwebcore (out/target/product/gene ...

  9. android开发板出错,为开发板编译时出错是什么原因

    我也是怎么办 Arduino:1.8.4 (Windows 7), 开发板:"Arduino/Genuino Uno" C:\Program Files\Arduino\ardui ...

  10. uni-app运行编译报错

    uni-app运行编译失败: 原因:安装目录问题 解决方案:将下载的安装包放在英文目录下,路径中不要出现中文

最新文章

  1. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)
  2. linux 下安装fbprophet
  3. 如何获取exe,dll中的图标以及源程序
  4. python 的基础 学习 第六天 基础数据类型的操作方法 字典
  5. 社群经济:如何利用社群做营销?
  6. python封装sql脚本_pymysql的简单封装代码实例
  7. 电脑投屏电视怎么设置_手机投屏怎么设置全屏
  8. 中职“网络班级”中家校沟通模块的应用实践
  9. 【mediasoup 带宽估计】aimd算法2 : AimdRateControl
  10. 笔记本计算机图标怎么设置出来,电脑桌面图标隐藏了怎么弄出来
  11. 用友U8案例教程销售管理后台配置
  12. Linux第7章Gdk及Cairo基础,源文件:Ubuntu中使用GLUT和GDK将图片文件加载到纹理单元...
  13. 第1节 基本数据类型分析
  14. uni-app真机运行app时报错:TypeError: Cannot read property ‘call’ of undefined
  15. 熔断器熔断时间标准_保险丝熔断时间标准 保险丝熔断标准
  16. win10安装IIS时报错windows无法请求的更改,错误代码0x8007057解决办法2017年10月15日
  17. Java 8 新特性 宋红康跟学
  18. 2016--Analysis of the DNN-based SRE systems in multi-language conditions
  19. ITSS是什么?申请ITSS信息技术服务运行维护标准符合性证书有什么用?
  20. centOs7开启防火墙

热门文章

  1. Tox:你想知道的内容
  2. 登录服务器xp系统,xp系统登入云服务器
  3. c语言 -- 三位数的逆序
  4. Xmanager的xbrowser登陆图形界面
  5. python去除图片水印api,python去除图片水印(部分可)
  6. hdu 2036 改革春风吹满地(叉积求多边形面积)
  7. 霍纳法则c语言算法代码,霍纳法则(Horner's rule)
  8. 3 - Error writing file 'C:\Windows\TEMP\MY18F3.tmp' (Errcode: 28)
  9. csu1164 Dominating
  10. 贵州安顺:红色基因激活初心密码 为民服务谱写秀丽篇章