自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 谱图理论之谱嵌入

图嵌入(Graph Embedding)有四种主流的方法,矩阵分解、随机游走、自编码器和图神经网络。图嵌入是将图结构数据映射到的技术,旨在保留图中的拓扑结构、节点属性和语义信息,同时降低计算复杂度。这件事情在不同领域有着不同的定义与解释,但是本质是一种映射函数f,在保留原信息的基础上,实现降维的行为。所述的谱嵌入即为矩阵分解的一种方法,通过分解节点关系矩阵获得。我想,在理解一件事物的时候首先是一种感觉,其次是数学理论。仅仅是如何应用去解决某个问题是相对简单的,而何时、何地是困难的。

2025-06-09 22:25:08 1338

原创 TBB-Note-Algo-parallel_scan

扫描,虽然不常见,但也是很重要的算法。它又被称为前缀和(prefix),类似于归约,其核心是为输入序列中的每个元素生成累积结果,同时保留中间状态。扫描操作对输入序列x0​x1​xn​进行逐元素累积计算,生成两个结果:(1)中间结果:每个位置的累积值y0​y1​yn​(如yi​x0​x1​xi​(2)最终结果:最后一次累积的总值yn​。是一个函数模板,其中的一个典型的函数签名如下。

2025-05-17 21:56:11 1359

原创 谱图理论之矩阵基础

文章参考自。图的主要表示方法有两种:邻接表与邻接矩阵,两者各有优劣。而在谱图理论中,由于邻接矩阵能直接映射图的连接关系,表现出编码的直观性,且邻接矩阵的谱性质对应谱图理论的核心(特征值和特征向量),因而主要考虑邻接矩阵表示方法。

2025-05-15 20:15:08 906

原创 TBB-Note-Algo-parallel_reduce

(reduce)和(scan)。reduce通过聚合操作将多个输入值合并为一个输出值。通常和map结合使用,map :将输入数据拆分为独立片段,每个片段生成中间键值对,reducution​:对相同 key 的 value 集合进行聚合;而scan模式不仅计算最终聚合结果,还为每个元素生成前缀结果(这个过程类似reduction),scan的实现分块并行。对比图如下。是 一个函数模板,它依赖于关联性(associative)来使用并行任务执行执行归约操作。

2025-05-08 22:12:18 858

原创 TBB-Note-Algo-parallel_for_each

在左图中,第一列和主对角线上的计算是独立的,而其他的均是有两个依赖。此外,任务的划分形成了自然的同步点,又避免了显式的同步损耗。除了第一列和主对角线上的block的计算是top和left依赖的。而当元素数量极大且任务体(Body)执行时间较长时,遍历和任务调度的开销占比降低,性能的瓶颈就在Body的执行上。是从循环到并行范式的跃迁,for_each的迭代语义扩展成无序并行执行,而解除迭代顺序的约束是找到独立任务。在这个代码中,开始于一个根节点,作为并行处理的起点,这里使用了数组来强调任务队列的初始化行为。

2025-05-03 20:50:26 1209

原创 TBB-Note-Algo-parallel_for

对循环结构的天然适配性和高效的并行能力,已经成为了最广泛使用的工具。是最常用的一个并行算法,简洁且多样的API设计能够适配多种数据结构,灵活性和高并行性能可结合多种模式算法,所谓百样玲珑。当然这边有潜在的问题,比如处理一行时,粒度可能比较大。是一个函数模板,将for-loop的迭代视作独立任务。的函数签名,所有的函数签名共有之处是可以通过递归地细分范围来有效地生成任务。向量存储的值,我们可以手动划分依赖链或者利用其他的算法。类似的如下的函数签名,可以显式的去指定步长。下面的是另一个重载的函数签名版本。

2025-04-29 00:53:56 1201

原创 TBB-Note-Algo-parallel_invoke

在此之前,关于头文件有一个选择问题(USING TBB.H OR NOT)。TBB算法的旅程正式开始。

2025-04-27 22:11:26 464

原创 TBB-Note-Algo-preparation

TBB选择了核心并行算法,而不追求算法的数量,一种对和的设计哲学的追求。总计是两类:7个构建模块和1个排序。下图是按照可扩展性的一个粗略排名,包括一些简易的算法介绍和基础的设计模式。

2025-04-25 22:54:22 1079

原创 TBB-Note-HelloTBB

相应的,上面的场景如果在一个多核系统上运行,自然的想法是每个核心上分配的任务是。原因是,一个任务的计算单元是存在负载差异的。(2)避免自定义解决方案,像自定义线程池之类的,其复杂程度远超表面。正因为有了TBB的存在,足以应对上述的挑战了,所谓工欲善其事必先利其器矣。从式子可以看出,仅增大CPU核心数,不一定能起到作用,提高可并行化模块的比重加上合理的处理器数量,才能获得理想的加速比。TBB展示了一系列的特征,可以分为两大核心类别,其一是​表达并行计算的接口和​与执行模型无关的接口。这边就是简单的利用了。

2025-04-23 22:19:43 1053

原创 TBB-Note-Intro

其实这个绪论中还是讲了很多东西的,包括了一些并行编程的概念、并行的设计逻辑等等,这些以便于后续理解TBB整个库的内容。关于TBB和OneTBB的问题,从历史发展的轨迹上看,TBB这个名词是Intel早期推出的C++并行编程库,而OneTBB是TBB的升级版本,作为了Intel oneAPI的一部分,进一步扩展了编程能力,适配了更加广泛的异构计算场景,增强了对Modern C++的支持。当然,作者也指出了尽管重新命名了oneTBB,但是与最初的TBB并无本质的区别。

2025-04-21 22:44:45 1040

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除