Initial commit.

This commit is contained in:
Matthias
2017-04-11 15:48:26 +02:00
commit bbf8eb631a
350 changed files with 12750 additions and 0 deletions
Executable
+118
View File
@@ -0,0 +1,118 @@
cmake_minimum_required(VERSION 2.8)
project(wfr-examples C CXX)
# Compiler flags
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -DNDEBUG -Wall")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -DNDEBUG -Wall")
# Find WFR-libraries
if (NOT WFR_FOUND)
if (NOT WFR_DIR)
set(WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../WFR-lib/dist")
endif()
find_package(WFR REQUIRED)
endif()
# Find IWIR2WFR compiler
if (NOT IWIR2WFR_FOUND)
if (NOT IWIR2WFR_DIR)
set(IWIR2WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../IWIR2WFRcompiler/dist")
endif()
find_package(IWIR2WFR REQUIRED)
endif()
# We need OpenMP
FIND_PACKAGE(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
# Where to install the output
get_directory_property(hasParent PARENT_DIRECTORY)
if (NOT hasParent)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/dist")
endif()
endif()
# Setup include dir
include_directories(${WFR_INCLUDE_DIR})
# Enable C++11 support
ADD_DEFINITIONS( -std=c++11 )
#
# Convenience function for setting up individual unit-tests
#
function(add_wfr_example name add_inc)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h
COMMAND ${IWIR2WFR_EXE} -i ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/${name}.iwir -o ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name} -skipmain -printir -repoconfig ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/repo/${name}.properties
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr
)
add_definitions("-pg -g3")
add_executable(${name}-wfr.bin ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${ARGN})
target_include_directories(${name}-wfr.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr ${add_inc})
target_link_libraries(${name}-wfr.bin ${WFR_LIBRARIES})
add_dependencies(${name}-wfr.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
install(TARGETS ${name}-wfr.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
endfunction()
function(add_omp_example name add_inc)
add_executable(${name}-omp.bin ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/openmp/${name}.cpp ${ARGN})
target_include_directories(${name}-omp.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/openmp ${add_inc})
target_link_libraries(${name}-omp.bin ${WFR_LIBRARIES})
add_dependencies(${name}-omp.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(TARGETS ${name}-omp.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/openmp)
endfunction()
#
# Setup individual examples
#
add_wfr_example(montage-pegasus "")
add_omp_example(montage-pegasus "")
add_wfr_example(povray "")
add_omp_example(povray "")
add_wfr_example(raincloud "")
add_omp_example(raincloud "")
add_wfr_example(raincloud.test01 "")
add_wfr_example(raincloud.transformed "")
add_wfr_example(sparselu-for "")
add_omp_example(sparselu-for "")
add_wfr_example(sparselu-for-trans01 "")
add_wfr_example(sparselu-while "")
add_omp_example(sparselu-while "")
add_wfr_example(starrs-merge "")
add_omp_example(starrs-merge "")
add_wfr_example(nested_for_01 "")
add_wfr_example(nested_for_02 "")
add_wfr_example(nested_for_02b "")
add_wfr_example(nested_for_02c "")
add_wfr_example(nested_for_02d "")
add_wfr_example(nested_for_03 "")
add_wfr_example(nested_for_04 "")
add_wfr_example(unrolling_for_01 "")
add_wfr_example(unrolling_for_02 "")
add_wfr_example(meteoag01 "")
add_wfr_example(meteoag02 "")
add_wfr_example(meteoag03 "")
add_wfr_example(blast01 "")
add_wfr_example(blast02 "")
+109
View File
@@ -0,0 +1,109 @@
cmake_minimum_required(VERSION 2.8)
project(wfr-examples C CXX)
# Compiler flags
set(CMAKE_CXX_FLAGS_DEBUG "-O3 -g3 -pg -DNDEBUG -Wall")
set(CMAKE_C_FLAGS_DEBUG "-O3 -g3 -pg -DNDEBUG -Wall")
# Find WFR-libraries
if (NOT WFR_FOUND)
if (NOT WFR_DIR)
set(WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../WFR-lib/dist")
endif()
find_package(WFR REQUIRED)
endif()
# Find IWIR2WFR compiler
if (NOT IWIR2WFR_FOUND)
if (NOT IWIR2WFR_DIR)
set(IWIR2WFR_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../IWIR2WFRcompiler/dist")
endif()
find_package(IWIR2WFR REQUIRED)
endif()
# We need OpenMP
FIND_PACKAGE(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
# Where to install the output
get_directory_property(hasParent PARENT_DIRECTORY)
if (NOT hasParent)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/dist")
endif()
endif()
# Setup include dir
include_directories(${WFR_INCLUDE_DIR})
# Enable C++11 support
ADD_DEFINITIONS( -std=c++11 )
#
# Convenience function for setting up individual unit-tests
#
function(add_wfr_example name add_inc)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h
COMMAND ${IWIR2WFR_EXE} -i ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/${name}.iwir -o ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name} -skipmain -printir -repoconfig ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/wfr/repo/${name}.properties
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr
)
add_definitions("-pg -g3")
add_executable(${name}-wfr.bin ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${ARGN})
target_include_directories(${name}-wfr.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr ${add_inc})
target_link_libraries(${name}-wfr.bin ${WFR_LIBRARIES})
add_dependencies(${name}-wfr.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${name}/wfr/${name}.h DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
install(TARGETS ${name}-wfr.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/wfr)
endfunction()
function(add_omp_example name add_inc)
add_executable(${name}-omp.bin ${CMAKE_CURRENT_SOURCE_DIR}/src/${name}/openmp/${name}.cpp ${ARGN})
target_include_directories(${name}-omp.bin PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${name}/openmp ${add_inc})
target_link_libraries(${name}-omp.bin ${WFR_LIBRARIES})
add_dependencies(${name}-omp.bin wfr_lib) # Otherwise we would have race conditions when compiling the parent project with -j
install(TARGETS ${name}-omp.bin DESTINATION ${CMAKE_INSTALL_PREFIX}/examples/${name}/openmp)
endfunction()
#
# Setup individual examples
#
add_wfr_example(montage-pegasus "")
add_omp_example(montage-pegasus "")
add_wfr_example(povray "")
add_omp_example(povray "")
add_wfr_example(raincloud "")
add_omp_example(raincloud "")
add_wfr_example(raincloud.test01 "")
add_wfr_example(raincloud.transformed "")
add_wfr_example(sparselu-for "")
add_omp_example(sparselu-for "")
add_wfr_example(sparselu-while "")
add_omp_example(sparselu-while "")
add_wfr_example(starrs-merge "")
add_omp_example(starrs-merge "")
add_wfr_example(nested_for_01 "")
add_wfr_example(nested_for_02 "")
add_wfr_example(nested_for_02b "")
add_wfr_example(nested_for_02c "")
add_wfr_example(nested_for_02d "")
add_wfr_example(nested_for_03 "")
add_wfr_example(nested_for_04 "")
add_wfr_example(unrolling_for_01 "")
add_wfr_example(unrolling_for_02 "")
Executable
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
rm -rf default* *.png *.dot wfr_wdir*
Executable
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
for i in *.dot; do
echo "Creating $i.png"
dot -Tpng $i > $i.png
done
+4
View File
@@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2015,2,11,11,19,2
Version=3
ViewMode=1
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
[Dolphin]
Timestamp=2016,11,14,13,29,44
Version=3
ViewMode=2
+112
View File
@@ -0,0 +1,112 @@
<IWIR version="1.1" wfname="Blast" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
</inputPorts>
<body>
<task name="split_inputs" tasktype="split_inputs">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="input_chunks" type="collection/file"/>
</outputPorts>
</task>
<parallelForEach name="pForEach01">
<inputPorts>
<loopElements>
<loopElement name="input_chunks" type="collection/file"/>
</loopElements>
</inputPorts>
<body>
<task name="distributed_script" tasktype="distributed_script">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
<outputPort name="error" type="file"/>
<outputPort name="total" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
<outputPort name="error" type="collection/file"/>
<outputPort name="total" type="collection/file"/>
</outputPorts>
<links>
<link from="pForEach01/input_chunks" to="distributed_script/input"/>
<link from="distributed_script/output" to="pForEach01/output"/>
<link from="distributed_script/error" to="pForEach01/error"/>
<link from="distributed_script/total" to="pForEach01/total"/>
</links>
</parallelForEach>
<task name="cat_output" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_error" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_total" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="finish_job" tasktype="finish_job">
<inputPorts>
<inputPort name="output" type="file"/>
<inputPort name="error" type="file"/>
<inputPort name="total" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="result" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="result" type="file"/>
</outputPorts>
<links>
<link from="toplevel/input_file" to="split_inputs/input_file"/>
<link from="toplevel/chunk_count" to="split_inputs/chunk_count"/>
<link from="split_inputs/input_chunks" to="pForEach01/input_chunks"/>
<link from="pForEach01/output" to="cat_output/input"/>
<link from="pForEach01/error" to="cat_error/input"/>
<link from="pForEach01/total" to="cat_total/input"/>
<link from="cat_output/output" to="finish_job/output"/>
<link from="cat_error/output" to="finish_job/error"/>
<link from="cat_total/output" to="finish_job/total"/>
<link from="finish_job/result" to="toplevel/result"/>
</links>
<properties>
<property name="version" value="1.0.0"/>
<property name="author" value="matthias"/>
<property name="domain" value="Generic"/>
</properties>
</blockScope>
</IWIR>
@@ -0,0 +1,5 @@
auto sleeptime = sin->input.getSize(); // per file the original code roughly needed 0.7 ms (let's round that to 1 ms).
std::this_thread::sleep_for(std::chrono::milliseconds((long int)sleeptime));
sout->output.setValue("cat_output.file");
@@ -0,0 +1,3 @@
name=cat_files
entries=1
entry.0=cat_files.code
@@ -0,0 +1,6 @@
EXECUTE_SIMULATION_MODE
sout->output.setValue("output.file");
sout->error.setValue("error.file");
sout->total.setValue("total.file");
@@ -0,0 +1,3 @@
name=distributed_script
entries=1
entry.0=distributed_script.code
@@ -0,0 +1,4 @@
EXECUTE_SIMULATION_MODE
sout->result.setValue("result.file");
@@ -0,0 +1,3 @@
name=finish_job
entries=1
entry.0=finish_job.code
+2
View File
@@ -0,0 +1,2 @@
#include <boost/program_options.hpp>
#include <thread>
@@ -0,0 +1,7 @@
EXECUTE_SIMULATION_MODE
for (long i = 0; i < sin->chunk_count.getValue(); ++i) {
sout->input_chunks.setEntryValue(i, "input_chunk");
}
sout->input_chunks.setFinalised(true);
@@ -0,0 +1,3 @@
name=split_inputs
entries=1
entry.0=split_inputs.code
+23
View File
@@ -0,0 +1,23 @@
long chunkCount = 10;
bool isHelp = false;
boost::program_options::options_description opts("MeteoAG Options");
opts.add_options()
("help", "Print help message.")
("inputchunks", boost::program_options::value<long>(), "Number of input chunks.");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
std::cerr << opts << std::endl;
isHelp = true;
} else {
if (vm.count("inputchunks")) {
chunkCount = vm["inputchunks"].as<long>();
}
std::cerr << "inputChunks = " << chunkCount << std::endl;
}
wfInput.input_file.setValue("input_file");
wfInput.chunk_count.setValue(chunkCount);
View File
+9
View File
@@ -0,0 +1,9 @@
wfinput=blast/wfInput.code
wfoutput=blast/wfOutput.code
includes=blast/includes.code
atomicTask.0=blast/split_inputs.properties
atomicTask.1=blast/distributed_script.properties
atomicTask.2=blast/cat_files.properties
atomicTask.3=blast/finish_job.properties
+179
View File
@@ -0,0 +1,179 @@
<IWIR version="1.1" wfname="Blast" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
<inputPort name="parallelReductions" type="integer"/>
</inputPorts>
<body>
<task name="split_inputs" tasktype="split_inputs">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="input_chunks" type="collection/file"/>
</outputPorts>
</task>
<parallelFor name="pFor01">
<inputPorts>
<loopCounter name="counter" from="0" to="" step="1"/>
<inputPort name="input_chunks" type="collection/file"/>
<inputPort name="parallelReductions" type="integer"/>
</inputPorts>
<body>
<task name="helper01" tasktype="helper01">
<inputPorts>
<inputPort name="input_chunks" type="collection/file"/>
<inputPort name="parallelReductions" type="integer"/>
<inputPort name="loopCounter" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="collection/file"/>
</outputPorts>
</task>
<parallelForEach name="pForEach01">
<inputPorts>
<loopElements>
<loopElement name="input_chunks" type="collection/file"/>
</loopElements>
</inputPorts>
<body>
<task name="distributed_script" tasktype="distributed_script">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
<outputPort name="error" type="file"/>
<outputPort name="total" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
<outputPort name="error" type="collection/file"/>
<outputPort name="total" type="collection/file"/>
</outputPorts>
<links>
<link from="pForEach01/input_chunks" to="distributed_script/input"/>
<link from="distributed_script/output" to="pForEach01/output"/>
<link from="distributed_script/error" to="pForEach01/error"/>
<link from="distributed_script/total" to="pForEach01/total"/>
</links>
</parallelForEach>
<task name="cat_output" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_error" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_total" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
<outputPort name="error" type="collection/file"/>
<outputPort name="total" type="collection/file"/>
</outputPorts>
<links>
<link from="pFor01/input_chunks" to="helper01/input_chunks"/>
<link from="pFor01/parallelReductions" to="helper01/parallelReductions"/>
<link from="pFor01/counter" to="helper01/loopCounter"/>
<link from="helper01/output" to="pForEach01/input_chunks"/>
<link from="pForEach01/output" to="cat_output/input"/>
<link from="pForEach01/error" to="cat_error/input"/>
<link from="pForEach01/total" to="cat_total/input"/>
<link from="cat_output/output" to="pFor01/output"/>
<link from="cat_error/output" to="pFor01/error"/>
<link from="cat_total/output" to="pFor01/total"/>
</links>
</parallelFor>
<task name="cat_output_2" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_error_2" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="cat_total_2" tasktype="cat_files">
<inputPorts>
<inputPort name="input" type="collection/file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="finish_job" tasktype="finish_job">
<inputPorts>
<inputPort name="output" type="file"/>
<inputPort name="error" type="file"/>
<inputPort name="total" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="result" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="result" type="file"/>
</outputPorts>
<links>
<link from="toplevel/input_file" to="split_inputs/input_file"/>
<link from="toplevel/chunk_count" to="split_inputs/chunk_count"/>
<link from="split_inputs/input_chunks" to="pFor01/input_chunks"/>
<link from="toplevel/parallelReductions" to="pFor01/parallelReductions"/>
<link from="toplevel/parallelReductions" to="pFor01/counter/to"/>
<link from="pFor01/output" to="cat_output_2/input"/>
<link from="pFor01/error" to="cat_error_2/input"/>
<link from="pFor01/total" to="cat_total_2/input"/>
<link from="cat_output_2/output" to="finish_job/output"/>
<link from="cat_error_2/output" to="finish_job/error"/>
<link from="cat_total_2/output" to="finish_job/total"/>
<link from="finish_job/result" to="toplevel/result"/>
</links>
<properties>
<property name="version" value="1.0.0"/>
<property name="author" value="matthias"/>
<property name="domain" value="Generic"/>
</properties>
</blockScope>
</IWIR>
@@ -0,0 +1,5 @@
auto sleeptime = sin->input.getSize(); // per file the original code roughly needed 0.7 ms (let's round that to 1 ms).
std::this_thread::sleep_for(std::chrono::milliseconds((long int)sleeptime));
sout->output.setValue("cat_output.file");
@@ -0,0 +1,3 @@
name=cat_files
entries=1
entry.0=cat_files.code
@@ -0,0 +1,6 @@
EXECUTE_SIMULATION_MODE
sout->output.setValue("output.file");
sout->error.setValue("error.file");
sout->total.setValue("total.file");
@@ -0,0 +1,3 @@
name=distributed_script
entries=1
entry.0=distributed_script.code
@@ -0,0 +1,4 @@
EXECUTE_SIMULATION_MODE
sout->result.setValue("result.file");
@@ -0,0 +1,3 @@
name=finish_job
entries=1
entry.0=finish_job.code
+6
View File
@@ -0,0 +1,6 @@
for (long i = 0; i < sin->input_chunks.getSize()/(sin->parallelReductions.getValue()+1); ++i) {
sout->output.setEntryValue(i, sin->input_chunks.getEntryValue(i));
}
sout->output.setFinalised(true);
@@ -0,0 +1,3 @@
name=helper01
entries=1
entry.0=helper01.code
+2
View File
@@ -0,0 +1,2 @@
#include <boost/program_options.hpp>
#include <thread>
@@ -0,0 +1,7 @@
EXECUTE_SIMULATION_MODE
for (long i = 0; i < sin->chunk_count.getValue(); ++i) {
sout->input_chunks.setEntryValue(i, "input_chunk");
}
sout->input_chunks.setFinalised(true);
@@ -0,0 +1,3 @@
name=split_inputs
entries=1
entry.0=split_inputs.code
+30
View File
@@ -0,0 +1,30 @@
long chunkCount = 10;
long parallelreductions = 10;
bool isHelp = false;
boost::program_options::options_description opts("MeteoAG Options");
opts.add_options()
("help", "Print help message.")
("inputchunks", boost::program_options::value<long>(), "Number of input chunks.")
("parallelreductions", boost::program_options::value<long>(), "Number of parallel reductions.");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
std::cerr << opts << std::endl;
isHelp = true;
} else {
if (vm.count("inputchunks")) {
chunkCount = vm["inputchunks"].as<long>();
}
if (vm.count("parallelreductions")) {
parallelreductions = vm["parallelreductions"].as<long>();
}
std::cerr << "inputChunks = " << chunkCount << std::endl;
std::cerr << "parallelreductions = " << parallelreductions << std::endl;
}
wfInput.input_file.setValue("input_file");
wfInput.chunk_count.setValue(chunkCount);
wfInput.parallelReductions.setValue(parallelreductions);
View File
+10
View File
@@ -0,0 +1,10 @@
wfinput=blast/wfInput.code
wfoutput=blast/wfOutput.code
includes=blast/includes.code
atomicTask.0=blast/split_inputs.properties
atomicTask.1=blast/distributed_script.properties
atomicTask.2=blast/cat_files.properties
atomicTask.3=blast/finish_job.properties
atomicTask.4=blast/helper01.properties
+168
View File
@@ -0,0 +1,168 @@
<IWIR version="1.1" wfname="meteoAG" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
<inputPort name="if_condition" type="boolean"/>
<inputPort name="pForIterations" type="integer"/>
</inputPorts>
<body>
<task name="simulation_init" tasktype="simulation_init">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="input_chunks" type="collection/file"/>
</outputPorts>
</task>
<parallelForEach name="pForEach01">
<inputPorts>
<loopElements>
<loopElement name="input_chunks" type="collection/file"/>
</loopElements>
<inputPort name="if_condition" type="boolean"/>
<inputPort name="pForIterations" type="integer"/>
</inputPorts>
<body>
<task name="case_init" tasktype="case_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<parallelFor name="pFor01">
<inputPorts>
<loopCounter name="loopCounter" from="0" to="" step="1"/>
<inputPort name="input" type="file"/>
<inputPort name="if_condition" type="boolean"/>
</inputPorts>
<body>
<task name="rams_makevfile" tasktype="rams_makevfile">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="rams_init" tasktype="rams_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="revu_compare" tasktype="revu_compare">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="raver" tasktype="raver">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<if name="if01">
<inputPorts>
<inputPort name="input" type="file"/>
<inputPort name="if_condition" type="boolean"/>
</inputPorts>
<condition>if_condition = true</condition>
<then>
<task name="rams_hist" tasktype="rams_hist">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="revu_dump" tasktype="revu_dump">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
</then>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
<links>
<link from="if01/input" to="rams_hist/input"/>
<link from="rams_hist/output" to="revu_dump/input"/>
<link from="revu_dump/output" to="if01/output"/>
<link from="if01/input" to="if01/output"/>
</links>
</if>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
</outputPorts>
<links>
<link from="pFor01/input" to="rams_makevfile/input"/>
<link from="rams_makevfile/output" to="rams_init/input"/>
<link from="rams_init/output" to="revu_compare/input"/>
<link from="revu_compare/output" to="raver/input"/>
<link from="raver/output" to="if01/input"/>
<link from="pFor01/if_condition" to="if01/if_condition"/>
<link from="if01/output" to="pFor01/output"/>
</links>
</parallelFor>
</body>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="pForEach01/input_chunks" to="case_init/input"/>
<link from="case_init/output" to="pFor01/input"/>
<link from="pForEach01/pForIterations" to="pFor01/loopCounter/to"/>
<link from="pForEach01/if_condition" to="pFor01/if_condition"/>
<link from="pFor01/output" to="pForEach01/output"/>
</links>
</parallelForEach>
</body>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="toplevel/input_file" to="simulation_init/input_file"/>
<link from="toplevel/chunk_count" to="simulation_init/chunk_count"/>
<link from="simulation_init/input_chunks" to="pForEach01/input_chunks"/>
<link from="toplevel/if_condition" to="pForEach01/if_condition"/>
<link from="toplevel/pForIterations" to="pForEach01/pForIterations"/>
<link from="pForEach01/output" to="toplevel/output"/>
</links>
<properties>
<property name="version" value="1.0.0"/>
<property name="author" value="matthias"/>
<property name="domain" value="Generic"/>
</properties>
</blockScope>
</IWIR>
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=case_init
entries=1
entry.0=case_init.code
+1
View File
@@ -0,0 +1 @@
#include <boost/program_options.hpp>
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_hist
entries=1
entry.0=rams_hist.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_init
entries=1
entry.0=rams_init.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_makevfile
entries=1
entry.0=rams_makevfile.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=raver
entries=1
entry.0=raver.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=revu_compare
entries=1
entry.0=revu_compare.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=revu_dump
entries=1
entry.0=revu_dump.code
@@ -0,0 +1,6 @@
for (long i = 0; i < sin->chunk_count.getValue(); ++i) {
sout->input_chunks.setEntryValue(i, "input_chunk");
}
sout->input_chunks.setFinalised(true);
@@ -0,0 +1,3 @@
name=simulation_init
entries=1
entry.0=simulation_init.code
+38
View File
@@ -0,0 +1,38 @@
std::string inputFile = "input.file";
long chunkCount = 10;
long pForIterations = 10;
bool ifCondition = true;
bool isHelp = false;
boost::program_options::options_description opts("MeteoAG Options");
opts.add_options()
("help", "Print help message.")
("inputchunks", boost::program_options::value<long>(), "Number of input chunks.")
("pforiterations", boost::program_options::value<long>(), "Number of pFor iterations.")
("ifcondition", boost::program_options::value<bool>(), "If condition.");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
std::cerr << opts << std::endl;
isHelp = true;
} else {
if (vm.count("inputchunks")) {
chunkCount = vm["inputchunks"].as<long>();
}
if (vm.count("pforiterations")) {
pForIterations = vm["pforiterations"].as<long>();
}
if (vm.count("ifcondition")) {
ifCondition = vm["ifcondition"].as<bool>();
}
std::cerr << "inputChunks = " << chunkCount << std::endl;
std::cerr << "pForIterations = " << pForIterations << std::endl;
std::cerr << "IfCondition = " << ifCondition << std::endl;
}
wfInput.input_file.setValue("input_file");
wfInput.chunk_count.setValue(chunkCount);
wfInput.pForIterations.setValue(pForIterations);
wfInput.if_condition.setValue(ifCondition);
View File
@@ -0,0 +1,13 @@
wfinput=meteoag/wfInput.code
wfoutput=meteoag/wfOutput.code
includes=meteoag/includes.code
atomicTask.0=meteoag/simulation_init.properties
atomicTask.1=meteoag/case_init.properties
atomicTask.2=meteoag/rams_makevfile.properties
atomicTask.3=meteoag/rams_init.properties
atomicTask.4=meteoag/revu_compare.properties
atomicTask.5=meteoag/raver.properties
atomicTask.6=meteoag/rams_hist.properties
atomicTask.7=meteoag/revu_dump.properties
+256
View File
@@ -0,0 +1,256 @@
<IWIR version="1.1" wfname="meteoAG" xmlns="http://shiwa-workflow.eu/IWIR">
<blockScope name="toplevel">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
<inputPort name="if_condition" type="boolean"/>
<inputPort name="pForIterations" type="integer"/>
</inputPorts>
<body>
<task name="simulation_init" tasktype="simulation_init">
<inputPorts>
<inputPort name="input_file" type="file"/>
<inputPort name="chunk_count" type="integer"/>
</inputPorts>
<outputPorts>
<outputPort name="input_chunks" type="collection/file"/>
</outputPorts>
</task>
<if name="if01">
<inputPorts>
<inputPort name="input_chunks" type="collection/file"/>
<inputPort name="pForIterations" type="integer"/>
<inputPort name="if_condition" type="boolean"/>
</inputPorts>
<condition>if_condition = true</condition>
<then>
<parallelForEach name="pForEach01_then">
<inputPorts>
<loopElements>
<loopElement name="input_chunks" type="collection/file"/>
</loopElements>
<inputPort name="pForIterations" type="integer"/>
</inputPorts>
<body>
<task name="case_init_then" tasktype="case_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<parallelFor name="pFor01_then">
<inputPorts>
<loopCounter name="loopCounter" from="0" to="" step="1"/>
<inputPort name="input" type="file"/>
</inputPorts>
<body>
<task name="rams_makevfile_then" tasktype="rams_makevfile">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="rams_init_then" tasktype="rams_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="revu_compare_then" tasktype="revu_compare">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="raver_then" tasktype="raver">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="rams_hist_then" tasktype="rams_hist">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="revu_dump_then" tasktype="revu_dump">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
</outputPorts>
<links>
<link from="pFor01_then/input" to="rams_makevfile_then/input"/>
<link from="rams_makevfile_then/output" to="rams_init_then/input"/>
<link from="rams_init_then/output" to="revu_compare_then/input"/>
<link from="revu_compare_then/output" to="raver_then/input"/>
<link from="raver_then/output" to="rams_hist_then/input"/>
<link from="rams_hist_then/output" to="revu_dump_then/input"/>
<link from="revu_dump_then/output" to="pFor01_then/output"/>
</links>
</parallelFor>
</body>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="pForEach01_then/input_chunks" to="case_init_then/input"/>
<link from="case_init_then/output" to="pFor01_then/input"/>
<link from="pForEach01_then/pForIterations" to="pFor01_then/loopCounter/to"/>
<link from="pFor01_then/output" to="pForEach01_then/output"/>
</links>
</parallelForEach>
</then>
<else>
<parallelForEach name="pForEach01_else">
<inputPorts>
<loopElements>
<loopElement name="input_chunks" type="collection/file"/>
</loopElements>
<inputPort name="pForIterations" type="integer"/>
</inputPorts>
<body>
<task name="case_init_else" tasktype="case_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<parallelFor name="pFor01_else">
<inputPorts>
<loopCounter name="loopCounter" from="0" to="" step="1"/>
<inputPort name="input" type="file"/>
</inputPorts>
<body>
<task name="rams_makevfile_else" tasktype="rams_makevfile">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="rams_init_else" tasktype="rams_init">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="revu_compare_else" tasktype="revu_compare">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
<task name="raver_else" tasktype="raver">
<inputPorts>
<inputPort name="input" type="file"/>
</inputPorts>
<outputPorts>
<outputPort name="output" type="file"/>
</outputPorts>
</task>
</body>
<outputPorts>
<outputPort name="output" type="collection/file"/>
</outputPorts>
<links>
<link from="pFor01_else/input" to="rams_makevfile_else/input"/>
<link from="rams_makevfile_else/output" to="rams_init_else/input"/>
<link from="rams_init_else/output" to="revu_compare_else/input"/>
<link from="revu_compare_else/output" to="raver_else/input"/>
<link from="raver_else/output" to="pFor01_else/output"/>
</links>
</parallelFor>
</body>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="pForEach01_else/input_chunks" to="case_init_else/input"/>
<link from="case_init_else/output" to="pFor01_else/input"/>
<link from="pForEach01_else/pForIterations" to="pFor01_else/loopCounter/to"/>
<link from="pFor01_else/output" to="pForEach01_else/output"/>
</links>
</parallelForEach>
</else>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="if01/input_chunks" to="pForEach01_then/input_chunks"/>
<link from="if01/pForIterations" to="pForEach01_then/pForIterations"/>
<link from="pForEach01_then/output" to="if01/output"/>
<link from="if01/input_chunks" to="pForEach01_else/input_chunks"/>
<link from="if01/pForIterations" to="pForEach01_else/pForIterations"/>
<link from="pForEach01_else/output" to="if01/output"/>
</links>
</if>
</body>
<outputPorts>
<outputPort name="output" type="collection/collection/file"/>
</outputPorts>
<links>
<link from="toplevel/input_file" to="simulation_init/input_file"/>
<link from="toplevel/chunk_count" to="simulation_init/chunk_count"/>
<link from="simulation_init/input_chunks" to="if01/input_chunks"/>
<link from="toplevel/if_condition" to="if01/if_condition"/>
<link from="toplevel/pForIterations" to="if01/pForIterations"/>
<link from="if01/output" to="toplevel/output"/>
</links>
<properties>
<property name="version" value="1.0.0"/>
<property name="author" value="matthias"/>
<property name="domain" value="Generic"/>
</properties>
</blockScope>
</IWIR>
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=case_init
entries=1
entry.0=case_init.code
+1
View File
@@ -0,0 +1 @@
#include <boost/program_options.hpp>
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_hist
entries=1
entry.0=rams_hist.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_init
entries=1
entry.0=rams_init.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_makevfile
entries=1
entry.0=rams_makevfile.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=raver
entries=1
entry.0=raver.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=revu_compare
entries=1
entry.0=revu_compare.code
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=revu_dump
entries=1
entry.0=revu_dump.code
@@ -0,0 +1,6 @@
for (long i = 0; i < sin->chunk_count.getValue(); ++i) {
sout->input_chunks.setEntryValue(i, "input_chunk");
}
sout->input_chunks.setFinalised(true);
@@ -0,0 +1,3 @@
name=simulation_init
entries=1
entry.0=simulation_init.code
+38
View File
@@ -0,0 +1,38 @@
std::string inputFile = "input.file";
long chunkCount = 10;
long pForIterations = 10;
bool ifCondition = true;
bool isHelp = false;
boost::program_options::options_description opts("MeteoAG Options");
opts.add_options()
("help", "Print help message.")
("inputchunks", boost::program_options::value<long>(), "Number of input chunks.")
("pforiterations", boost::program_options::value<long>(), "Number of pFor iterations.")
("ifcondition", boost::program_options::value<bool>(), "If condition.");
boost::program_options::variables_map vm;
auto parsed = boost::program_options::command_line_parser(argc, argv).options(opts).allow_unregistered().run();
boost::program_options::store(parsed, vm);
boost::program_options::notify(vm);
if (vm.count("help")) {
std::cerr << opts << std::endl;
isHelp = true;
} else {
if (vm.count("inputchunks")) {
chunkCount = vm["inputchunks"].as<long>();
}
if (vm.count("pforiterations")) {
pForIterations = vm["pforiterations"].as<long>();
}
if (vm.count("ifcondition")) {
ifCondition = vm["ifcondition"].as<bool>();
}
std::cerr << "inputChunks = " << chunkCount << std::endl;
std::cerr << "pForIterations = " << pForIterations << std::endl;
std::cerr << "IfCondition = " << ifCondition << std::endl;
}
wfInput.input_file.setValue("input_file");
wfInput.chunk_count.setValue(chunkCount);
wfInput.pForIterations.setValue(pForIterations);
wfInput.if_condition.setValue(ifCondition);
View File
@@ -0,0 +1,13 @@
wfinput=meteoag/wfInput.code
wfoutput=meteoag/wfOutput.code
includes=meteoag/includes.code
atomicTask.0=meteoag/simulation_init.properties
atomicTask.1=meteoag/case_init.properties
atomicTask.2=meteoag/rams_makevfile.properties
atomicTask.3=meteoag/rams_init.properties
atomicTask.4=meteoag/revu_compare.properties
atomicTask.5=meteoag/raver.properties
atomicTask.6=meteoag/rams_hist.properties
atomicTask.7=meteoag/revu_dump.properties
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=case_init
entries=1
entry.0=case_init.code
@@ -0,0 +1,3 @@
sout->pForEachIterations.setValue((sin->chunk_count.getValue()/10) - 1);
@@ -0,0 +1,4 @@
name=helper01
entries=1
entry.0=helper01.code
@@ -0,0 +1,12 @@
sout->input01.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10));
sout->input02.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 1));
sout->input03.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 2));
sout->input04.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 3));
sout->input05.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 4));
sout->input06.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 5));
sout->input07.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 6));
sout->input08.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 7));
sout->input09.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 8));
sout->input10.setValue(sin->input_chunks.getEntryValue(sin->counter.getValue() * 10 + 9));
@@ -0,0 +1,4 @@
name=helper02
entries=1
entry.0=helper02.code
@@ -0,0 +1,34 @@
long i = 0;
for ( auto& o : sin->output01.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output02.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output03.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output04.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output05.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output06.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output07.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output08.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output09.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
for ( auto& o : sin->output10.getValue()) {
sout->output.setEntryValue(i++, o.getValue());
}
sout->output.setFinalised(true);
@@ -0,0 +1,4 @@
name=helper03
entries=1
entry.0=helper03.code
+1
View File
@@ -0,0 +1 @@
#include <boost/program_options.hpp>
@@ -0,0 +1,3 @@
sout->output.setValue(sin->input);
@@ -0,0 +1,3 @@
name=rams_hist
entries=1
entry.0=rams_hist.code

Some files were not shown because too many files have changed in this diff Show More