![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高性能计算
文章平均质量分 89
ichdream
这个作者很懒,什么都没留下…
展开
-
【GPT系列-从理论到实践】Improving Language Understanding by Generative Pre-Training
为什么要有这片研究成果呢?之前的方法有什么困难,在NLP领域的各个任务上有什么不足?这段文字强调了从原始文本中有效地学习的能力对于减轻自然语言处理(NLP)中对监督学习依赖的重要性。大多数深度学习方法需要大量手动标注的数据,这限制了它们在许多因缺乏标注资源而受限的领域的适用性。在这些情况下,能够利用无标签数据中的语言信息的模型为收集更多标注提供了一种有价值的替代方案,因为收集标注可能既耗时又昂贵。此外,即使在监督较多的情况下,以无监督的方式学习良好的表示也可以显著提高性能。原创 2023-04-07 15:00:40 · 352 阅读 · 0 评论 -
【GPGPU编程】GPGPU架构剖析之谓词寄存器
我们知道CPU可以控制程序的条件执行,GPGPU也支持线程的条件执行,但是条件执行语句等对整体的计算性能影响比较大,为了尽可能提升GPGPU整体的计算吞吐量,在GPGPU内部集成了谓词寄存器。原创 2023-04-06 10:00:35 · 894 阅读 · 1 评论 -
【GPGPU编程】GPGPU内部的可编程处理器,可编程体现在哪里?
综上所述,GPGPU内部的可编程多处理器(SM)具有高度可编程性,允许开发者编写自定义的并行程序,实现各种图形渲染和通用计算任务。这种可编程性体现在支持可编程着色器、并行编程模型、动态调度和高级功能支持等方面。我们一般称GPGPU的核心是可编程多处理器,在NVDIA中称为流处理器,即Streaming Multiprocessor, SM,在AMD的架构中称之为计算单元,即Compute Unit, CU。可编程着色器:现代GPU架构支持可编程着色器,如顶点着色器、几何着色器、片段着色器和计算着色器等。原创 2023-04-05 22:07:34 · 228 阅读 · 0 评论 -
【GPGPU编程】核心概念blockIdx和blockDim区别和联系
而线程网格是由线程块组成,其数量有gridDim来指定。线程块是线程的集合,其数量由blockDim来指定。我们在编程时会通过blockIdx和blockDim和数据的索引index来建立映射。线程网格是最大的线程范围,它包含了主机代码在启动内核函数时所涉及到的所有线程。在GPGPU的架构中,有两个核心概念:blockIdx和blockDim。这两个有什么区别和联系呢?原创 2023-04-04 13:33:21 · 415 阅读 · 0 评论 -
【C++高并发编程】reactor并发编程模型
Reactor模式是一种事件驱动的并发编程模型,它解决了在高并发环境下处理大量客户端请求的问题。Reactor模式的核心思想是将事件的处理逻辑与事件分发机制解耦,使得程序能够以非阻塞方式处理多个I/O事件。Reactor模式利用操作系统提供的I/O多路复用机制(如select、poll、epoll等),高效地监听和分发事件。Reactor模式的基本组件:fill:#333;color:#333;color:#333;fill:none;分发事件生成事件处理事件Reactor事件处理器事件源。原创 2023-04-01 18:46:51 · 953 阅读 · 0 评论 -
【C++高性能编程专题】高并发编程模式
不同的是,Proactor模式中的事件处理是基于异步操作完成的,即IO操作完成后,系统会发出信号通知应用程序,然后应用程序可以处理已完成的IO操作。在Actor模式中,每个Actor都是单线程执行,因此不需要考虑线程同步和资源竞争的问题,可以避免很多并发问题,提高程序的可维护性和可靠性。Active Object模式是一种基于消息传递的并发模式,它通过将对象的方法调用封装为消息,将消息传递给对象的消息队列中,然后由对象的私有线程从队列中取出消息进行处理。该模式通常使用同步线程池和异步事件处理器来实现。原创 2023-04-01 12:36:00 · 597 阅读 · 0 评论 -
【性能工具专题】内存分析工具之smem使用深度解析
PSS和USS可以帮助您识别和调试共享内存问题,而RSS可以帮助您了解进程实际使用的物理内存量。如果您需要更深入地了解进程的内存使用情况,则可以查看PSS、USS和RSS值的详细报告,以识别问题并进行调试。因此,PSS表示进程当前使用的内存量,其中包括共享库和代码的内存;RSS表示进程当前在RAM中驻留的物理内存总量,它包括进程所使用的所有内存,包括共享内存、私有内存和页缓存。当使用smem命令时,它将返回一个内存使用情况报告,其中包括一些缩写词,如PSS、USS和RSS。它可以统计的比较详细。原创 2023-03-27 17:39:32 · 692 阅读 · 0 评论 -
如何删除C++容器中满足特定条件的元素
C++ 中的 remove-erase idiom 解决了在删除容器(如 vector、list、deque 等)中满足特定条件的元素时可能遇到的以下问题:遍历与删除的问题:当我们在遍历容器的过程中删除元素时,可能会导致迭代器失效,从而引发未定义行为。remove-erase idiom 通过将要删除的元素移至容器末尾,并在遍历结束后统一删除,避免了这个问题。效率问题:直接使用容器的 erase 函数逐个删除元素可能导致低效的操作。原创 2023-03-18 21:40:36 · 800 阅读 · 0 评论