IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【实验】实验七 MATLAB 并行计算20211125 -> 正文阅读

[数据结构与算法]【实验】实验七 MATLAB 并行计算20211125

本文仅供学习和复习使用。 题目源于岑冠军老师,答案参考自相关课件,另外借以markdown排版成此文。由于本人水平有限且时间不够充裕,故难免有错漏或不当之处,如有建议或批评还请联系penguinpi@163.com,谢谢!

实验七 MATLAB 并行计算

@Copyright 华南农业大学 数学与信息学院 数学系 主讲与制作:岑冠军


一、实验目的

  • 掌握基本MATLAB的并行计算概念与环境;
  • 能开启本地MATLAB并行计算池;
  • 熟悉基于tall数组的大型数据文件处理;
  • 了解parfor、spmd并行计算使用。

二、实验原理

  • 并行计算基础:client,worker,cluster、parallel pool;
  • 配置并行计算环境:parcluster,parpool;
  • 基于tall数组的大型数据集合的计算:spreadsheetDataStore,tall,gather,matlab.tall.transform,matlab.tall.reduce;
  • 内置的并行计算结构:parfor,spmd。

三、实验内容

  1. 开启具有5个worker的并行计算池。
parpool('local', 5);
  1. 采用tall数组,对第八讲案例’附件1:用户收视信息.xlsx’数据,计算日平均点播时长小于4小时的用户的平均点播观看时间。
userds = spreadsheetDatastore("附件1:用户收视信息.xlsx", "PreserveVariableNames", true, "Sheets", "用户单片点播信息");
% preview(userds)

selectNames = {'统计日期','二级目录','影片名称','观看开始时间','观看结束时间','用户号'};
variableNames = {'StatDate','Catalogue','ProgramName','StartTime','EndTime','UserID'};
userds.VariableNames(matches(userds.SelectedVariableNames, selectNames)) = variableNames;
userds.SelectedVariableNames = variableNames;
userds.SelectedVariableTypes = {'categorical','categorical','string', 'datetime','datetime','categorical'};
% preview(userds)

UT = tall(userds);
% head(UT, 2)

% summary(UT)

UT.WatchTime = UT.EndTime - UT.StartTime;
gsUT = groupsummary(UT,{'UserID', 'StatDate'}, 'sum', 'WatchTime');
gmUT = groupsummary(gsUT,{'UserID'}, 'mean', 'sum_WatchTime');
gather(gmUT)

% head(UT, 2)

% duration 固定长度单位的时间长度
% matlab.tall.reduce 
% tA = matlab.tall.reduce(fcn,reducefcn,tX) 将函数 fcn 应用于数组 tX 的每个块...
% 以生成部分结果。然后,该函数将 reducefcn 重复应用于部分结果的垂直串联,直到它得到一个最终结果 tA。
% 关于 duration 请参考 https://ww2.mathworks.cn/help/matlab/ref/duration.html
% 关于 matlab.tall.reduce 请参考 https://ww2.mathworks.cn/help/matlab/ref/matlab.tall.reduce.html

gt1hUT = matlab.tall.reduce( @(X)X(X>duration(4,00,00)) , @(x)mean(x,'omitnan'), gmUT.mean_sum_WatchTime );
gather(gt1hUT)
  1. 请指出下列parfor循环代码中,变量a,z,b,r,d各是什么类型的变量?
a = 0;
c = pi;
z=0;
r=rand(1,10);
parfor i = 1:10
    a = i;
    z = z + i;
    b(i) = r(i);
    if i <= c
        d = 2*a;
    end    
end

% a: temporary var
% z: reduction var
% b: sliced (output) var
% r: sliced (input) var
% d: temporary var
  1. 体验spmd编程——单个程序,多个数据(本题选做)。
    (1) 开启4个worker的并行计算池;
    (2) 接着运行以下代码,请问变量c和d包含几个元素?为什么?
ppar = gcp('nocreate');  % 获取当前并行计算池
if isempty(ppar)  % 如果当前并行计算池为空
    myCluster = parcluster('local');  % 以本地配置文件创建集群
    myCluster.NumWorkers=8;  % 设置集群的work数目
    p=parpool(myCluster,8);  % 在集群上启动并行计算池
end
delete(gcp('nocreate'))  % 关闭当前并行计算池
parpool('local', 4);
for i=1:4
    dlmwrite(['spmdt',num2str(i),'.txt'],rand(2*i));
end
spmd 
	a= dlmread(['spmdt',num2str(labindex),'.txt']);
	b=a(:);
	c=mean(b);
	d=std(b);
end
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:06:11  更:2021-11-26 09:08:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 16:02:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码