jjzjj

constant

全部标签

memory - CUDA 常量内存分配是如何工作的?

我想了解一下如何分配常量内存(使用CUDA4.2)。我知道总可用的常量内存是64KB。但是这个内存是什么时候在设备上实际分配的呢?此限制适用于每个内核、cuda上下文还是整个应用程序?假设.cu文件中有多个内核,每个内核使用的常量内存都少于64K。但总的恒定内存使用量超过64K。是否可以按顺序调用这些内核?如果使用不同的流同时调用它们会发生什么?如果有一个大型CUDA动态库,其中包含许多内核,每个内核都使用不同数量的常量内存?如果有两个应用程序都需要一半以上的可用常量内存会怎样?第一个应用程序运行良好,但第二个应用程序何时会失败?在应用启动、cudaMemcpyToSymbol()调用

c++ - double 类型的静态类成员的常量表达式初始值设定项

在C++11和C++14中,为什么我需要在以下代码段中使用constexpr:classFoo{staticconstexprdoubleX=0.75;};而这会产生编译器错误:classFoo{staticconstdoubleX=0.75;};而且(更令人惊讶的是)编译没有错误?classFoo{staticconstdoubleX;};constdoubleFoo::X=0.75; 最佳答案 在C++03中,我们只允许为枚举类型的const积分的静态成员变量提供类内初始化器,在C++11中,我们可以使用constexpr在类中

c++ - double 类型的静态类成员的常量表达式初始值设定项

在C++11和C++14中,为什么我需要在以下代码段中使用constexpr:classFoo{staticconstexprdoubleX=0.75;};而这会产生编译器错误:classFoo{staticconstdoubleX=0.75;};而且(更令人惊讶的是)编译没有错误?classFoo{staticconstdoubleX;};constdoubleFoo::X=0.75; 最佳答案 在C++03中,我们只允许为枚举类型的const积分的静态成员变量提供类内初始化器,在C++11中,我们可以使用constexpr在类中

c++ - 如何在模板代码中使用编译时常量条件避免 "conditional expression is constant"警告?

考虑代码:templateCByteArrayserialize(constT&value){if(std::is_pod::value)returnserializePodType(value);elseif(std::is_convertible::value)returnserialize(Variant(value));else{assert(0=="Unsupportedtype");returnCByteArray();}}显然,编译器给我这个警告是正确的if(std::is_pod::value)等等,但是我该如何规避呢?我找不到避免这种检查的方法,而且没有statici

c++ - 如何在模板代码中使用编译时常量条件避免 "conditional expression is constant"警告?

考虑代码:templateCByteArrayserialize(constT&value){if(std::is_pod::value)returnserializePodType(value);elseif(std::is_convertible::value)returnserialize(Variant(value));else{assert(0=="Unsupportedtype");returnCByteArray();}}显然,编译器给我这个警告是正确的if(std::is_pod::value)等等,但是我该如何规避呢?我找不到避免这种检查的方法,而且没有statici

c++ - 此错误消息是否正确 : non-type template argument is not a constant expression

以下程序可以使用GCC5.2编译,但不能使用clang3.6:constexprboolflag();templateconstexprbooltest(){returnb;}intmain(){}我用clang得到的错误信息是:main.cpp:3:20:error:non-typetemplateargumentisnotaconstantexpressiontemplate^~~~~~main.cpp:3:20:note:undefinedfunction'flag'cannotbeusedinaconstantexpressionmain.cpp:1:16:note:decla

c++ - 此错误消息是否正确 : non-type template argument is not a constant expression

以下程序可以使用GCC5.2编译,但不能使用clang3.6:constexprboolflag();templateconstexprbooltest(){returnb;}intmain(){}我用clang得到的错误信息是:main.cpp:3:20:error:non-typetemplateargumentisnotaconstantexpressiontemplate^~~~~~main.cpp:3:20:note:undefinedfunction'flag'cannotbeusedinaconstantexpressionmain.cpp:1:16:note:decla

C++1y/C++14 : Assignment to object outside its lifetime is not allowed in a constant expression?

根据当前草案,以下C++14/C++1y程序是否格式错误?#includetemplatestructliteral_array{Tdata[n];};templateconstexprliteral_arrayoperator+(literal_arraya,literal_arrayb){literal_arrayx;for(size_ti=0;ia={1,2,3};constexprliteral_arrayb={4,5};constexprautoc=a+b;}Clangtrunk(在撰写本文时)给出:error:constexprvariable'c'mustbeinitia

C++1y/C++14 : Assignment to object outside its lifetime is not allowed in a constant expression?

根据当前草案,以下C++14/C++1y程序是否格式错误?#includetemplatestructliteral_array{Tdata[n];};templateconstexprliteral_arrayoperator+(literal_arraya,literal_arrayb){literal_arrayx;for(size_ti=0;ia={1,2,3};constexprliteral_arrayb={4,5};constexprautoc=a+b;}Clangtrunk(在撰写本文时)给出:error:constexprvariable'c'mustbeinitia

c++ - 案例表达式不恒定

我在switch语句中收到“caseexpressionnotconstant”错误。但是,header为使用的常量提供了定义,构造函数在其初始化列表中为它们提供了初始化。此外,当我将鼠标悬停在“问题”语句上时,它会将它们标识为常量。constintThisClass::EXAMPLE_CONSTANTerrorexpressionmusthaveaconstantvalue这对我来说似乎有点违反直觉。我做了一些研究,发现了其他人遇到的类似问题。他们被告知所有常量实际上必须在“main”中初始化,这是语言的限制。真的是这样吗?似乎不太可能。 最佳答案