今天实验了一下霸爷博客里的CPU密集型计算,
计算的内容时计算四遍斐波纳妾数列的第四十个元素是多少
代码如下:
cpu_intensive.erl
-module(cpu_intensive).
-compile([export_all]).
fib_test() ->
fib(40),
fib(40),
fib(40),
fib(40),
fib(40).
fib(0) ->
1;
fib(1) ->
1;
fib(N) ->
fib(N-1) + fib(N-2).
cpu_intensive.c
#include"stdio.h"
unsigned int fib(unsigned int n)
{
if(n ==1 || n == 0){
return 1;
}
return fib(n-1) + fib(n-2);
}
int main()
{
fib(40);
fib(40);
fib(40);
fib(40);
fib(40);
return 0;
}
Makefile文件
引用
all: native normal c
native:
@erlc +native cpu_intensive.erl
@echo ""
@echo "Fibonacci Erlang native code"
@time erl -noshell -s cpu_intensive fib_test -s erlang halt
normal:
@erlc cpu_intensive.erl
@echo ""
@echo "Fibonacco Erlang non-native code"
@time erl -noshell -s cpu_intensive fib_test -s erlang halt
c:
@gcc -O0 -o cpu_intensive cpu_intensive.c
@echo ""
@echo "Fibonacci written in C without optimizations"
@time ./cpu_intensive
结果如下:
$ make
Fibonacci Erlang native code
6.35user 0.02system 0:06.37elapsed 100%CPU (0avgtext+0avgdata 69616maxresident)k
0inputs+0outputs (0major+4039minor)pagefaults 0swaps
Fibonacco Erlang non-native code
29.48user 0.02system 0:29.54elapsed 99%CPU (0avgtext+0avgdata 70352maxresident)k
0inputs+0outputs (0major+4084minor)pagefaults 0swaps
Fibonacci written in C without optimizations
5.54user 0.00system 0:05.55elapsed 99%CPU (0avgtext+0avgdata 1376maxresident)k
0inputs+0outputs (0major+109minor)pagefaults 0swaps
代码可以从附件下载
分享到:
相关推荐
当前云计算环境中,面临的一个重要问题是,当大于CPU核数的IO(输入/输出)密集型和网络密集型应用并发执行时,传统资源分配策略未能充分考虑应用程序的特性,导致资源利用率低下和应用执行效率不高。为此,研究者...
在高性能计算(HPC)领域,SIMD技术被广泛应用,特别是在处理大量数据的计算密集型任务,如图形渲染、物理模拟和深度学习。GPU(图形处理器)也支持SIMD,但其实现方式略有不同。GPU内部由众多小型处理单元构成,每...
文章中提到,GPU/CPU协同并行计算通过分配计算任务,使得CPU处理复杂的控制逻辑和I/O操作,而GPU则负责大量的数据密集型计算。这种方法不仅可以显著提高计算效率,减少计算成本和维护费用,还能适应大规模的地震数据...
例如,通过智能调度策略和优化的内存管理技术,确保GPU在执行计算密集型任务时不会因等待数据传输而闲置。 2. **多节点CPU/GPU集群**:在大规模并行计算环境中,如何有效地管理和调度跨节点的CPU和GPU资源变得至关...
综上所述,GPU-CPU协作计算模式是利用GPU的并行计算能力和CPU的控制逻辑处理能力,通过任务划分和优化调度,实现高效处理计算密集型问题的方法。这种模式对于解决现代计算挑战,如大数据处理、深度学习等,具有重要...
3. **预处理划分策略**:基于程序特征分析,文章提出了预处理策略,即在编译前对C源代码进行适当的修改,将适合GPU执行的计算密集型任务分割出来,而将需要复杂控制流和内存管理的任务留给CPU。这种策略的关键在于...
计算机体系结构中的指令调度是优化处理器性能的关键技术之一。该技术旨在通过重新排列指令序列,减少处理器中的资源...在实际应用中,通过合理的指令调度,我们可以设计出更加高效的处理器,满足计算密集型应用的需求。
具体来说,CPU负责管理数据流和协调计算任务,而GPU则承担大量的并行计算工作,比如矩阵运算和滤波等密集型计算任务。通过CUDA(Compute Unified Device Architecture)编程框架,可以有效地将计算任务调度到GPU上,...
这种设计旨在提升国产平台的计算性能,通过将逻辑判断与管理调度等任务交给CPU,而将计算密集型任务分配给FPGA,以实现硬件加速。 【FPGA加速单元】FPGA(Field-Programmable Gate Array)是现场可编程门阵列,其...
这种设计大大提高了处理器的吞吐量,使得它在执行密集型任务时表现出色。然而,单周期设计也意味着必须对硬件资源进行精细的优化,以确保所有操作可以在同一时间窗口内同步进行,这通常会增加设计的复杂性。 源码是...
本文提出了一种针对云环境下CPU密集型工作负载的虚拟机(VM)智能功耗模型,名为CAM(Cloud Adaptive Model)。CAM模型能够适应虚拟机配置的变化,并在CPU密集型工作负载下提供准确的功率估算。本文还提出了两种对应...
这种策略使得I/O密集型任务能更快地完成I/O操作,从而提高整体的I/O响应速度,而计算密集型任务则可以在适合执行此类任务的CPU上高效运行,确保计算性能。 实验结果显示,STC调度模型相比系统默认的CFS( ...
这意味着该研究为生物信息学领域的计算密集型问题提供了一个有效且灵活的解决途径,有助于进一步提升科研效率。 论文的关键词包括:生物信息学、RNA二级结构预测、最小自由能、混合加速方法。根据这些关键词,我们...
在对比中,我们关注的是计算效率,特别是在处理计算密集型任务时的表现。华为鲲鹏CPU具有出色的单线程性能,能够有效加速计算过程。然而,当面对具有高度并行性的任务时,如多类积分的并行计算,GPU的并行计算能力便...
通过利用GPU的高性能数据并行计算能力,可以在许多计算密集型应用中实现显著的性能提升。无论是图形渲染、数据加密还是密码破解等应用场景,GPU都能够发挥其独特的并行计算优势,为用户提供更高效、更快速的服务。...
总的来说,CUDA为并行计算提供了一个强大的工具,使得程序员能够利用GPU的并行性来解决计算密集型问题,如数组求和。通过有效的线程组织和内存管理,CUDA可以显著提高计算效率,这对于科学计算、图像处理和机器学习...
HPC系统通常用于执行需要大量计算资源的任务,如大型科学工程计算、数值模拟、数据分析以及通信密集型应用。 HPC在科研领域的应用广泛,它能够帮助科学家们处理复杂的问题,例如在计算物理中模拟宇宙的形成,在计算...
CPU-GPU异构多核系统对计算密集型的应用加速效果显著而得到广泛应用,但易出现负载均衡问题。针对此问题,提出了一种CPU-GPU异构多核系统的动态任务调度算法。该算法充分利用CPU的线程资源和GPU的计算资源,准确测量...
当用`calc()`函数替换`grep`后,可以观察到CPU时间的显著增加,因为计算密集型任务主要消耗CPU资源,而非I/O资源。用户CPU时间(`tms_utime`)和系统CPU时间(`tms_stime`)分别表示用户进程和内核进程执行的时间。...