相关文章推荐
! put code to test here call cpu_time(finish) print '("Time = ",f6.3," seconds.")',finish-start end program test_cpu_time

也可以使用system_time,但用法不一样.

在fortran中利用cpu_time子程序来测试代码运行时间# 在fortran中利用cpu_time子程序来测试代码运行时间program test_cpu_timereal :: start, finishcall cpu_time(start) ! put code to test herecall cpu_time(finish)print '("Time = ",f6 某些数组以及变量值要重复用到,比如有多个 子程序 需要调用,存在两种情况: (1)值已知,这种情况下单个变量值较常见,比如圆周率π,就用parameter声明在Module ; real,parameter::pi=3.1415926... call date_and_time(charecter_date(len=8),charecter_time(len=10)) call cpu_time(real_time) 注意,如果是多线程运行,得到的结果是所以线程时间的和 call system_clock(int_time) 单位是毫秒 program main implicit non...
在优化程序的过程 发现其 存在大量的派生类型变量(type),同时发现 Fortran 子程序 可以接受type类型数组 元素,即将type类型 元素当作独立的数组传递。传递过程如下所示:... 为了测试派生类型数组传递的速度,编写如下程序进行对比module 更改不同的num值可以得到程序 耗时 结果,从表格 可以看出传递type数组 元素所 耗时 间是直接传递数组所需时间的3倍,当然两种数组的大小应该在10...
MPI_Gather:收集相同长度的数据块。 MPI_Gatherv:收集不同长度的数据块。与MPI_Gather类似,但允许 每个 进程发送的数据块长度不同,并且根进程可以任意排放数据块在recvbuf 的位置。 MPI_Gather MPI_Gather( void* sendbuf, int sendcnt, MPI_Datatype sendtype, void* recvbuf, int recvcnts, MPI_Datatype r
IMSL是一款非常强大的数学和统计分析软件,它提供了许多常用的数值优化算法,包括非线性最小二乘问题的求解算法UNLSF。下面是在 Fortran 利用IMSL算法库实现UNLSF算法的示例代码: ``` fortran PROGRAM unlsf_example IMPLICIT NONE INTEGER :: n, m, i, j, info REAL :: x(100), y(100), tol, fnorm REAL, DIMENSION(100, 10) :: fjac REAL, DIMENSION(10) :: x0, fvec, diag, qtf CHARACTER(LEN=12) :: errmsg EXTERNAL :: fcn ! 初始化数据 n = 10 m = 100 tol = 1E-6 x0 = 0.0 x0(1) = 1.0 DO i = 1, m x(i) = REAL(i, KIND=4) DO j = 1, n-1 fjac(i,j) = x(i)**(REAL(j, KIND=4)) END DO END DO y = 2.0 * x + 1.0 + 0.1 * RAND(0) ! 调用UNLSF算法求解非线性最小二乘问题 CALL UNLSF(fcn, m, n, x0, fvec, fjac, tol, diag, qtf, info, errmsg) ! 输出结果 IF (info .EQ. 1) THEN WRITE(*,*) "UNLSF converged successfully!" WRITE(*,*) "The solution is:" WRITE(*,*) x0 WRITE(*,*) "UNLSF failed to converge:" WRITE(*,*) errmsg END IF ! 定义目标函数 FUNCTION fcn(m, n, x, fvec, fjac) INTEGER, INTENT(IN) :: m, n REAL, INTENT(IN) :: x(n) REAL, INTENT(OUT) :: fvec(m) REAL, INTENT(INOUT) :: fjac(m,n) INTEGER :: i, j DO i = 1, m fvec(i) = 0.0 DO j = 1, n-1 fvec(i) = fvec(i) + fjac(i,j) * x(j) END DO fvec(i) = fvec(i) - y(i) END DO RETURN END FUNCTION fcn END PROGRAM unlsf_example 在这个示例代码 ,我们首先定义了一组数据,并且构造了目标函数fcn。然后调用IMSL算法库 的UNLSF函数求解非线性最小二乘问题。最后根据算法的返回值判断求解是否成功,并输出结果。
 
推荐文章