1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-01-19 12:24:32 +00:00

workloads/memcpy: Adds once decorators to workload

Ensure that the binary is only installed and uninstalled only once for
this workload.
This commit is contained in:
Marc Bonnici 2018-01-09 16:40:53 +00:00 committed by setrofim
parent 707b5409e7
commit 4b8d8d62c5

View File

@ -19,6 +19,7 @@ import os
import re import re
from wa import Workload, Parameter, Executable from wa import Workload, Parameter, Executable
from wa.utils.exec_control import once
THIS_DIR = os.path.dirname(__file__) THIS_DIR = os.path.dirname(__file__)
@ -58,7 +59,7 @@ class Memcpy(Workload):
all avaiable cores will be used. all avaiable cores will be used.
'''), '''),
] ]
@once
def initialize(self, context): def initialize(self, context):
self.binary_name = 'memcpy' self.binary_name = 'memcpy'
resource = Executable(self, self.target.abi, self.binary_name) resource = Executable(self, self.target.abi, self.binary_name)
@ -66,7 +67,7 @@ class Memcpy(Workload):
Memcpy.target_exe = self.target.install_if_needed(host_binary) Memcpy.target_exe = self.target.install_if_needed(host_binary)
def setup(self, context): def setup(self, context):
self.command = '{} -i {} -s {}'.format(self.target_exe, self.iterations, self.buffer_size) self.command = '{} -i {} -s {}'.format(Memcpy.target_exe, self.iterations, self.buffer_size)
for c in (self.cpus or []): for c in (self.cpus or []):
self.command += ' -c {}'.format(c) self.command += ' -c {}'.format(c)
self.result = None self.result = None
@ -79,3 +80,7 @@ class Memcpy(Workload):
match = RESULT_REGEX.search(self.result) match = RESULT_REGEX.search(self.result)
context.add_metric('time', float(match.group(1)), 'seconds', lower_is_better=True) context.add_metric('time', float(match.group(1)), 'seconds', lower_is_better=True)
context.add_metric('bandwidth', float(match.group(2)), 'MB/s') context.add_metric('bandwidth', float(match.group(2)), 'MB/s')
@once
def finalize(self, context):
self.target.uninstall('memcpy')