Fortran Coder

标题: 同一程序,不同电脑效率不同 [打印本页]

作者: andy8496    时间: 2015-4-20 18:51
标题: 同一程序,不同电脑效率不同
问题是这样的:我新编的一个程序,就是读取所有参数后(参数不多)开始循环运行计算输出结果到文件。
就是正常的Fortran代码编写,没有采用并行计算什么的。
奇怪的是:这个程序在一台配置较低的电脑(i5的CPU)上CPU可以跑到25%,但是同样的exe换到另一台电脑(i7cpu)上只有12%。
这就导致电脑好反而算的慢。
也怀疑是编译器针对当前的电脑做了优化,但是不管在那个电脑上编译得到的exe到两个电脑上试都是差不多的效果。
何解?

作者: kif117    时间: 2015-4-20 21:11
我这里有一个简单的程序,你可以在两台电脑上分别试验一下计算时间(也许能帮你分析一下究竟是电脑本身的问题还是程序的问题)。

      program main
      real*8, allocatable :: x(:), y(:)
      real*8 time
      integer*4 time0, time1, dtime
      integer i, j, n, m
      n = 10000
      m = 100000
      allocate(x(n), y(n))
      do i=1,n
        x(i) = rand()
      end do
      call system_clock(time0)
      do j=1,m
        do i=1,n
          y(i) = x(i) + 1d0
        end do
      end do
      call system_clock(time1, dtime)
      time = 1d0*(time1-time0)/dtime
      write(*,"(a7,f16.7)")"Time = ",time
      deallocate(x, y)
      end program
作者: li913    时间: 2015-4-21 10:51
25% 和 12%如果是指的cpu使用率,那么这是正常的。串行程序只能使用一个核心进行计算,如果是四核CPU,能到25%;八核CPU,就是12%。
作者: andy8496    时间: 2015-4-21 19:35
li913 发表于 2015-4-21 10:51
25% 和 12%如果是指的cpu使用率,那么这是正常的。串行程序只能使用一个核心进行计算,如果是四核CPU,能到 ...

一语破的,醍醐灌顶!
十分感谢!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2