![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 60
叶子心情你不懂
帅哥
展开
-
cuda编程学习笔记 第二章 cuda memory management
应用的性能可能有 75% 都花费在内存相关问题上。NVPROF and NVVP这俩是调试工具,不知道是不是基于CUPTI (CUDA Profiler Tools Interface)。NVPROF是命令行工具,nvvp是可视化工具。nvvp有四个模块:Timeline,Summary,Guide,Analysis results其中 Guide 适合新手,新手应该多注意。为了分析出应用的性能瓶颈,我们需要timeling analysis 和 metric analysis编译:要in原创 2021-09-12 22:03:05 · 718 阅读 · 0 评论 -
cuda编程学习笔记 第一章 introduction
准备系统学习cuda知识。这一章基本都懂,记录一下一些细节:global 表示函数在device上 后面永远是voiddevice function is asynchromous. cudaDeviceSynchronize() waits the device code finish用自带的变量类型可以自动实现alignment,如果自定义结构体需要手工操作:struct __align__(16) {float a, b, c;} 记录查询到的我笔记本的GPU参数,方便编程:gt原创 2021-09-11 10:37:51 · 149 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Chapter 05 Smart Pointers and Memory Management
5.1 RAII and Reference Counting理解Objective-C/Swift/JavaScript的程序员应该知道引用计数的概念。对引用计数进行计数以防止内存泄漏。基本思想是计算动态分配对象的数量。每当添加对同一对象的引用时,所引用对象的引用计数将增加一次。每删除一个引用,引用计数就减少1。当对象的引用计数减少到零时,所指向的堆内存将被自动删除。在传统的c++中,记住手动释放资源并不总是最佳实践。因为我们很容易忘记释放资源,导致泄漏。所以通常的做法是,对于对象,我们在构造函数时分原创 2020-11-14 17:25:07 · 280 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Chapter 04 Containers
4.1 Linear Container4.1.1 std::array当你看到这个容器时,你肯定会遇到这样的问题:为什么直接介绍std::array而不是std::vector ?已经有传统数组了,为什么要用std::array?首先回答第一个问题。与std::vector不同,std::array对象的大小是固定的。如果容器的大小是固定的,那么可以先使用std::array容器。此外,由于std::vector是自动展开的,当存储大量数据时,容器被删除,容器不会自动返回被删除元素的对应内存原创 2020-11-14 16:25:29 · 310 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Chapter 03: Language Runtime Enhancements
3.1 Lambda ExpressionLambda表达式是现代c++中最重要的特性之一,而Lambda表达式实际上提供了一个类似于匿名函数的特性。匿名函数在需要函数时使用,但您不希望使用名称调用函数。实际上有很多很多这样的场景。所以匿名函数几乎是现代编程语言的标准。3.1.1 BasicLambda表达式的基本语法如下:[capture list] (parameter list) mutable(optional) exception attribute -> return type {原创 2020-10-15 17:00:24 · 240 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Chapter 02: Language Usability Enhancements
当我们在运行前声明、定义一个变量或常量、控制代码流、面向对象的函数、模板编程等时,它可能发生在编写代码或编译器编译代码时。为此,我们通常谈论语言可用性,它指的是在运行时之前发生的语言行为。2.1 Constants2.1.1 nullptrnullptr的用途似乎取代了NULL。 在某种意义上,传统的c++将NULL和0看作是一样的东西,这取决于编译器如何定义NULL,一些编译器将NULL定义为((void*)0)一些将直接定义为0。c++不允许隐式地将void * 转换为其他类型。但是如果编译器试原创 2020-10-08 11:36:48 · 712 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Chapter 01: Towards Modern C++
1.1 Deprecated FeaturesDeprecation并不是完全不可用的,它只是暗示一些特性将从未来的标准中消失,应该避免使用。然而,不赞成使用的特性仍然是标准库的一部分,而且大多数特性实际上是“永久”保留的,这是出于兼容性的原因。如果你从未使用或听说过下面的一些标准,请不要试图去理解它们。您应该直接学习新特性字符串常量不再允许分配给char *。如果您需要用一个字符串常量来分配和初始化一个char *,您应该使用const char *或auto。 char *str = "h原创 2020-10-06 20:01:04 · 242 阅读 · 0 评论 -
现代c++编程c++11/14/17/20:Preface
翻github,发现c++长的和我学的太不一样了。课堂学的还是c++98,但是现在已经20年了。链接Introductionc++的用户组是相当大的。从c++ 98的出现到c++ 11的正式定稿,它已经积累了十多年的时间。c++ 14/17是对c++ 11的重要补充和优化,而c++ 20将该语言带到了现代化的大门。所有这些新标准的扩展特性都提供给了c++语言。焕发出新的活力。那些仍在使用传统c++(本书将c++ 98及其以前的c++标准称为传统c++)的c++程序员甚至可能会惊讶于这样一个事实:在阅读原创 2020-10-06 17:48:00 · 640 阅读 · 0 评论 -
GNU中用于原子内存访问的内置函数
https://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.htmlAPI功能type __sync_fetch_and_add (type *ptr, type value, …)type __sync_fetch_and_sub (type *ptr, type value, …)type __sync_fetch_and_or (type *ptr, type value, …)type __sync_fetch_an原创 2020-08-13 23:10:54 · 159 阅读 · 0 评论 -
libnuma详解(A NUMA API for LINUX)
白皮书numa3手册numa3手册一、什么是NUMA关于这个很多博客都有,基本都是这个白皮书的翻译或者扩充。在传统的SMP(对称多处理)系统中,计算机有一个由所有cpu共享的内存控制器。当所有处理器同时访问内存时,这种单一内存连接常常成为瓶颈。对于具有更多cpu的大型系统,它也不能很好地扩展。由于这个原因,越来越多的现代系统正在使用CC/NUMA(缓存一致性/非一致性内存访问)架构。例如AMD* Opteron*、IBM* Power5*、HP* Superdome和SGI* Altix*。原创 2020-08-05 22:23:01 · 9249 阅读 · 0 评论 -
图计算系统小调研
仔细看看图计算系统是干嘛的,做笔记,决定未来方向。一. 费马科技 五篇知乎文 图计算系统发展简史https://zhuanlan.zhihu.com/p/83202666社交网络分析、网页排序、社区发现、天体物理学、计算化学、生物信息学、超大规模集成电路的设计、运输路线的规划、电力网络的仿真模拟等等早期的图计算框架:早期的面向图计算的程序库缺乏对用户友好的编程模型,需要介入和管理的细节较多,上手难度大(BGL、PBGL)。通用大数据处理系统通过较为廉价的普通服务器集群进行大规模数原创 2020-08-04 22:39:32 · 769 阅读 · 0 评论 -
Introduction to statistical machine learning复习笔记1概率密度部分
概率密度部分期望和峰值 当outliers很严重skewness and kurtosis Skewness: E[(x−E[x])3](D[x])3 Kurtosis: E[(x−E[x])4](D[x])4−3\begin{array}{l}\text { Skewness: } \frac{E\left[(x-E[x])^{3}\right]}{(D[x])^{3}} \\\text { Kurtosis: } \frac{E\left[(原创 2020-07-22 21:54:31 · 266 阅读 · 0 评论 -
Introduction to statistical machine learning(chapter 27 SUPPORT VECTOR CLASSIFICATION)
27.1 MAXIMUM MARGIN CLASSIFICATIONIn this section, a classifcation algorithm called the support vector machine isintroduced, which is based on the margin maximization principle.27.1.1 HARD MARGIN S...原创 2020-07-18 14:02:41 · 270 阅读 · 0 评论 -
《因果推理原理:基础与学习算法》 前言
因果律是一个引人入胜的研究课题。它的数学化是最近才开始的,许多概念问题仍在辩论之中,而且辩论的程度往往相当激烈。这本书虽然总结了我们关于因果律的10年心血,但其他人研究这个问题的时间要比我们长得多,而且已经有了关于因果律的书籍,包括the comprehensive treatments of Pearl[2009],Spirtes等[2000],Imbens和Rubin[2015]。我们希望我们的书能够以两种方式补充现有的工作。第一种,本书展现了对一个因果律子问题的重视,这个子问题可能被认为是最基本和原创 2020-07-18 13:26:41 · 551 阅读 · 0 评论 -
《因果推理原理:基础与学习算法》第一章 因果模型和统计模型
利用统计学习,我们试图从观测数据中推断出随机变量之间的相关性。例如,基于对两个随机变量的联合观察样本,我们可以构建一个预测器,该预测器在只给出其中一个变量的新值的情况下,可以很好地估计另一个变量。这种预测背后的理论已经得到了很好的发展,尽管它只适用于简单的环境,但已经为从数据中学习提供了深刻的见解。由于两个原因,在本章我们将描述这些中的一些见解。首先,这将帮助我们理解因果推理的问题有多困难,其中潜在的模型不再是一个固定的随机变量联合分布,而是一个包含多个这样的分布的结构。第二,尽管有限样本结果的因果估计是稀原创 2020-07-18 13:26:11 · 3371 阅读 · 4 评论 -
《因果推理原理:基础与学习算法》第二章 因果推理的假设
既然我们已经了解了SCMs的基本组成部分,现在是暂停并考虑我们已经看到的一些假设的好时机,以及为了因果推理和学习的目的这些假设意味着什么。我们讨论的一个重要概念将会是一种“”独立“”的形式,并且我们可以使用一种被称为Beuchet椅子的视错觉来非正式地介绍它。当我们看到像图2.1左边这样的物体时,我们的大脑会做出这样的假设:物体和它发出的光所包含的信息到达我们大脑的机制是相互独立的。我们可以从一个非常具体的角度来看待这个物体,从而打破这个假设。如果我们这样做,感知就会出错:我们会感知到椅子的三维结构,而这原创 2020-07-18 13:25:43 · 1670 阅读 · 0 评论 -
《因果推理原理:基础与学习算法》第三章 因-果模型
本章将因果关系的一些基本概念公式化,适用于因果模型只包含两个变量的情况。假设这两个变量不是无关紧要的,并且它们的依赖关系不仅仅是由于一个共同的原因,这就构成了一个因果模型。我们简要介绍SCMs、干预措施和反事实。所有这些概念都是在多元因果模型的背景下再次定义的(第六章),我们希望在两个变量中首先遇到这些概念会使这些概念更容易理解。结构化因果律模型SCMs是将因果关系和概率关系联系起来的重要工具。定义3.1 (结构因果模型)SCM C与graph 'C->E’由两个赋值公式组成:C:=NC;(3原创 2020-07-18 13:25:06 · 1265 阅读 · 0 评论