Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
8d42ae8
Adapt to new SDFG cutouts
phschaad Mar 11, 2023
4335ac3
initial import of harness generator
tim0s Mar 24, 2023
b7d6807
Bugfixes
phschaad Mar 24, 2023
c30d81c
Merge remote-tracking branch 'origin/fuzzer_harness' into new_dace
phschaad Mar 24, 2023
140ef73
add writeback and complete usage example
tim0s Mar 24, 2023
c4d422e
Merge remote-tracking branch 'origin/fuzzer_harness' into new_dace
phschaad Mar 24, 2023
e9164f2
format
phschaad Mar 24, 2023
744fb2a
reallocate arrays if their size does not match
tim0s Mar 27, 2023
e92cbe0
some fixes to make harness more stable
tim0s Mar 27, 2023
e1b1f75
add suport for self-initializing args to minimize input file size
tim0s Mar 28, 2023
60cde8f
Add init files
phschaad Mar 28, 2023
f74c3da
Merge branch 'fuzzer_harness' into new_dace
phschaad Mar 28, 2023
77c9f28
Add dumping of success cases for AFL or other fuzzers
phschaad Mar 29, 2023
8eedca1
add missing datatype (scalar double), add runner to fuzz subdirs
tim0s Mar 29, 2023
2a523b2
Add NPBench graphs
phschaad Mar 29, 2023
882c417
Merge remote-tracking branch 'origin/fuzzer_harness' into new_dace
phschaad Mar 29, 2023
3b5c9ba
Sync
phschaad Mar 29, 2023
df29ceb
Update gitignore
phschaad Mar 29, 2023
ec77a0e
Fix catching failures
phschaad Mar 30, 2023
362ae8e
Print stack trace for exception failures
phschaad Mar 30, 2023
791d2cf
fuzz arbitrarily nested dirs, fix squaring python vs c expr
tim0s Mar 30, 2023
6b6a537
sync
Mar 30, 2023
53ba9e3
Add depickling
phschaad Mar 30, 2023
e9681e0
Dump exceptions
phschaad Mar 30, 2023
7f0ff9e
Ignore exceptions caused by harness generation
phschaad Mar 30, 2023
845dbad
add squaring fix, uncovered by correlation
tim0s Mar 30, 2023
9516f4b
Add data size constraints
phschaad Mar 30, 2023
ea5c8ab
Fix symbol constraints
phschaad Mar 30, 2023
9c43b1b
Robustness
phschaad Mar 30, 2023
33fcc06
Fix
phschaad Mar 30, 2023
00116f3
Error handling
phschaad Mar 30, 2023
63a6173
Remove the need for data instrumentation
phschaad Mar 31, 2023
29e452e
Fix prefix
phschaad Mar 31, 2023
d80e22b
allow cuda code to be fuzzed
tim0s Mar 31, 2023
40871fb
add some dtypes, fix bug with argumentless (useless) sdfg
tim0s Mar 31, 2023
dc04638
support complex128
tim0s Mar 31, 2023
e979d6c
Bugfixes
phschaad Mar 31, 2023
a4c0c39
Update
phschaad Apr 1, 2023
be61aef
Silence warning
phschaad Apr 1, 2023
c48cea2
Fix typo
phschaad Apr 1, 2023
ce41c2c
Merge remote-tracking branch 'origin/fuzzer_harness' into new_dace
phschaad Apr 1, 2023
39e47df
refactor type conversion code
tim0s Apr 1, 2023
2f361b3
Add timings
phschaad Apr 1, 2023
fcf2f88
Merge branch 'new_dace' of github.com:phschaad/fuzzyflow into new_dace
phschaad Apr 1, 2023
273ec4a
validate symbols before arrays so we do not crash on bogus allocs
tim0s Apr 2, 2023
7cf0c48
allow using multicore fuzzing
tim0s Apr 2, 2023
ee2a30e
get rid of slow repro printout during fuzzing
tim0s Apr 2, 2023
80a52f7
Bugfixes
phschaad Apr 2, 2023
266901a
Merge remote-tracking branch 'origin/fuzzer_harness' into new_dace
phschaad Apr 2, 2023
64548c7
Re-added data instrumentation
phschaad Apr 2, 2023
1e95df5
More bugfixes
phschaad Apr 2, 2023
c778dab
Sync
phschaad Apr 2, 2023
0faec18
Add free symbols only found in transformed cutout
phschaad Apr 3, 2023
76c2e15
Add more case studies
phschaad Apr 3, 2023
8bd0317
Cleanup
phschaad Apr 4, 2023
c75cdb7
Cleanup
phschaad Apr 13, 2023
d42b5e8
refactor
phschaad Apr 14, 2023
ac95684
Improve cutout extractor
phschaad Apr 14, 2023
5c832d4
Provide better cutout extractor
phschaad Apr 17, 2023
4d0cc66
Bugfixes
phschaad Apr 18, 2023
c4eb74e
Improve status reportin
phschaad Jun 20, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,13 @@ _dacegraphs/
!.vscode/fuzzyflow.code-workspace

tests/**/dbg/
tests/cloudsc_sc
tests/tmp
tests/icse23_eval

scratchpad/

*.progressfile

.testdata*/
buildcache/
.buildcache/

*.dat
1 change: 1 addition & 0 deletions .vscode/fuzzyflow.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
}
],
"settings": {
"dace.general.autoOpenInstrumentationReports": "Never"
}
}
23 changes: 15 additions & 8 deletions base_test.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import os
from typing import Dict, List
from typing import Dict, List, Optional
from alive_progress import alive_bar

import dace
from dace.sdfg import SDFG
from dace.transformation import dataflow, interstate, subgraph

import fuzzyflow as ff


def _test_from_basedir(datadir: str, category_name: str):
def _test_from_basedir(datadir: str, category_name: str,
out_dir: Optional[str] = None,
success_dir: Optional[str] = None,):
verify_dict = dict()
testdirs = os.listdir(datadir)
bartitle = f'Testing {category_name}'
Expand Down Expand Up @@ -54,15 +54,18 @@ def _test_from_basedir(datadir: str, category_name: str):
)

verifier = ff.TransformationVerifier(
xform, sdfg, ff.CutoutStrategy.SIMPLE
xform, sdfg, ff.SamplingStrategy.SIMPLE_UNIFORM,
output_dir=out_dir,
success_dir=success_dir
)
valid = valid and verifier.verify(
nvalid, _ = verifier.verify(
n_samples=100,
debug_save_path=os.path.join(
dbg_save_dir, file.split('.')[0]
),
enforce_finiteness=True
)
valid = valid and nvalid
if not valid:
offending_file = file
break
Expand Down Expand Up @@ -90,12 +93,16 @@ def _test_from_basedir(datadir: str, category_name: str):

def test_multistate():
datadir = './tests/data/multistate'
_test_from_basedir(datadir, 'multistate transformations')
fdir = './.test_results/failures/multistate/'
sdir = './.test_results/successes/multistate/'
_test_from_basedir(datadir, 'multistate transformations', fdir, sdir)


def test_singlestate():
datadir = './tests/data/singlestate'
_test_from_basedir(datadir, 'singlestate transformations')
fdir = './.test_results/failures/singlestate/'
sdir = './.test_results/successes/singlestate/'
_test_from_basedir(datadir, 'singlestate transformations', fdir, sdir)

def main():
test_singlestate()
Expand Down
73 changes: 73 additions & 0 deletions cloudsc_test_all.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import os
import re
from dace.sdfg import SDFG
from dace.transformation.optimizer import SDFGOptimizer
import traceback

import fuzzyflow as ff


IGNORE_LIST = [
'ElementWise*',
'FPGA*',
'MPI*',
'ReductionNOperation',
'OuterProductOperation',
'CopyToDevice',
'LoopDetection',
'StreamingComposition',
'GPUTransformSDFG',
'NestSDFG'
]

prefix = 'run_1'


last_pattern = None
last_graph = None
exception_nr = 0

def main():
ignore_regex = re.compile(
'^' + '$|^'.join(IGNORE_LIST).replace('*', '\w*') + '$'
)

sdfg = SDFG.from_file(f'tests/case_studies/cloudsc/gpu_transform_sdfg_failure/cloudscexp2_parallel.sdfg')
t_sdfg = sdfg.sdfg_list[1]
optimizer = SDFGOptimizer(t_sdfg)
pattern_matches = list(optimizer.get_pattern_matches())
i = 0
print(len(pattern_matches), 'pattern matches found.')
for pattern in pattern_matches:
if ignore_regex.search(pattern.__class__.__name__):
continue

print('Verifying', pattern.__class__.__name__)

out_dir = os.path.join(
'.testdata_case_studies', 'cloudsc_blanket_testing', prefix,
'fails',
pattern.__class__.__name__ + '_' + str(i)
)
success_dir = os.path.join(
'.testdata_case_studies', 'cloudsc_blanket_testing', prefix,
'successes',
pattern.__class__.__name__ + '_' + str(i)
)
verifier = ff.TransformationVerifier(
pattern, t_sdfg, output_dir=out_dir, success_dir=success_dir,
build_dir_base_path='/mnt/ramdisk'
)
valid, dt = verifier.verify(
n_samples=100, status=ff.StatusLevel.BAR_ONLY,
minimize_input=False, use_alibi_nodes=False,
maximum_data_dim=64
)
print('Valid:', valid, 'Time:', dt)
if not valid:
print('Instance invalid!')

i += 1

if __name__ == '__main__':
main()
6 changes: 3 additions & 3 deletions fuzzyflow/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# This file is part of FuzzyFlow, which is released under the BSD 3-Clause
# License. For details, see the LICENSE file.

from .verification.verifier import TransformationVerifier
from .cutout import CutoutStrategy
from .verification.verifier import TransformationVerifier, StatusLevel
from .verification.sampling import SamplingStrategy
from .util import load_transformation_from_file
from .util import load_transformation_from_file, data_report_get_latest_version
from .harness_generator import sdfg2cpp
Loading