array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 CUDA学习(七十三) - 爱码网

C ++ 11特性:
主机编译器默认启用的C ++ 11功能也受nvcc支持,并受到本文档中所述的限制。 另外,使用-std = c ++ 11标志调用nvcc会打开所有C ++ 11功能,并且还会调用具有相应C ++ 11方言选项的主机预处理器,编译器和链接器。
Lambda表达式:
与lambda表达式关联的闭包类的所有成员函数12的执行空间说明符由编译器派生,如下所示。 如C ++ 11标准中所述,编译器在包含lambda表达式的最小块作用域,类作用域或命名空间作用域中创建闭包类型。 计算包含闭包类型的最内层函数范围,并将相应函数的执行空间说明符分配给闭包类成员函数。 如果没有封闭函数作用域,则执行空间说明符是__host__
lambda表达式和计算执行空间说明符的示例如下所示(在注释中)。

auto globalVar = [] { return 0; }; // __host__
void f1(void) {
    auto l1 = [] { return 1; }; // __host__
}
__device__ void f2(void) {
    auto l2 = [] { return 2; }; // __device__
}
__host__ __device__ void f3(void) {
    auto l3 = [] { return 3; }; // __host__ __device__
}
__device__ void f4(int(*fp)() = [] { return 4; } /* __host__ */) {
}
__global__ void f5(void) {
    auto l5 = [] { return 5; }; // __device__
}
__device__ void f6(void) {
    struct S1_t {
        static void helper(int(*fp)() = [] {return 6; } /* __device__ */) {
        }
    };
}

除非在__device____global__函数中定义lambda,否则不能在__global__函数模板实例的类型或非类型参数中使用lambda表达式的闭包类型。
例子:

template <typename T>
__global__ void foo(T in) { };
template <typename T>
struct S1_t { };
void bar(void) {
    auto temp1 = [] {};
    foo << <1, 1 >> >(temp1); // error: lambda closure type used in
                              // template type argument
    foo << <1, 1 >> >(S1_t<decltype(temp1)>()); // error: lambda closure type used in
                                                // template type argument
}

std::initializer_list:
默认情况下,CUDA编译器会隐式地考虑std :: initializer_list的成员函数,使其具有__host__ __device__执行空间说明符,因此可以直接从设备代码调用它们。 nvcc标志--nohost-device-initializer-list将禁用此行为; std :: initializer_list的成员函数将被视为__host__函数,不会直接从设备代码中调用。
例子:

#include <initializer_list>
__device__ int foo(std::initializer_list<int> in);
__device__ void bar(void)
{
    foo({ 4,5,6 }); // (a) initializer list containing only
                    // constant expressions.
    int i = 4;
    foo({ i,5,6 }); // (b) initializer list with at least one
                    // non-constant element.
                    // This form may have better performance than (a).
}

右值引用:
默认情况下,CUDA编译器会隐式考虑std :: move和std :: forward函数模板,使其具有__host__ __device__执行空间说明符,因此可以直接从设备代码调用它们。 nvcc标志 - no-hostdevice-move-forward将禁用此行为; std :: move和std :: forward将被视为__host__函数,并且不会直接从设备代码调用。\
Constexpr功能和功能模板:
默认情况下,不能从具有不兼容的执行空间13的函数调用constexpr函数。实验nvcc标志--expt-relaxed-constexpr删除此限制。 当这个标志被指定时,主机代码可以调用__device__ constexpr函数,设备代码可以调用__host__ constexpr函数。 当指定--expt-relaxedconstexpr时,nvcc将定义宏__CUDACC_RELAXED_CONSTEXPR__。 请注意,即使相应的模板标有关键字constexpr(C ++ 11 Standard Section [dcl.constexpr.p6]),函数模板实例化也可能不是constexpr函数。
CUDA学习(七十三)

相关文章: