计算机代写|C++作业代写C++代考|Gustafson’s Observations Regarding Amdahl’s Law

如果你也在 怎样代写C++这个学科遇到相关的难题,请随时右上角联系我们的24/7代写客服。

C++ 是一种高级语言,它是由Bjarne Stroustrup 于1979 年在贝尔实验室开始设计开发的。 C++ 进一步扩充和完善了C 语言,是一种面向对象的程序设计语言。 C++ 可运行于多种平台上,如Windows、MAC 操作系统以及UNIX 的各种版本。

statistics-lab™ 为您的留学生涯保驾护航 在代写C++方面已经树立了自己的口碑, 保证靠谱, 高质且原创的统计Statistics代写服务。我们的专家在代写C++代写方面经验极为丰富,各种代写C++相关的作业也就用不着说。

我们提供的C++及其相关学科的代写,服务范围广, 其中包括但不限于:

  • Statistical Inference 统计推断
  • Statistical Computing 统计计算
  • Advanced Probability Theory 高等概率论
  • Advanced Mathematical Statistics 高等数理统计学
  • (Generalized) Linear Models 广义线性模型
  • Statistical Machine Learning 统计机器学习
  • Longitudinal Data Analysis 纵向数据分析
  • Foundations of Data Science 数据科学基础
计算机代写|C++作业代写C++代考|Gustafson’s Observations Regarding Amdahl’s Law

计算机代写|C++作业代写C++代考|Gustafson’s Observations Regarding Amdahl’s Law

Amdahl’s Law views programs as fixed, while we make changes to the computer. But experience seems to indicate that as computers get new capabilities, applications change to take advantage of these features. Most of today’s applications would not run on computers from 10 years ago, and many would run poorly on machines that are just 5 years old. This observation is not limited to obvious applications such as video games; it applies also to office applications, web browsers, photography, and video editing software.

More than two decades after the appearance of Amdahl’s Law, John Gustafson, while at Sandia National Labs, took a different approach and suggested a reevaluation of Amdahl’s Law. Gustafson noted that parallelism is more useful when we observe that workloads grow over time. This means that as computers have become more powerful, we have asked them to do more work, rather than staying focused on an unchanging workload. For many problems, as the problem size grows, the work required for the parallel part of the problem grows faster than the part that cannot be parallelized (the serial part). Hence, as the problem size grows, the serial fraction decreases, and, according to Amdahl’s Law, the scalability improves. We can start with an application that looks like Figure P-10, but if the problem scales with the available parallelism, we are likely to see the advancements illustrated in Figure P-13. If the sequential parts still take the same amount of time to perform, they become less and less important as

a percentage of the whole. The algorithm eventually reaches the conclusion shown in Figure P-14. Performance grows at the same rate as the number of processors, which is called linear or order of $n$ scaling, denoted as $O(n)$.
Even in our example, the efficiency of the program is still greatly limited by the serial parts. The efficiency of using processors in our example is about $40 \%$ for large numbers of processors. On a supercomputer, this might be a terrible waste. On a system with multicore processors, one can hope that other work is running on the computer in parallel to use the processing power our application does not use. This new world has many complexities. In any case, it is still good to minimize serial code, whether we take the “glass half empty” view and favor Amdahl’s Law or we lean toward the “glass half full” view and favor Gustafson’s observations.

计算机代写|C++作业代写C++代考|Serial vs. Parallel Algorithms

One of the truths in programming is this: the best serial algorithm is seldom the best parallel algorithm, and the best parallel algorithm is seldom the best serial algorithm.
This means that trying to write a program that runs well on a system with one processor core, and also runs well on a system with a dual-core processor or quad-core processor, is harder than just writing a good serial program or a good parallel program.
Supercomputer programmers know from practice that the work required grows quickly as a function of the problem size. If the work grows faster than the sequential overhead (e.g., communication, synchronization), we can fix a program that scales poorly just by increasing the problem size. It’s not uncommon at all to take a program that won’t scale much beyond 100 processors and scale it nicely to 300 or more processors just by doubling the size of the problem.

计算机代写|C++作业代写C++代考|What Is a Thread

If you know what a thread is, feel free to skip ahead to the section “Safety in the Presence of Concurrency.” It’s important to be comfortable with the concept of a thread, even though the goal of TBB is to abstract away thread management. Fundamentally, we will still be constructing a threaded program, and we will need to understand the implications of this underlying implementation.

All modern operating systems are multitasking operating systems that typically use a preemptive scheduler. Multitasking means that more than one program can be active at a time. We may take it for granted that we can have an e-mail program and a web browser program running at the same time. Yet, not that long ago, this was not the case. A preemptive scheduler means the operating system puts a limit on how long one program can use a processor core before it is forced to let another program use it. This is how the operating system makes it appear that our e-mail program and our web browser are running at the same time when only one processor core is actually doing the work. Generally, each program runs relatively independent of other programs. In particular, the memory where our program variables will reside is completely separate from the memory used by other processes. Our e-mail program cannot directly assign a new value to a variable in the web browser program. If our e-mail program can communicate with our web browser – for instance, to have it open a web page from a link we received in e-mail – it does so with some form of communication that takes much more time than a memory access.
This isolation of programs from each other has value and is a mainstay of computing today. Within a program, we can allow multiple threads of execution to exist in a single program. An operating system will refer to the program as a process, and the threads of execution as (operating system) threads.

All modern operating systems support the subdivision of processes into multiple threads of execution. Threads run independently, like processes, and no thread knows what other threads are running or where they are in the program unless they synchronize explicitly. The key difference between threads and processes is that the threads within a process share all the data of the process. Thus, a simple memory access can set a variable in another thread. We will refer to this as “shared mutable state” (changeable memory locations that are shared) – and we will decry the pain that sharing can cause in this book. Managing the sharing of data, is a multifaceted problem that we included in our list of enemies of parallel programming. We will revisit this challenge, and solutions, repeatedly in this book.

计算机代写|C++作业代写C++代考|Gustafson’s Observations Regarding Amdahl’s Law

C++/C代写

计算机代写|C++作业代写C++代考|Gustafson’s Observations Regarding Amdahl’s Law

阿姆达尔定律认为程序是固定的,而我们对计算机进行更改。但经验似乎表明,随着计算机获得新功能,应用程序会发生变化以利用这些功能。今天的大多数应用程序无法在 10 年前的计算机上运行,​​而且许多应用程序在只有 5 年历史的计算机上运行不佳。这种观察不仅限于视频游戏等明显的应用程序;它也适用于办公应用程序、网络浏览器、摄影和视频编辑软件。

在阿姆达尔定律出现二十多年后,约翰古斯塔夫森在桑迪亚国家实验室采取了不同的方法,并建议重新评估阿姆达尔定律。Gustafson 指出,当我们观察到工作负载随着时间的推移而增长时,并行性会更有用。这意味着随着计算机变得越来越强大,我们要求它们做更多的工作,而不是专注于不变的工作量。对于许多问题,随着问题规模的增长,问题的并行部分所需的工作比无法并行化的部分(串行部分)增长得更快。因此,随着问题规模的增长,序列分数减少,并且根据阿姆达尔定律,可扩展性提高。我们可以从一个看起来像图 P-10 的应用程序开始,但是如果问题随着可用的并行度而扩展,我们很可能会看到图 P-13 所示的进步。如果连续的部分仍然需要相同的时间来执行,它们变得越来越不重要,因为

占整体的百分比。该算法最终得出图 P-14 所示的结论。性能以与处理器数量相同的速度增长,称为线性或顺序n缩放,表示为这(n).
即使在我们的示例中,程序的效率仍然受到串行部分的很大限制。在我们的例子中使用处理器的效率大约是40%对于大量的处理器。在超级计算机上,这可能是一种可怕的浪费。在具有多核处理器的系统上,人们可以希望其他工作在计算机上并行运行,以使用我们的应用程序不使用的处理能力。这个新世界有许多复杂性。无论如何,最小化串行代码仍然是好的,无论我们采取“半杯空”的观点并支持阿姆达尔定律,还是我们倾向于“半杯满”的观点并支持 Gustafson 的观察。

计算机代写|C++作业代写C++代考|Serial vs. Parallel Algorithms

编程中的一个真理是:最好的串行算法很少是最好的并行算法,最好的并行算法很少是最好的串行算法。
这意味着试图编写一个程序在一个处理器内核的系统上运行良好,并且在一个双核处理器或四核处理器的系统上运行良好,比编写一个好的串行程序或一个好的串行程序更难。并行程序。
超级计算机程序员从实践中知道,所需的工作随着问题的大小而迅速增长。如果工作的增长速度超过了顺序开销(例如,通信、同步),我们可以通过增加问题大小来修复一个扩展性较差的程序。采用一个不会超过 100 个处理器的程序,只需将问题的规模扩大一倍,就可以很好地将其扩展到 300 个或更多处理器,这种情况并不少见。

计算机代写|C++作业代写C++代考|What Is a Thread

如果您知道线程是什么,请随意跳到“存在并发的安全性”部分。熟悉线程的概念很重要,即使 TBB 的目标是抽象出线程管理。从根本上说,我们仍将构建一个线程程序,我们需要了解这个底层实现的含义。

所有现代操作系统都是多任务操作系统,通常使用抢占式调度程序。多任务处理意味着一次可以激活多个程序。我们可能想当然地认为我们可以同时运行一个电子邮件程序和一个网络浏览器程序。然而,就在不久前,情况并非如此。抢占式调度程序意味着操作系统对一个程序在被迫让另一个程序使用它之前可以使用处理器内核的时间进行限制。这就是操作系统如何使我们的电子邮件程序和我们的网络浏览器看起来同时运行,而实际上只有一个处理器内核在做这项工作。通常,每个程序相对独立于其他程序运行。尤其,我们的程序变量将驻留的内存与其他进程使用的内存完全分开。我们的电子邮件程序不能直接将新值分配给 Web 浏览器程序中的变量。如果我们的电子邮件程序可以与我们的网络浏览器通信——例如,让它从我们在电子邮件中收到的链接打开一个网页——它会通过某种形式的通信来实现,这比访问内存要花费更多的时间.
This isolation of programs from each other has value and is a mainstay of computing today. Within a program, we can allow multiple threads of execution to exist in a single program. An operating system will refer to the program as a process, and the threads of execution as (operating system) threads.

所有现代操作系统都支持将进程细分为多个执行线程。线程独立运行,就像进程一样,没有线程知道其他线程正在运行或它们在程序中的位置,除非它们显式同步。线程和进程之间的主要区别在于进程中的线程共享进程的所有数据。因此,一个简单的内存访问可以在另一个线程中设置一个变量。我们将其称为“共享可变状态”(共享的可变内存位置)——我们将在本书中谴责共享可能带来的痛苦。管理数据共享是一个多方面的问题,我们将其包含在并行编程的敌人列表中。我们将在本书中反复回顾这一挑战和解决方案。

计算机代写|C++作业代写C++代考 请认准statistics-lab™

统计代写请认准statistics-lab™. statistics-lab™为您的留学生涯保驾护航。

金融工程代写

金融工程是使用数学技术来解决金融问题。金融工程使用计算机科学、统计学、经济学和应用数学领域的工具和知识来解决当前的金融问题,以及设计新的和创新的金融产品。

非参数统计代写

非参数统计指的是一种统计方法,其中不假设数据来自于由少数参数决定的规定模型;这种模型的例子包括正态分布模型和线性回归模型。

广义线性模型代考

广义线性模型(GLM)归属统计学领域,是一种应用灵活的线性回归模型。该模型允许因变量的偏差分布有除了正态分布之外的其它分布。

术语 广义线性模型(GLM)通常是指给定连续和/或分类预测因素的连续响应变量的常规线性回归模型。它包括多元线性回归,以及方差分析和方差分析(仅含固定效应)。

有限元方法代写

有限元方法(FEM)是一种流行的方法,用于数值解决工程和数学建模中出现的微分方程。典型的问题领域包括结构分析、传热、流体流动、质量运输和电磁势等传统领域。

有限元是一种通用的数值方法,用于解决两个或三个空间变量的偏微分方程(即一些边界值问题)。为了解决一个问题,有限元将一个大系统细分为更小、更简单的部分,称为有限元。这是通过在空间维度上的特定空间离散化来实现的,它是通过构建对象的网格来实现的:用于求解的数值域,它有有限数量的点。边界值问题的有限元方法表述最终导致一个代数方程组。该方法在域上对未知函数进行逼近。[1] 然后将模拟这些有限元的简单方程组合成一个更大的方程系统,以模拟整个问题。然后,有限元通过变化微积分使相关的误差函数最小化来逼近一个解决方案。

tatistics-lab作为专业的留学生服务机构,多年来已为美国、英国、加拿大、澳洲等留学热门地的学生提供专业的学术服务,包括但不限于Essay代写,Assignment代写,Dissertation代写,Report代写,小组作业代写,Proposal代写,Paper代写,Presentation代写,计算机作业代写,论文修改和润色,网课代做,exam代考等等。写作范围涵盖高中,本科,研究生等海外留学全阶段,辐射金融,经济学,会计学,审计学,管理学等全球99%专业科目。写作团队既有专业英语母语作者,也有海外名校硕博留学生,每位写作老师都拥有过硬的语言能力,专业的学科背景和学术写作经验。我们承诺100%原创,100%专业,100%准时,100%满意。

随机分析代写


随机微积分是数学的一个分支,对随机过程进行操作。它允许为随机过程的积分定义一个关于随机过程的一致的积分理论。这个领域是由日本数学家伊藤清在第二次世界大战期间创建并开始的。

时间序列分析代写

随机过程,是依赖于参数的一组随机变量的全体,参数通常是时间。 随机变量是随机现象的数量表现,其时间序列是一组按照时间发生先后顺序进行排列的数据点序列。通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,12小时,7天,1年),因此时间序列可以作为离散时间数据进行分析处理。研究时间序列数据的意义在于现实中,往往需要研究某个事物其随时间发展变化的规律。这就需要通过研究该事物过去发展的历史记录,以得到其自身发展的规律。

回归分析代写

多元回归分析渐进(Multiple Regression Analysis Asymptotics)属于计量经济学领域,主要是一种数学上的统计分析方法,可以分析复杂情况下各影响因素的数学关系,在自然科学、社会和经济学等多个领域内应用广泛。

MATLAB代写

MATLAB 是一种用于技术计算的高性能语言。它将计算、可视化和编程集成在一个易于使用的环境中,其中问题和解决方案以熟悉的数学符号表示。典型用途包括:数学和计算算法开发建模、仿真和原型制作数据分析、探索和可视化科学和工程图形应用程序开发,包括图形用户界面构建MATLAB 是一个交互式系统,其基本数据元素是一个不需要维度的数组。这使您可以解决许多技术计算问题,尤其是那些具有矩阵和向量公式的问题,而只需用 C 或 Fortran 等标量非交互式语言编写程序所需的时间的一小部分。MATLAB 名称代表矩阵实验室。MATLAB 最初的编写目的是提供对由 LINPACK 和 EISPACK 项目开发的矩阵软件的轻松访问,这两个项目共同代表了矩阵计算软件的最新技术。MATLAB 经过多年的发展,得到了许多用户的投入。在大学环境中,它是数学、工程和科学入门和高级课程的标准教学工具。在工业领域,MATLAB 是高效研究、开发和分析的首选工具。MATLAB 具有一系列称为工具箱的特定于应用程序的解决方案。对于大多数 MATLAB 用户来说非常重要,工具箱允许您学习应用专业技术。工具箱是 MATLAB 函数(M 文件)的综合集合,可扩展 MATLAB 环境以解决特定类别的问题。可用工具箱的领域包括信号处理、控制系统、神经网络、模糊逻辑、小波、仿真等。

R语言代写问卷设计与分析代写
PYTHON代写回归分析与线性模型代写
MATLAB代写方差分析与试验设计代写
STATA代写机器学习/统计学习代写
SPSS代写计量经济学代写
EVIEWS代写时间序列分析代写
EXCEL代写深度学习代写
SQL代写各种数据建模与可视化代写

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注