Greetings all,
I have been in the process of reviewing feedback and planning the project.
I believe I have come to a good purpose statement for OSCAR Bench:
A framework that allows for benchmarks and associated tools to be
installed, configured, compiled, and run using XML and Perl.
The framework is based off the idea that benchmarks typically read a
configuration file and then execute based off that. Also when
compiling, there is generally some user input required that is then
written somewhere.
I have broken the process down as follows:
install
compile
execute
results
1) Install
Install is getting the required files, and placing them where OSCAR
Bench can find them. OSCAR Package can handle this easily.
assuming OSCAR Bench is installed to /opt/oscar_bench
you would have:
++oscar_bench
++++benchmarks
++++docs
++++scripts
++++src
The 'benchmark' directory would be where you install benchmarks.
++oscar_bench
++++benchmarks
++++++bin
++++++doc
++++++scripts
++++++results
++++++src
++++++xml
The actual benchmark, for instance HPL, would be in
/opt/oscar_bench/benchmarks/hpl/src/hpl
or DARPA
/opt/oscar_bench/benchmarks/hpcc/src/hpcc
The folder xml will contain files that drive the compiling,
config/execution, and result processing.
under xml you would have:
compile.xml
config.xml
info.xml
results.xml
1) compile.xml will contain information pertaining to how to compile the
software. It may contain a series of questions the user needs to answer,
as well as provide a default value. You may also associate a script with
each question. The script allows the packager to return a set of dynamic
values that would be a good default choice. You may also specify which
line this information should be written to, or if line numbers are not
critical, then it can be skipped.
<?xml version="1.0" encoding="ISO-8859-1"?>
<compile>
<require_user_input>true</require_user_input>
#This specifies input values/text should be written to specific line
numbers
<use_line_numbers>true</use_line_numbers>
#Where to write this information
<filename>my_Makefile</filename>
<pre_script>do_something_before.pl</pre_script>
<post_script>do_something_before.pl</post_script>
<inputs>
<input>
#Hook that lets you provided dynamic configuration value
#For instance trying to find BLAS
<auto_config>benchmarks/hpl/scripts/find_BLAS.pl</auto_config>
#Specifies the line number this entry should go on
<line>0</line>
#Possibly the config file would need something like:
#X = value
#Here you could place:
#X =
#Whatever the use inputs would be placed following this text
<pre_value_text>
N =
</pre_value_text>
#This text would be entered following the value,
#if the value needs to be delimited by a semicolon
#or if you wish to entered a comment that could go here.
<post_value_text>
#A comment, or whatever may be required after a value
</post_value_text>
#The question the user will answer
<description>
How large should N be for HPL?
</description>
</input>
#another input....
<input>
<auto_config></auto_config>
<line></line>
<pre_value_text></pre_value_text>
<post_value_text></post_value_text>
<description></description>
<default></default>
</input>
</inputs>
</compile>
config.xml would be very similar. The idea being that you can define
what the software needs to know about compiling or running in XML. And
then the framework will ask the user the questions, and generate a file
in the end. The pre_script, post_script allow the packager to do tasks
before or after the asking the user input. In the end a file is written,
and using the post_script you can execute a command that would need the
file: make, mpirun, qsub....
++oscar_bench
++++benchmarks
++++++bin
++++++doc
++++++scripts
++++++results
++++++src
++++++xml
++++++++compile.xml
++++++++config.xml
++++++++info.xml
++++++++results.xml
The info.xml and results.xml do not involve user input, info.xml
contains information about the tool you are installing. This type of
info is what the user can see to know whether they want to install this
or not.
What does it do, and what is its license, author, website, etc...
results.xml defines how results are handled. It should include a
database schema so the results can be stored, and it should include
descriptive text for each result generated: What is MPI Latency?
I also want to include hooks so the packager can include dynamic 'good
values' that the results should match up to: if you are doing disk IO
possibly detect whether its ATA or SATA. This type of scripting is
optional and may or may not be of any use.
under oscar_bench,
docs should contain information on using OSCAR Bench
under each benchmark there is also docs, this should contain any
documentation for that specific benchmark, or possibly further reading
that is to involved to display in a Qt/command line enviroment.
each benchmark also has a bin directory, this is where the benchmark
will be compiled to ( if it needs to be compiled ), or where the
executable program/files should be.
I am 100% positive I will change and adapt this as I go, but my goal is
to provide a way to easily execute tools. If you want an NFS benchmark,
you would write any required scripts, and then define the XML files. If
no user input is needed, you can leave them out, if no dynamic values
are needed you may leave them out. Then create your benchmark to read
from a file if it needs values, and it will plug right in.
I appreciate any criticism, it took way to long to write this email, as
I continually feel I am leaving something out. What is the best way to
communicate? It is challenging when you can't talk face to face =)
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Oscar-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oscar-devel