Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F88397728
extract.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Oct 18, 14:37
Size
2 KB
Mime Type
text/x-python
Expires
Sun, Oct 20, 14:37 (2 d)
Engine
blob
Format
Raw Data
Handle
21765272
Attached To
R195 SCITAS application benchmarks
extract.py
View Options
#!/usr/bin/env python
import
sys
import
string
import
types
from
numpy
import
*
#####################################################
def
read_ascii
(
file
,
columns
=
None
,
lines
=
None
,
dtype
=
float
,
skipheader
=
False
,
cchar
=
'#'
):
#####################################################
"""[X,Y,Z] = READ('FILE',[1,4,13],lines=[10,1000])
Read columns 1,4 and 13 from 'FILE' from line 10 to 1000
into array X,Y and Z
file is either fd or name file
"""
def
RemoveComments
(
l
):
if
l
[
0
]
==
cchar
:
return
None
else
:
return
l
def
toNumList
(
l
):
return
map
(
dtype
,
l
)
if
type
(
file
)
!=
types
.
FileType
:
f
=
open
(
file
,
'r'
)
else
:
f
=
file
# read header while there is one
while
1
:
fpos
=
f
.
tell
()
header
=
f
.
readline
()
if
header
[
0
]
!=
cchar
:
f
.
seek
(
fpos
)
header
=
None
break
else
:
if
skipheader
:
header
=
None
else
:
# create dict from header
header
=
string
.
strip
(
header
[
2
:])
elts
=
string
.
split
(
header
)
break
'''
# read header if there is one
header = f.readline()
if header[0] != cchar:
f.seek(0)
header = None
else:
if skipheader:
header = None
else:
# create dict from header
header = string.strip(header[2:])
elts = string.split(header)
'''
# now, read the file content
lines
=
f
.
readlines
()
# remove trailing
lines
=
map
(
string
.
strip
,
lines
)
# remove comments
#lines = map(RemoveComments, lines)
# split
lines
=
map
(
string
.
split
,
lines
)
# convert into float
lines
=
map
(
toNumList
,
lines
)
# convert into array
lines
=
array
(
map
(
array
,
lines
))
# transpose
lines
=
transpose
(
lines
)
if
header
!=
None
:
iobs
=
{}
i
=
0
for
elt
in
elts
:
iobs
[
elt
]
=
i
i
=
i
+
1
vals
=
{}
for
key
in
iobs
.
keys
():
vals
[
key
]
=
lines
[
iobs
[
key
]]
return
vals
# return
if
columns
==
None
:
return
lines
else
:
return
lines
.
take
(
axis
=
0
,
indices
=
columns
)
#################################################
#
#################################################
nsteps
=
146
files
=
sys
.
argv
[
1
:]
n
=
len
(
files
)
ns
=
zeros
(
n
)
ss
=
zeros
(
n
)
tt
=
zeros
(
n
)
print
print
"
%5s
%15s
%15s
%15s
"
%
(
"Ncpu"
,
"PhysTime"
,
"TimeForNsteps"
,
"#StepsPerTime"
)
print
56
*
"-"
for
i
,
file
in
enumerate
(
files
):
vals
=
read_ascii
(
file
)
# Step Time nCPUs CPU_Total
Ncpus
=
vals
[
'nCPUs'
][
0
]
Time
=
vals
[
'Time'
][
nsteps
]
TimeForNsteps
=
vals
[
'CPU_Total'
][
nsteps
]
StepsPerTime
=
float
(
nsteps
)
/
TimeForNsteps
print
"
%5d
%15g
%15g
%15g
"
%
(
Ncpus
,
Time
,
TimeForNsteps
/
3600.
,
StepsPerTime
)
ns
[
i
]
=
Ncpus
ss
[
i
]
=
StepsPerTime
tt
[
i
]
=
TimeForNsteps
print
print
"Total hours
%6.3f
"
%
(
sum
(
tt
)
/
3600.
)
'''
import Ptools as pt
pt.plot(ns,ss)
pt.scatter(ns,ss)
pt.xlabel('Number of cores')
pt.ylabel('Steps per unit of CPU time')
pt.show()
'''
Event Timeline
Log In to Comment