关于stylegan3第一次运行编译filtered_lrelu_plugin出错的问题
报错如下:
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出错的问题相关推荐
- 用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢?...
用scanline取BMP上某点的颜色,代码如下,为什么可以编译,运行时却出错呢? Delphi / Windows SDK/API http://www.delphi2007.net/DelphiM ...
- java运行构建期间出错_构建和运行Java 8支持
java运行构建期间出错 尚未提供对Java 8的Eclipse支持. 如果要使用它,则必须构建它. Eclipsepedia的JDT Core / Java8页面包含有关使用Eclipse Java ...
- 第一次运行JADE平台
JADE是多agent开发框架,遵循fipa规范,他提供了基本的命名服务,黄业服务,通讯机制等,可以有效地与其它java开发平台和技术集成. 今天第一次运行jade3.4,并成功执行一个最简单的hel ...
- 基于ubuntu-20.04.3的snort+Barnyard2+BASE的入侵检测系统安装时Barnyard2反编译时出错解决
基于ubuntu-20.04.3的snort+Barnyard2+BASE的入侵检测系统安装时Barnyard2反编译时出错解决 在按照https://www.modb.pro/db/159797大佬 ...
- 试图运行项目时出错,无法启动调试。没有正确安装调试器,请运行安装程序安装或恢复调试器。...
用Visual Studio.net 2003调试项目时,出现错误对话框,显示如下: 试图运行项目时出错,无法启动调试.没有正确安装调试器,请运行安装程序安装或恢复调试 ...
- Android 中设置只是程序第一次运行才显示的界面
程序安装后第一次启动: 启动页-->功能介绍页-->系统主页 以后启动: 启动页-->系统主页 所以在启动页中判断一下就可以了 可以弄一个文件保存一个状态,推荐用SharedPref ...
- [UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库
利用应用程序设置来实现此功能. 1.首先,获取APP设置的容器: ApplicationDataContainer localSettings = ApplicationData.Current.Lo ...
- Android编译Libwebcore出错解决方法
Android编译Libwebcore出错解决方法 如下,在编译android源码时出现错误 target SharedLib: libwebcore (out/target/product/gene ...
- android开发板出错,为开发板编译时出错是什么原因
我也是怎么办 Arduino:1.8.4 (Windows 7), 开发板:"Arduino/Genuino Uno" C:\Program Files\Arduino\ardui ...
- uni-app运行编译报错
uni-app运行编译失败: 原因:安装目录问题 解决方案:将下载的安装包放在英文目录下,路径中不要出现中文
最新文章
- 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)
- linux 下安装fbprophet
- 如何获取exe,dll中的图标以及源程序
- python 的基础 学习 第六天 基础数据类型的操作方法 字典
- 社群经济:如何利用社群做营销?
- python封装sql脚本_pymysql的简单封装代码实例
- 电脑投屏电视怎么设置_手机投屏怎么设置全屏
- 中职“网络班级”中家校沟通模块的应用实践
- 【mediasoup 带宽估计】aimd算法2 : AimdRateControl
- 笔记本计算机图标怎么设置出来,电脑桌面图标隐藏了怎么弄出来
- 用友U8案例教程销售管理后台配置
- Linux第7章Gdk及Cairo基础,源文件:Ubuntu中使用GLUT和GDK将图片文件加载到纹理单元...
- 第1节 基本数据类型分析
- uni-app真机运行app时报错:TypeError: Cannot read property ‘call’ of undefined
- 熔断器熔断时间标准_保险丝熔断时间标准 保险丝熔断标准
- win10安装IIS时报错windows无法请求的更改,错误代码0x8007057解决办法2017年10月15日
- Java 8 新特性 宋红康跟学
- 2016--Analysis of the DNN-based SRE systems in multi-language conditions
- ITSS是什么?申请ITSS信息技术服务运行维护标准符合性证书有什么用?
- centOs7开启防火墙
热门文章
- Tox:你想知道的内容
- 登录服务器xp系统,xp系统登入云服务器
- c语言 -- 三位数的逆序
- Xmanager的xbrowser登陆图形界面
- python去除图片水印api,python去除图片水印(部分可)
- hdu 2036 改革春风吹满地(叉积求多边形面积)
- 霍纳法则c语言算法代码,霍纳法则(Horner's rule)
- 3 - Error writing file 'C:\Windows\TEMP\MY18F3.tmp' (Errcode: 28)
- csu1164 Dominating
- 贵州安顺:红色基因激活初心密码 为民服务谱写秀丽篇章