Skip to content

Commit

Permalink
randomize costs in CI tests
Browse files Browse the repository at this point in the history
  • Loading branch information
leekillough committed Sep 6, 2024
1 parent 1cd0c49 commit 8029b4b
Show file tree
Hide file tree
Showing 12 changed files with 42 additions and 21 deletions.
9 changes: 6 additions & 3 deletions include/RevExt.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,13 @@ struct RevExt {
private:
// RevExt: Randomize instruction costs if randomizeCosts == true
void RandomizeCosts( std::vector<RevInstEntry>& table ) const {
if( feature->GetRandomizeCosts() )
for( auto& entry : table )
if( entry.cost == 1 )
if( feature->GetRandomizeCosts() ) {
for( auto& entry : table ) {
if( entry.cost == 1 ) {
entry.cost = RevRand( 1, MAX_COST );
}
}
}
}

std::string_view const name; ///< RevExt: extension name
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc11-sst13.1.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc11-sst14.0.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc11.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc13-sst13.1.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc13-sst14.0.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-gcc13.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-llvm12-sst13.1.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-llvm12-sst14.0.0.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
2 changes: 1 addition & 1 deletion scripts/slurm/build-llvm12.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ cd build
rm -Rf ./*

#-- Stage 3: initiate the build
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
cmake -DBUILD_ASM_TESTING=ON -DCMAKE_BUILD_TYPE=Debug -DRANDOMIZE_COSTS -DRVCC=${RVCC} ../ >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make clean >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make uninstall >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
make -j >> ../rev.jenkins.${SLURM_JOB_ID}.out 2>&1
Expand Down
35 changes: 26 additions & 9 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,21 @@
if(NOT DEFINED TEST_LEVEL)
set(TEST_LEVEL "$ENV{TEST_LEVEL}")
endif()

if(NOT TEST_LEVEL OR TEST_LEVEL GREATER 3 OR TEST_LEVEL LESS 1)
set(TEST_LEVEL 3)
endif()

message("TEST_LEVEL=${TEST_LEVEL}")

if(NOT DEFINED RANDOMIZE_COSTS)
set(RANDOMIZE_COSTS "$ENV{RANDOMIZE_COSTS}")
endif()
if(NOT RANDOMIZE_COSTS)
set(RANDOMIZE_COSTS "")
else()
set(RANDOMIZE_COSTS --randomizeCosts)
endif()
message("RANDOMIZE_COSTS=\"${RANDOMIZE_COSTS}\"")

set(RISCV_ENV "$ENV{RISCV}")
if(RISCV_ENV)
message(STATUS "RISCV environment set to ${RISCV_ENV}")
Expand Down Expand Up @@ -65,8 +73,8 @@ set (passRegex "Simulation is complete")
#------- TESTS ---------------
message(STATUS "CTest Setup")

# Macro to build and configure tests in rev based on the labels the test was specified with
macro(add_rev_test test_name test_dir timeout labels)
# Function to build and configure tests in rev based on the labels the test was specified with
function(add_rev_test test_name test_dir timeout labels)
string(TOLOWER ${test_dir} test_dir_lower)
string(TOLOWER ${test_name} test_name_lower)

Expand Down Expand Up @@ -135,13 +143,22 @@ macro(add_rev_test test_name test_dir timeout labels)
# set(startSymbol "\"[0:_start]\"")
endif()

string(FIND "${labels}" "cost1" cost1_index)
if(NOT ${cost1_index} EQUAL -1)
set(RANDOMIZE_COSTS "")
endif()
# increase timeout if costs randomized
if(NOT RANDOMIZE_COSTS STREQUAL "")
math(EXPR timeout "${timeout} * 3 /2")
endif()

if(NOT optional_script)
foreach(numHarts IN LISTS numHartsList)
foreach(numCores IN LISTS numCoresList)

# Define revmem target with the new naming convention
add_custom_target(run_${test_name_lower}_revmem_${numHarts}_harts_${numCores}_cores
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/${test_name_lower} && sst --add-lib-path=${CMAKE_SOURCE_DIR}/build/src/ ${CMAKE_SOURCE_DIR}/test/rev-model-options-config.py -- --program="${test_name_lower}.exe" --numHarts=${numHarts} --numCores=${numCores} --machine "${machine_args}" --startSymbol "${startSymbol}"
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/${test_name_lower} && sst --add-lib-path=${CMAKE_SOURCE_DIR}/build/src/ ${CMAKE_SOURCE_DIR}/test/rev-model-options-config.py -- --program="${test_name_lower}.exe" --numHarts=${numHarts} --numCores=${numCores} --machine "${machine_args}" --startSymbol "${startSymbol}" ${RANDOMIZE_COSTS}
DEPENDS build_${test_name_lower}
COMMENT "Running ${test_name_lower} test with revmem, numHarts=${numHarts}, numCores=${numCores}"
)
Expand All @@ -154,7 +171,7 @@ macro(add_rev_test test_name test_dir timeout labels)
# If 'memh' label found, add a memHierarchy test
if(add_memh_test)
add_custom_target(run_${test_name_lower}_memh_${numHarts}_harts_${numCores}_cores
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/${test_name_lower} && sst --add-lib-path=${CMAKE_SOURCE_DIR}/build/src/ ${CMAKE_SOURCE_DIR}/test/rev-model-options-config.py -- --program="${test_name_lower}.exe" --numHarts=${numHarts} --numCores=${numCores} --machine "${machine_args}" --enableMemH=1 --startSymbol "${startSymbol}"
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/${test_name_lower} && sst --add-lib-path=${CMAKE_SOURCE_DIR}/build/src/ ${CMAKE_SOURCE_DIR}/test/rev-model-options-config.py -- --program="${test_name_lower}.exe" --numHarts=${numHarts} --numCores=${numCores} --machine "${machine_args}" --enableMemH=1 --startSymbol "${startSymbol}" ${RANDOMIZE_COSTS}
DEPENDS build_${test_name_lower}
COMMENT "Running ${test_name_lower} test with memHierarchy enabled, numHarts=${numHarts}, numCores=${numCores}"
)
Expand Down Expand Up @@ -207,7 +224,7 @@ macro(add_rev_test test_name test_dir timeout labels)
set_tests_properties(${test_name_lower}_script PROPERTIES DISABLED TRUE)
endif()
endif()
endmacro()
endfunction()

# Not all toolchains have support RV32, so we test and skip RV32 tests with a warning
execute_process(COMMAND ${RVCC} -march=rv32i -mabi=ilp32 -o /dev/null ex1.c WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/ex1 ERROR_VARIABLE RV32_Missing)
Expand Down Expand Up @@ -252,8 +269,8 @@ add_rev_test(BACKINGSTORE backingstore 100 "test_level=2;rv64" SCRIPT "run_backi
add_rev_test(MEM_DUMP mem_dump 10 "rv64" SCRIPT "run_mem_dump.sh")
add_rev_test(LWSP lwsp 30 "test_level=2;memh;rv64")
add_rev_test(CSR csr 30 "rv64")
add_rev_test(RDCYCLE rdcycle 5 "test_level=2;rv64")
add_rev_test(RDTIME rdtime 5 "test_level=2;rv64")
add_rev_test(RDCYCLE rdcycle 5 "test_level=2;rv64;cost1")
add_rev_test(RDTIME rdtime 5 "test_level=2;rv64;cost1")
add_rev_test(RDINSTRET rdinstret 5 "test_level=2;memh;rv64")
add_rev_test(Zfa zfa 30 "rv64" SCRIPT "run_zfa_tests.sh")

Expand Down
1 change: 1 addition & 0 deletions test/rev-model-options-config.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
"startAddr" : "[0:0x00000000]",
"startSymbol" : args.startSymbol,
"enable_memH" : args.enableMemH,
"randomizeCosts": args.randomizeCosts,
"args": args.args,
"splash" : 1
})
Expand Down

0 comments on commit 8029b4b

Please sign in to comment.