Unified Parallel C性能优化来合理对数据进行布局

UPC 语言">允许用户控制数据如何布局,而数据的布局又会影响到程序的性能。本文通过一系列的程序实例,使 UPC 语言的学习者,可以清楚地了解到如何从性能优化角度来合理地对数据进行布局。

UPC 中的数据分布

私有数据分布

在 UPC 中,私有数据只可以被自身所在的线程访问。当声明一个私有数据的时候,每个线程的私有内存里都会有该变量的副本。如清单中的几个声明语句,这些私有数据分布内存视图如图 1 所示。

清单 1. 私有数据声明

// 假设有 4 个线程。 int a; int b int c[3]

图 1. 清单 1 中数据分布内存视图

共享数据分布

在 UPC 语言中,共享数据可以被任何线程访问。当声明共享标量变量的时候,该变量会被分配到线程 0 的共享内存里。当声明共享数组的时候,UPC 语言引入了一个布局类型限定词。布局类型限定词决定多少个连续的共享元素被分配到同一个线程的共享内存空间中。例如 , 下面的声明了一个共享整型的数组 A:

shared [block_size] int A[number_of_elements];

[block_size] 是布局类型限定词,block_size 是一个非负的数值,代表数据分布区块的大小。例如,当布局类型限定词是 [3] 时,则每三个连续的元素为一个区块分配到一个线程的共享内存空间中。假若布局类型限定词是下列的情形,区块大小有所不同:

如果布局类型限定词不存在的情况下,则所声明的共享数组按照区块大小为 1 进行分配。 如果布局类型限定词为 [ ] 或者 [0], 说明区块大小为无穷大,则所声明的共享数组将所有元素分配到线程 0 的共享内存空间中。 如果布局类型限定词为 [*], 则所声明的共享数组将按照区块大小为 ( sizeof(
array) / upc_elemsizeof(array) + THREADS - 1 ) / THREADS 进行分配。

清单 2. 共享数据声明

// 假定有四个线程 shared int X; // 声明了一个共享整型数据 shared[2]int Y[9]; // 声明了一个共享整型类型数组 , 数组中包含 9 个共享整型类型元素 shared [] float Z[3]; // 声明一个共享
浮点类型数组,数据分布区块大小为无穷大,该数组有 3 个元素,位于线程 0 // 的共享内存空间

图 2. 清单 2 中数据分布内存视图

时间: 2025-01-01 17:26:27

Unified Parallel C性能优化来合理对数据进行布局的相关文章

Android应用性能优化最佳实践.2.3 布局优化

2.3 布局优化 布局是否合理主要影响的是页面测量时间的多少,我们知道一个页面的显示测量和绘制过程都是通过递归来完成的,多叉树遍历的时间与树的高度h相关,其时间复杂度为O(h),如果层级太深,每增加一层则会增加更多的页面显示时间. 任何时候View中的绘制内容发生变化时,都需要重新创建DisplayList.渲染DisplayList,更新到屏幕上等一系列操作.这个流程的表现性能取决于View的复杂程度.View的状态变化以及渲染管道的执行性能.例如,假设某个Button的大小需要增大到目前的两

数据中心性能优化指标 高性能机房数据中心

对于数据中心来说性能优化指标很重要,高性能机房数据中心的建设是我们的目标,现在数据中心对于企业来说重要性不言而喻,而数据中心的结构有许多种类,例如拥有刀片服务器架构的优点就十分明显了,而拥有超融合基础架构的好处也包含很多方面,数据中心性能优化指标与高性能机房数据中心的正确建设还是需要慎重考虑的. 对于业务正在稳步增长的企业组织而言,公司当中数据中心的重要性是非常明显的,而为了提升数据中心的性能,企业客户往往有三种方法可以实现服务器的升级或更换.而在本文中,我们针对刀片服务器架构.融合基础设施和超

大数据驱动性能优化

本文示例以PC的优化端为例,目前AE在这块的工作还主要在PC端,但文中的方法对无线端完全适用 1. 概念 1.1 什么是大数据驱动性能优化? 性能优化其实就是用各种可行的优化手段降低页面Latency,从而提升用户体验.通常会遇到如下困难: Latency降低了,真的提升了用户体验吗? 在AE的性能优化的灰度实验中,遇到了性能提升,转化率反而下降的情况,最后大家猛然醒悟,如果我的优化根本就是用户不可见的呢?比如减少了某个异步资源的加载,这个异步加载会降低pageload,但它可能就是一个用于统计

【AliExpress】大数据驱动性能优化

该文章来自阿里巴巴技术协会(ATA) 本文示例以PC的优化端为例,目前AE在这块的工作还主要在PC端,但文中的方法对无线端完全适用 1. 概念 1.1 什么是大数据驱动性能优化? 性能优化其实就是用各种可行的优化手段**降低页面Latency,从而提升用户体验**.通常会遇到如下困难: Latency降低了,真的提升了用户体验吗? 在AE的性能优化的灰度实验中,遇到了性能提升,转化率反而下降的情况,最后大家猛然醒悟,如果我的优化根本就是用户不可见的呢?比如减少了某个异步资源的加载,这个异步加载会

Oracle Freelist和HWM原理探讨及相关性能优化

oracle|性能|优化 Oracle Freelist和HWM原理探讨及相关性能优化 中兴通讯重庆研究所 游波   关键词:Freelist,HWM,存储参数,段,块,dump,优化 文章摘要:    近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论.本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等.而与FreeList密切相关的一个重用特性HWM,与sql性能密切相

HBase数据库性能优化总结笔记

垃圾回收优化 master基本不会遇到垃圾回收的问题.由于memstore的刷写机制是不连续的,所以java虚拟机的堆内存会出现孔洞.快速刷写到磁盘的数据会被划分到新生代,这种空间会被优先回收数据停留的时间太长,会被划分到老生代甚至终生代.而且老生代和终生代一般占据了好几个G,而新生代一般就几百M而已 新生代空间由此得出新生代的空间一般的分配如下     -XX:MaxNewSize=128m -XX:NewSize=128m   可以缩写为     -Xmn128m   设定好之后观察是否合理

JVM性能优化(一)JVM技术入门

作者 Eva Andreasson  译者:赵峰 校对:方腾飞  原文链接 Java应用程序是运行在JVM上的,但是你对JVM技术了解吗?这篇文章(这个系列的第一部分)讲述了经典Java虚拟机是怎么样工作的,例如:Java一次编写的利弊,跨平台引擎,垃圾回收基础知识,经典的GC算法和编译优化.之后的文章会讲JVM性能优化,包括最新的JVM设计--支持当今高并发Java应用的性能和扩展. 如果你是一个开发人员,你肯定遇到过这样的特殊感觉,你突然灵光一现,所有的思路连接起来了,你能以一个新的视角来回

.NET框架WPF中加载高质量大图慢的性能优化

最近的项目中,遇到一个关于WPF中同时加载多张图片时,内存占用非常高的问题. 问题背景: 在一个ListView中同时加载多张图片,注意:我们需要加载的图片分辨率非常高. 代码: XAML: <Grid>     <Grid.RowDefinitions>         <RowDefinition Height="Auto"/>         <RowDefinition Height="*"/>     <

《Hadoop MapReduce性能优化》一2.1 研究Hadoop参数

2.1 研究Hadoop参数 Hadoop MapReduce性能优化 正如第1章中提到的那样,有很多因素会对Hadoop MapReduce性能产生影响.一般说来,与工作负载相关的Hadoop性能优化需要关注以下3个主要方面:系统硬件.系统软件,以及Hadoop基础设施组件的配置和调优/优化. 需要指出的是,Hadoop被归类为高扩展性解决方案,但却不足以归类为高性能集群解决方案.系统管理员可以通过各种配置选项来配置和调优Hadoop集群.性能配置参数主要关注CPU利用率.内存占用情况.磁盘I