#!/usr/bin/env python3 # IRPF90 is a Fortran90 preprocessor written in Python for programming using # the Implicit Reference to Parameters (IRP) method. # Copyright (C) 2009 Anthony SCEMAMA # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # # Anthony Scemama # LCPQ - IRSAMC - CNRS # Universite Paul Sabatier # 118, route de Narbonne # 31062 Toulouse Cedex 4 # scemama@irsamc.ups-tlse.fr from command_line import command_line import irpf90_t def run(): template = """ program codelet_%(name)s implicit none integer :: i double precision :: ticks_0, ticks_1, cpu_0, cpu_1 integer, parameter :: irp_imax = %(NMAX)d %(precondition)s call provide_%(name)s double precision :: irp_rdtsc call cpu_time(cpu_0) ticks_0 = irp_rdtsc() do i=1,irp_imax call bld_%(name)s enddo ticks_1 = irp_rdtsc() call cpu_time(cpu_1) print *, '%(name)s' print *, '-----------' print *, 'Cycles:' print *, (ticks_1-ticks_0)/dble(irp_imax) print *, 'Seconds:' print *, (cpu_1-cpu_0)/dble(irp_imax) end """ name, NMAX, precondition, filename = command_line.codelet if precondition is None: precondition = "" else: precondition = "PROVIDE "+precondition file = open(filename,'w') file.write(template%locals()) file.close()