~njansson/dolfin/hpc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env python
#
# Copyright (C) 2007 Anders Logg.
# Licensed under the GNU LGPL Version 2.1.
#
# Utilities for running benchmarks

from commands import getoutput
from time import time, localtime
from os import uname
from getopt import getopt
from sys import argv

def bench(argv, logfile):
    "Run benchmark program and append results to logfile"

    # Run benchmark
    program = " ".join(argv[1:])
    print "Running benchmark: %s" % program
    tic = time()
    getoutput(program)
    toc = time() - tic
    print "Elapsed time: " + str(toc)

    # Get system variables
    system_time = "%d-%02d-%02d %02d:%02d:%02d" % localtime()[0:6]
    system_host = "%s (running %s)" % (uname()[1], uname()[0])

    # Get DOLFIN version
    dolfin_version = getoutput("pkg-config --modversion dolfin")
    dolfin_changeset = getoutput("hg log -r tip | grep changeset:").split(":")[2]

    # Write log file
    file = open(logfile, "a")
    file.write("Date:      %s\n" % system_time)
    file.write("Host:      %s\n" % system_host)
    file.write("Version:   %s\n" % dolfin_version)
    file.write("Changeset: %s\n" % dolfin_changeset)
    file.write("\n")
    file.write("CPU time: %g\n" % toc)
    file.write("----------------------------------------\n")
    file.close()

    print "Logfile written to %s" % logfile

def main(argv):
    "Parse arguments and run benchmark"
    print argv
    #opts, args = getopt(argv[1:])
    #print opts, args

if __name__ == "__main__":
    bench(argv, "bench.log")