自定义博客皮肤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)
  • 收藏
  • 关注

原创 CUDA实现矩阵向量乘法gemv

即使是使用指令去禁用L1Cache,只是用L1 Cache也存在访存粒度,也就是Cache从主存取数据是的最小单位,比如:不使用L1 Cache的粒度是32字节,即使只需要1字节,也会取连续的内存。如果是另一种情况,即所有线程都访问一个地址,那么利用率就是4/128=3.125。j=0时,线程0访问𝐴 ^ 𝑇[0],线程1访问𝐴 ^ 𝑇[1]。第一种1次内存事务就可以完成,因为是连续的128字节。内存情况也变了,32字节一段,128字节4段连续。写,没有L1Cache的事,只有L2Cache。

2025-05-13 22:23:42 958

原创 CUDA实现并行矩阵乘gemm

顾名思义,两个矩阵相乘。

2025-05-13 22:09:53 1876

原创 CUDA实现并行扫描

扫描:scan• • • • 也称为前缀扫描prefix-scan、前缀求和prefix-sum• • • • 并行扫描parallel scan 、并行前缀求和parallel prefix sum并行算法重要基本模块,用于:• • • • 基数排序(radix sort)• • • • 快速排序( quicksort)• • • • 流压缩( stream compaction)和流拆分( stream splitting )• • • • 稀疏矩阵与向量的乘法。

2025-05-12 18:33:44 952

原创 CUDA实现并行归约

• 功能:按width划分线程束,返回块内偏移量为srcLane的线程的var值(类似广播) • mask:掩码32位,表示warp中参加该shuffle的线程,1表示参加,0表示不参加。在32M规模数据下,时间比起手动优化的略少,但是当数据规模扩大时,手动优化的效率就比thrust高了,不过手动实现的时间成本高,看权衡吧。如下图,一个block内,一开始就有一半线程不工作,迭代2不工作的又少一半,,,以此类推。----• 0号线程取sdata[0]和sdata[1]

2025-05-10 16:00:32 2021

原创 StellarSim优化实践(2)——SIMD

查看gprof分析结果,我们会发现getACC的子调用时间占很大比例,其中占大头的是getGradW和getDensity的子调用,另外getPairwiseSeparations也很占时间。我们可以看到这两个函数存在大量的pow、sqrt和exp操作,其中pow和exp在neon指令集中并不存在,所以我们得想办法让向量也可以完成pow和exp计算。故事紧接上次采用OpenMP和传统优化技术对StellarSIM的优化,我们继续用gprof分析程序单线程的执行时间。Emmmmm,有点脱裤子放屁的意思。

2025-05-01 19:33:26 540

原创 NEON Instrinsic指令集、OMP编译器自动向量化及实践

Instrinsic函数:对汇编指令的包装,类似C函数接口风格,更加友好下面的C代码和汇编指令是实现的同一种功能type:数据类型,如int/float/polysize:数据大小lanes:通道数,即元素个数向量类型数组如:int32x4_t vec[4],代表4个向量寄存器访问第i个向量,vec[i]

2025-04-22 16:38:13 893

原创 StellarSim优化实践——基础优化和OpenMP

上述分析可以看到,主要是getAcc、getDensity、getGradW、getPairwiseSeqarations、getW函数占用时间比例大,这也是我们的主要优化目标。另外,经前辈指点,getAcc存在对acc[0][j]写数据时存在“伪共享”问题,使用私有变量解决。在双重嵌套循环中,wx、wy、wz3个数组的访问顺序和循环是相反的,这导致了访存成本增加。使用一个强可扩展性测试的脚本测试了线程数为1、2、4、6、12、24、32的程序。线程为1时就是串行运行,所以执行时间和串行执行差不了太多。

2025-04-13 16:17:45 802

原创 OpenMP并行化实现矩阵乘法

先实现串行程序,并输出结果作为参考。完成基本的矩阵乘法串行程序,并输出时间和计算结果。for (i = 0;i < m;j < n;//初始化//开始时间for(i = 0;i < size;j < size;i < size;j < size;

2025-04-03 20:47:00 1418

原创 基于行列分块并行算法和Cannon算法的两种MPI并行 实现Gemm

行列分块需要实现1,阻塞通信版本2,非阻塞通信版本3,重复非阻塞通信版本Cannon算法选择上述任意一种即可。

2025-03-28 19:53:17 919

原创 python连接数据库时的编码问题(便于日后复习)

python连接数据库时,使用连接工具pymysql的编码问题在学习python读取数据库中数据时,用到了SQLAlchemy库中的create_engine()函数import pandas as pdfrom sqlalchemy import create_engine# create_engine的参数填入的是一个链接字符串:数据库产品名+连接工具名://用户名:密码@数据库IP地...

2020-04-19 12:22:33 736

空空如也

空空如也

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

TA关注的人

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