【云计算实验】基于OpenMP、CUDA、OpenCL、GPU并行计算实验

2023-10-29

前言

  • 本文是之前做云计算实验整理的内容,借博客保存一下!
  • 使用不同方法对算法加速还是很有意思的!

实验题目

  1. 自选一张图片,按照实验指南说明在jetson05节点上基于OpenMP和CUDA对图片进行边缘提取实验,记录梯度向量幅度的最小值和最大值,比较串行算法和并行算法的运行时间,并提交处理后的边缘提取结果图片。试一下:如果编译时开启优化选项(比如选择“-O3”级别的优化),串行算法和并行算法的运行时间分别有什么变化。

  2. 使用提供的opencl-examples源码在你自己的计算机上进行基于OpenCL的GPU并行算法实验,记录你的实验环境参数(包括CPU和GPU相关参数等,可从实验程序日志中获取)以及各个算法的串行版本和GPU并行版本的运行时间,并进行简单的对比分析。

1. 基于OpenMP和CUDA对图片进行边缘提取实验

1.1 处理图片

在这里插入图片描述

1.2 基于OpenMP

1)串行算法

a. 运行命令

zz@jetson05:~/examples$ g++ -fopenmp -o sobel sobel.cpp -lfreeimage 
zz@jetson05:~/examples$ ./sobel IBM_Blue_Gene_P_supercomputer.jpg
Filtering of input image start ...
the minimum value: 0
the maximum value: 1052.84
The total time for execution is 7.66395s

b. 运行截图

在这里插入图片描述

c. 图片处理结果

在这里插入图片描述

2)并行算法

a. 运行命令

zz@jetson05:~/examples$ g++ -fopenmp -o sobel_omp sobel_omp.cpp -lfreeimage
zz@jetson05:~/examples$ ./sobel_omp IBM_Blue_Gene_P_supercomputer.jpg
Filtering of input image start ...
the minimum value: 0
the maximum value: 1052.84
actual threads number: 8
The total time for execution is 2.20083s

b. 运行截图
在这里插入图片描述

c. 图片处理结果
在这里插入图片描述

3)线程数从8改成16

a. 修改代码
在这里插入图片描述

zz@jetson05:~/examples$ g++ -fopenmp -o sobel_omp16 sobel_omp.cpp -lfreeimage
zz@jetson05:~/examples$ ./sobel_omp16 IBM_Blue_Gene_P_supercomputer_out.jpg
Filtering of input image start ...
the minimum value: 0
the maximum value: 1001.81
actual threads number: 16
The total time for execution is 1.84612s 

b. 运行截图及结果

在这里插入图片描述

4)编译算法时开启优化选项

a. 串行算法
选择“-O3”级别的优化

  • 运行命令
zz@jetson05:~/examples$ g++ -fopenmp -O3 sobel sobel.cpp -lfreeimage
zz@jetson05:~/examples$ ./sobel IBM_Blue_Gene_P_supercomputer.jpg
Filtering of input image start ...
the minimum value: 0
the maximum value: 1052.84
The total time for execution is 7.65937s
  • 运行截图及结果
    结果:运行时间和1)差不多

在这里插入图片描述
b. 并行算法
选择“-O3”级别的优化

  • 运行命令
zz@jetson05:~/examples$ g++ -fopenmp -O3 sobel_omp16 sobel_omp.cpp -lfreeimage 
zz@jetson05:~/examples$ ./sobel_omp16 IBM_Blue_Gene_P_supercomputer_out.jpg
Filtering of input image start ...
the minimum value: 0
the maximum value: 1001.81
actual threads number: 16
The total time for execution is 0.741739s
  • 运行截图及结果
    如下图所示,运行时间为0.741739s 比 3)运行结果1.84612s快
    在这里插入图片描述

1.3 基于CUDA

1) 运行命令

zz@jetson05:~/examples$ nvcc -o sobel_cuda sobel_cuda.cu -lfreeimage
zz@jetson05:~/examples$ ./sobel_cuda IBM_Blue_Gene_P_supercomputer.jpg
1 CUDA devices found!
CUDA device 0: NVIDIA Tegra X1
  multi processor count: 1
  shared memory per block: 48 KB
  max threads per block: 1024
  max threads per multi processor: 2048
  max warps per multi processor: 64
Use CUDA device 0
the minimum value: 0
the maximum value: 1059.25
The total time for execution is: 0.184939s

2) 运行截图及结果

在这里插入图片描述
3) 图片处理结果
在这里插入图片描述

1.4 对比OpenMP和CUDA实验结果

在这里插入图片描述
显然,并行算法比串行要快,CUDA并行比OpenMP并行快。

2. 基于OpenCL的GPU并行算法实验

使用提供的opencl-examples源码在你自己的计算机上进行基于OpenCL的GPU并行算法实验,记录你的实验环境参数(包括CPU和GPU相关参数等,可从实验程序日志中获取)以及各个算法的串行版本和GPU并行版本的运行时间,并进行简单的对比分析。

2.1 实验环境参数

  • opencl-example源码版本:opencl-examples-1.1.0-win-bin-x64
  • CPU:Inte i5-8250U
  • GPU:NVIDIA GeForce MX150
  • CUDA版本:OpenCL 1.2 CUDA 11.0.228

2.2 算法运行时间对比

  • 运行截图及结果
    在这里插入图片描述

实验源码参考:https://github.com/jianxuecn/cccourse-examples

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云计算实验】基于OpenMP、CUDA、OpenCL、GPU并行计算实验 的相关文章

  • Angular进阶技术之模块化及懒加载

    Angular组件模块化以及路由懒加载 前提摘要 模块化的场景 NgModule 引发的思考 如何去定义模块和模块化的作用 Angular模块化以及路由懒加载 延伸 子组件模块 二级路由懒加载模块 模块化引申 一些命令和tips 本地发布测
  • 第六章 修改表

    文章目录 第六章 修改表 1 修改表的数据类型 2 添加列 3 修改列的位置 4 修改列名和数据类型 5 删除列 6 设置主键 7 设置唯一键 8 使列具有自动连续编号功能 9 设置默认值 10 关于索引的操作 第六章 修改表 1 修改表的
  • cad中tk什么意思_cad图纸中各种字母是什么意思

    展开全部 ACE 在能进入的bai吊顶在敷du设 BC 暗敷 梁zhi内 CLC 暗敷设在dao柱子内 we 暗敷设在墙回内 WE 沿墙明敷答设 FC 预埋在地面内 BE 沿屋架或跨屋架敷设 CLE 沿柱或跨柱敷设 WE 沿墙面敷设 CE
  • PCL 欧式聚类分割

    目录 一 算法原理 1 实现流程 2 实现方法 3 核心代码 4 参考文献 二 代码实现 三 结果展示 四 应用案例 五 保存结果 六 不调库实现 一 算法原理 1 实现流程 欧式聚类是一种基于欧氏距离度量的聚类算法 基于KD Tree的近
  • Docker 入门到实战教程(一)介绍Docker

    一 Docker简介 1 1 什么是虚拟化 在计算机中 虚拟化 英语 Virtualization 是一种资源管理技术 是将计算机的各种实体资源 如服务器 网络 内存及存储等 予以抽象 转换后呈现出来 打破实体结构间的不可切割的障碍 使用户

随机推荐

  • hadoop web查看集群datanode 信息不全

    环境说明 同一主机上 两台ubuntu虚拟机 问题 启动Hadoop后 两个节点上的jps查看进程正常 可web登录50070端口 查看的datanode information 只显示的本机上的datanode信息 namenode上jp
  • Serializable序列化实例

    需要序列化的对象 package com zizhu import java io Serializable public class SerializableHello implements Serializable private st
  • 工具类——Java导出EXCEL2(设置样式、加载并填充图片、加载指定模板、大数据量设置窗口大小与刷新频率)

    文章目录 一 POI设置样式 二 POI导出图片 1 解释XSSFClientAnchor 三 加载指定模板导出 四 Workbook XSSFWorkbook与SXSSFWorkbook 1 大数据量导出 1 根据数据量选择XSSFWor
  • ora-12801错误

    今天开发人员遇到如下错误 SQL gt SELECT from 2 FT SB FCS C 3 FT DJ FCDJ D 4 WHERE C YXBZ Y 5 AND C CQZH D FCDJXH 6 AND D ZYBZ Y 7 AND
  • Stress-ng

    介绍如何在 Linux 系统上使用 stress ng 负载测试工具 产生 CPU 内存等资源满载的状况 stress ng stress ng 与旧的 stress 都可以用来产生系统负载 但新的 stress ng 功能较丰富 所以这里
  • C++入门(2/2)

    目录 一 内联函数 二 auto关键字 C 11 三 范围for 四 nullptr 一 内联函数 C 用inline修饰的函数 会在编译时在调用内联函数的地方展开 没有了函数调用建立栈帧的开销 内联函数提升程序运行的效率 对于一个短小的函
  • ubuntu解决连不上网问题(无网关篇)

    今天用ubuntu时发现系统连不上网了 可能是之前捣鼓虚拟机作为ftp服务器导致的 windows下ipconfig命令查看到虚拟机的默认网关是空的 知道了是ubuntu默认网关没配好的原因 参考了这篇博客 如下 1条消息 虚拟机ping不
  • 1 两数之和

    题目描述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 示例 给定 nums 2 7 11
  • 2-27-Exploring Cross-Image Pixel Contrast for Semantic Segmentation(arxiv2021)有代码

    原文链接 http www myzaker com article 60348715b15ec0509c7170d3 在这篇论文中 研究者提出了一种新的 全监督语义分割训练范式 像素对比学习 强调利用训练集中 跨图像的像素 像素对应关系来学
  • 找最长公共子串

    题目 小明有两个字符串 可能包含空格 小明想找出其中最长的公共连续子串 希望你能帮助他 并输出其长度 输入描述 输入为两行字符串 可能包含空格 长度均小于等于50 输出描述 输出为一个整数 表示最长公共连续子串的长度 示例1 输入 abcd
  • vue使用vue-pdf

    效果 引入vue pdf npm install save vue pdf vue版本 vue 2 6 11 vue pdf 4 3 0 1 在使用页面引入 import pdf from vue pdf components 组件 sea
  • 【概念】为什么区块链被称为分布式数据库?举例讲解分布式数据库包会教程。区块链分布式数据库到底是什么?什么是分布式数据库?一千六百字讲清楚什么事分布式数据库。

    目录 前言 区块链是什么 为什么说是分布式数据库 去中心化 分布式网络 分布式数据库 前言 随着区块链慢慢走进大众视野 大家也能发现 网上许多教程都说区块链是分布式数据库 区块链技术是基于比特币应用提出的一个概念 他是一个融合了多种技术的一
  • FairMOT yolov5s转onnx

    代码 https github com ifzhang FairMOT 论文讲解参考 https blog csdn net weixin 42398658 article details 110873083 https www 163 c
  • Gradle 系列第二讲-android studio中的四个Gradle相关文件讲解

    在android studio中 我们创建一个android项目 会自动生成以下6个gradle的相关文件或文件夹 下面我们来依次全面解析这几个文件的内容和具体的作用 android project gradlew gradlew bat
  • 创建一个子窗口,MouseMove消息一直在触发的解决方法

    条件 在主窗口中 创建 create 一个Child属性的子窗口 在子窗口中使用MouseMove消息时 发现 该消息一直被触发 在domal一个Child属性的子窗口时却没有这个问题 为什么呢 原因在CWnd Create中WS POPU
  • DDL数据库及表的创建删除与使用

    Mysql gt DDL 一 DDL操作数据库 1 1查询 1 2创建数据库 1 3删除数据库 1 4使用数据库 二 DDL操作表 2 1查询表 2 2创建表 2 3数据类型 2 4删除表 2 5修改表 三 总结 一 DDL操作数据库 1
  • 隐私计算项目评估的“偏见”

    如何评估一个项目是不是值得投资 这件事情可能VC最有专业性 本文站在一线工作者的角度 阐述目前隐私计算项目的深浅 有些东西 一定是老百姓口中说出来的可能更贴近现实 做硬件的拼技术 荷兰ASML公司是全球最大的光刻机制造商 也是全球唯一可以提
  • Android+文本的查找和替换+可以对文本进行查找替换撤销等,基本实现了PC端.txt查找替换功能

    Android 文本的查找和替换 可以对文本进行查找替换撤销等 基本实现了PC端 txt查找替换功能 最近项目用到了类似PC端记事本查找替换功能 于是自己就写了一套算法 实现起来还是比较容易理解的 基于移动开发的文本查找替换功能 基本实现了
  • 基于单步的Map-Reduce的矩阵乘法

    基于单步的Map Reduce的矩阵乘法 矩阵的乘法只有在第一个矩阵的列数 column 和第二个矩阵的行数 row 相同时才有定义 一般单指矩阵乘积时 指的便是一般矩阵乘积 若A为i r矩阵 B为r j矩阵 则他们的乘积AB 有时记做A
  • 【云计算实验】基于OpenMP、CUDA、OpenCL、GPU并行计算实验

    前言 本文是之前做云计算实验整理的内容 借博客保存一下 使用不同方法对算法加速还是很有意思的 实验题目 自选一张图片 按照实验指南说明在jetson05节点上基于OpenMP和CUDA对图片进行边缘提取实验 记录梯度向量幅度的最小值和最大值