12 2024 档案
摘要:1. 目标:使用CPU和GPU对一千万数量级的一维信号进行均值滤波,并且根据GPU存储模型对数据存储进行优化,最终对比计算结果并计算加速比。 2. 代码 /* cuda实现对一维信号卷积平滑滤波处理,并于串行计算对比结果和加速比,卷积核大小为5 */ #include <stdio.h> #incl
阅读全文
摘要:1. GPU的内存模型 GPU编程数据需要从CPU主存拷贝到GPU全局存储器,所有线程共享全局存储。开辟的全局存储器空间指针在CPU代码中不能解引用使用,应在计算完结果后再拷贝回CPU主存空间。线程块内共享存储。 (1) 线程私有的存储有寄存器、本地内存 (2) 线程块内有块内线程共享的共享内存,在
阅读全文
摘要:1. 简介 (1) Intel® Integrated Performance Primitives,即英特尔集成性能基元(简称IPP),为信号、数据和图像处理特定应用领域,提供simd优化的一组全面的函数库。 (2) 本项目将对 exp、cos、sin、tone、Triangle函数用NEON向量
阅读全文
摘要:1. 源码为对粒子移动状态模拟的项目。要求使用多种优化方法,对比串行优化、多线程优化、全部优化下的加速比。 2. 代码 项目代码地址:https://github.com/libo-0379/StellarSim_Optimize 以下为核心优化代码及分析 #include <stdlib.h> #
阅读全文
摘要:1. 目标:使用 NEON intrinsic 函数,对512*512 png 四通道图像顺时针旋转90度。 思路: 像素分块,对块内转置;再水平镜像。图像库使用 stb img 2. 代码 #include <stdio.h> #include <arm_neon.h> #include <std
阅读全文
摘要:1. 对寄存器数据重排 /* 两个向量,每两个通道一组,第一个向量每组的后一个元素与第二个向量每组的第一个元素一次彼此交换 */ #include <stdio.h> #include <arm_neon.h> void main() { int arrc[8]={0}; int arrd[4]={
阅读全文
摘要:1. 目标:矩阵向量乘法 y = A * x (列向量 = 矩阵 *列向量),进行串行,循环展开+simd, simd+omp的效率对比。 2. 源码 #include <iostream> #include <ctime> #include <arm_neon.h> #include <omp.h
阅读全文