-
Notifications
You must be signed in to change notification settings - Fork 118
Benchmarking with ASV #456
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
163 commits
Select commit
Hold shift + click to select a range
0e1303a
reindex vs merge
jpn-- 99d6f70
start work on benchmarking
jpn-- 1ea2c39
as a suite
jpn-- a96c087
timing and setup
jpn-- 555967a
streamlining
jpn-- daaff62
feat: add optional sha256 to example manifest
jpn-- 0adc2a2
download files in setup_cache
jpn-- 0577363
finish suite
jpn-- 341521f
ex press
jpn-- 2e78e8e
Merge branch 'chunkless' into performance1
jpn-- 13a9eed
component logging
jpn-- 522d517
more stable logging
jpn-- 1d8ec5d
no locutor for school location in benchmarking
jpn-- 0a3db94
read-only pipeline
jpn-- 8d75fc2
don't write to checkpoints when reading them
jpn-- 62e97ac
don't rollover for every timing
jpn-- 0d497e9
log exceptions in benchmarks
jpn-- ca11aeb
table cleaning for mand tours freq
jpn-- f1b2d32
clean sweep all tables
jpn-- 093c663
benchmark cli command
jpn-- 5aa7110
benchmark test
jpn-- 98a0642
better cli wrapper for asv
jpn-- fad1572
locally manage json
jpn-- 1ba82e6
better workspace
jpn-- 1c19902
benchmarks are in the package
jpn-- 48f4340
local dir
jpn-- 52dd0e7
ASIM_ASV_WORKSPACE
jpn-- a060c71
fix dir for download
jpn-- fa4600d
fix models dir
jpn-- 79f6723
single thread flags
jpn-- 1754103
allow asv to be missing
jpn-- b8ce055
fix args
jpn-- 881b56c
change suite to module
jpn-- 2c5fe27
no self
jpn-- c55e14a
partial
jpn-- 2b3e2e6
discoverable
jpn-- 23c7496
remote intermediate funcs
jpn-- e1a423c
call the partial
jpn-- f05e1cf
more parts
jpn-- 1bd9a05
reraise
jpn-- 685c2a8
refactor
jpn-- 2644296
names
jpn-- 9788123
to tour mode
jpn-- 59f562a
tinker names
jpn-- f1bb837
just pretty
jpn-- b0c7dba
generic cleaning
jpn-- f9ca9c2
Merge branch 'condaforge-dev' into performance1
jpn-- 5df7b42
define mtc1 as 20K households
jpn-- 43723e1
ready for win
jpn-- c91f17c
pb branches
jpn-- 50c24ba
Merge branch 'faster-maz-maz' into performance2
jpn-- d059d3b
Merge branch 'speeding-up-chunking' of https://github.com/ActivitySim…
jpn-- 20ec9f1
more aggressive chunkless
jpn-- e4e5657
asv commit logging
jpn-- 27bab07
Merge branch 'master' into performance2
jpn-- d90de76
Merge branch 'checksum-downloads' into performance2
jpn-- 675f588
asv sandag1
jpn-- 761319f
setup_cache as func
jpn-- 1a7ba61
fix sandag1 benchmarks
jpn-- 4e7d041
allow other configs dirs in prerun
jpn-- 4bacdce
data and output definable
jpn-- e677f09
checksums were correct
jpn-- 4e19b84
dirs in component setup
jpn-- e7eaaed
only use 20K hh for sandag tests
jpn-- 6484ebd
documentation updates
jpn-- 1c13c61
sandag2
jpn-- 91cc417
submitting benchmarks
jpn-- ff0345c
fix sandag2 benchmarks
jpn-- dae575b
note about escapes
jpn-- b7fa769
pycodestyle
jpn-- 579917e
sandag3
jpn-- 1db6e1c
extra cli run args
jpn-- cbe00f8
extra logging
jpn-- 6c52cd4
performanceTest
jpn-- db11669
elapsed time logging
jpn-- 064942e
elapsed time logging
jpn-- 52887e6
use cached accessibility
jpn-- b7beffa
settings remap
jpn-- 93db698
Merge commit '6ba7e8ff386c95e3bf1b05864cc42461f1e953aa' into performa…
jpn-- 47ed335
print line
jpn-- 4359db0
profiling
jpn-- 4708658
fix branch names
jpn-- d289734
use smaller sandag 2-zone
jpn-- 37498ed
mp complete
jpn-- 3d6a5b5
profile inspector
jpn-- f058751
sandag2 mp complete
jpn-- 9f91840
Merge commit 'fd077d644fdb41200031f2860cfc0d60e2b90574' into performa…
jpn-- 3b297aa
pipeline hash for benchmarking
jpn-- 3a1331c
absolute import
jpn-- b515c02
manifest points to a place
jpn-- c687cc0
allow remote manifest files to be gzipped, then expanded after download.
jpn-- 4e63ded
harmonize sandag3
jpn-- c6b336a
sandag1
jpn-- 878e100
commit token
jpn-- 55b9980
extra logging, stable option for prerun
jpn-- 9cb9860
remove pipeline hash
jpn-- e41084d
sandag1e
jpn-- eb08c05
mostly templated sandag
jpn-- fe66db5
cleanup
jpn-- f9ec119
sandag3f
jpn-- 67a18d5
use full population in data for MP complete test
jpn-- cf722a8
benchmark latest
jpn-- 4949d90
benchmarking configs
jpn-- f352207
allow missing models
jpn-- 0590bbc
sandag2f
jpn-- d937ecc
batch
jpn-- 04129e0
update mp_complete name
jpn-- 3637823
rename to fuller names
jpn-- 4efd4ab
skip a few
jpn-- 350aeb4
farm out setup cache
jpn-- 403ec3b
template in componentwise
jpn-- 5a536ae
normal logger
jpn-- 932ee91
cwd error
jpn-- 2169c7a
fix dirs
jpn-- a00741c
template mp complete
jpn-- 7216304
template complete does not work
jpn-- bd41fc8
one ping only
jpn-- 720d03e
fix sandag 2e
jpn-- 2dfd76a
blacken
jpn-- 9f1e0e4
cwise template blackened
jpn-- 9d92158
remove cwise template
jpn-- 7c55807
fix mtc1full benchmark
jpn-- 8dc1924
clean old benchmark files
jpn-- b0e3447
hook to fix paths in benchmark output
jpn-- 241ddb6
some docs
jpn-- 0384d2c
documentation
jpn-- e936ec6
writing new benchmarks doc
jpn-- dac52e6
explicit benchmark versioning
jpn-- 9be2832
use std name
jpn-- cbc6575
consistent single-thread benchmark size
jpn-- d4fe36a
tracking for mp benchmarks
jpn-- d419e06
fix log file path
jpn-- 418c479
fix track read
jpn-- 3b4b80f
clean up
jpn-- 18128f2
minimally functional multithread benchmark
jpn-- 7c3053d
todo note for MP bench
jpn-- 6d63e7a
note about MP benchmarks
jpn-- bf64828
pycodestyle
jpn-- 5ec18ed
remove config editing
jpn-- 8bddc97
strip ruamel, not needed
jpn-- a01fcd1
fix to use dynamic configs dir
jpn-- b0e8495
Merge branch 'develop' of https://github.com/ActivitySim/activitysim …
jpn-- d1e73b6
use different branch
jpn-- 7ce54aa
Merge commit 'd3ee01edaf17b093c14e559f45a029eb47c2ee5d' into performa…
jpn-- e3e4e33
benchmarking docs
jpn-- 91f3f3c
point to final asim-benchmarks
jpn-- 66210f9
Merge commit '3df695bd2bf921aa46d296a09889b68087b8c911' into performa…
jpn-- 24c7db9
doc formatting cleanup
jpn-- dbee4cd
asv continuous
jpn-- 5142bd7
include benchmarking in docs table of contents
jpn-- d6afb46
add doc for benchmark batch
jpn-- 6efb433
dynamically get current branch for asv
jpn-- e65710c
some high level information on what Benchmarking does
jpn-- 5683051
need to sync to publish
jpn-- 2f580b8
branch arg
jpn-- d5eb981
add docs
jpn-- 4a93836
Merge commit '74569ceae1f0f878de75ea328a0a0115abddeb97' into performa…
jpn-- fa6ecc6
constrain numpy
jpn-- 8ef72ce
require xarray and sharrow for larch testing
jpn-- 1a93cd3
add docstring for template_setup_cache
jpn-- b3d1d61
Merge branch 'develop' into performance1
jpn-- 4779573
Update test_larch_estimation.py
jpn-- ec98fc3
pycodestyle
jpn-- File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| from . import componentwise |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,171 @@ | ||
| { | ||
| // The version of the config file format. Do not change, unless | ||
| // you know what you are doing. | ||
| "version": 1, | ||
|
|
||
| // The name of the project being benchmarked | ||
| "project": "activitysim", | ||
|
|
||
| // The project's homepage | ||
| "project_url": "https://activitysim.github.io/", | ||
|
|
||
| // The URL or local path of the source code repository for the | ||
| // project being benchmarked | ||
| "repo": ".", | ||
|
|
||
| // The Python project's subdirectory in your repo. If missing or | ||
| // the empty string, the project is assumed to be located at the root | ||
| // of the repository. | ||
| // "repo_subdir": "", | ||
|
|
||
| // Customizable commands for building, installing, and | ||
| // uninstalling the project. See asv.conf.json documentation. | ||
| // | ||
| // "install_command": ["in-dir={env_dir} python -mpip install {wheel_file}"], | ||
| // "uninstall_command": ["return-code=any python -mpip uninstall -y {project}"], | ||
| // "build_command": [ | ||
| // "python setup.py build", | ||
| // "PIP_NO_BUILD_ISOLATION=false python -mpip wheel --no-deps --no-index -w {build_cache_dir} {build_dir}" | ||
| // ], | ||
|
|
||
| // List of branches to benchmark. If not provided, defaults to "master" | ||
| // (for git) or "default" (for mercurial). | ||
| // "branches": ["master"], // for git | ||
| // "branches": ["default"], // for mercurial | ||
|
|
||
| // The DVCS being used. If not set, it will be automatically | ||
| // determined from "repo" by looking at the protocol in the URL | ||
| // (if remote), or by looking for special directories, such as | ||
| // ".git" (if local). | ||
| // "dvcs": "git", | ||
|
|
||
| // The tool to use to create environments. May be "conda", | ||
| // "virtualenv" or other value depending on the plugins in use. | ||
| // If missing or the empty string, the tool will be automatically | ||
| // determined by looking for tools on the PATH environment | ||
| // variable. | ||
| "environment_type": "conda", | ||
|
|
||
| // timeout in seconds for installing any dependencies in environment | ||
| // defaults to 10 min | ||
| //"install_timeout": 600, | ||
|
|
||
| // the base URL to show a commit for the project. | ||
| "show_commit_url": "http://github.com/ActivitySim/activitysim/commit/", | ||
|
|
||
| // The Pythons you'd like to test against. If not provided, defaults | ||
| // to the current version of Python used to run `asv`. | ||
| // "pythons": ["2.7", "3.6"], | ||
|
|
||
| // The list of conda channel names to be searched for benchmark | ||
| // dependency packages in the specified order | ||
| "conda_channels": ["conda-forge"], | ||
|
|
||
| // The matrix of dependencies to test. Each key is the name of a | ||
| // package (in PyPI) and the values are version numbers. An empty | ||
| // list or empty string indicates to just test against the default | ||
| // (latest) version. null indicates that the package is to not be | ||
| // installed. If the package to be tested is only available from | ||
| // PyPi, and the 'environment_type' is conda, then you can preface | ||
| // the package name by 'pip+', and the package will be installed via | ||
| // pip (with all the conda available packages installed first, | ||
| // followed by the pip installed packages). | ||
| // | ||
| "matrix": { | ||
| "pyarrow": [], | ||
| "numpy": [], | ||
| "openmatrix": [], | ||
| "pandas": ["1.2"], | ||
| "pyyaml": [], | ||
| "pytables": [], | ||
| "toolz": [], | ||
| "orca": [], | ||
| "psutil": [], | ||
| "requests": [], | ||
| "numba": [], | ||
| "coverage": [], | ||
| "pytest": [], | ||
| "cytoolz": [] | ||
| }, | ||
|
|
||
| // Combinations of libraries/python versions can be excluded/included | ||
| // from the set to test. Each entry is a dictionary containing additional | ||
| // key-value pairs to include/exclude. | ||
| // | ||
| // An exclude entry excludes entries where all values match. The | ||
| // values are regexps that should match the whole string. | ||
| // | ||
| // An include entry adds an environment. Only the packages listed | ||
| // are installed. The 'python' key is required. The exclude rules | ||
| // do not apply to includes. | ||
| // | ||
| // In addition to package names, the following keys are available: | ||
| // | ||
| // - python | ||
| // Python version, as in the *pythons* variable above. | ||
| // - environment_type | ||
| // Environment type, as above. | ||
| // - sys_platform | ||
| // Platform, as in sys.platform. Possible values for the common | ||
| // cases: 'linux2', 'win32', 'cygwin', 'darwin'. | ||
| // | ||
| // "exclude": [ | ||
| // {"python": "3.2", "sys_platform": "win32"}, // skip py3.2 on windows | ||
| // {"environment_type": "conda", "six": null}, // don't run without six on conda | ||
| // ], | ||
| // | ||
| // "include": [ | ||
| // // additional env for python2.7 | ||
| // {"python": "2.7", "numpy": "1.8"}, | ||
| // // additional env if run on windows+conda | ||
| // {"platform": "win32", "environment_type": "conda", "python": "2.7", "libpython": ""}, | ||
| // ], | ||
|
|
||
| // The directory (relative to the current directory) that benchmarks are | ||
| // stored in. If not provided, defaults to "benchmarks" | ||
| // "benchmark_dir": "benchmarks", | ||
|
|
||
| // The directory (relative to the current directory) to cache the Python | ||
| // environments in. If not provided, defaults to "env" | ||
| "env_dir": "../activitysim-asv/env", | ||
|
|
||
| // The directory (relative to the current directory) that raw benchmark | ||
| // results are stored in. If not provided, defaults to "results". | ||
| "results_dir": "../activitysim-asv/results", | ||
|
|
||
| // The directory (relative to the current directory) that the html tree | ||
| // should be written to. If not provided, defaults to "html". | ||
| "html_dir": "../activitysim-asv/html", | ||
|
|
||
| // The number of characters to retain in the commit hashes. | ||
| // "hash_length": 8, | ||
|
|
||
| // `asv` will cache results of the recent builds in each | ||
| // environment, making them faster to install next time. This is | ||
| // the number of builds to keep, per environment. | ||
| // "build_cache_size": 2, | ||
|
|
||
| // The commits after which the regression search in `asv publish` | ||
| // should start looking for regressions. Dictionary whose keys are | ||
| // regexps matching to benchmark names, and values corresponding to | ||
| // the commit (exclusive) after which to start looking for | ||
| // regressions. The default is to start from the first commit | ||
| // with results. If the commit is `null`, regression detection is | ||
| // skipped for the matching benchmark. | ||
| // | ||
| // "regressions_first_commits": { | ||
| // "some_benchmark": "352cdf", // Consider regressions only after this commit | ||
| // "another_benchmark": null, // Skip regression detection altogether | ||
| // }, | ||
|
|
||
| // The thresholds for relative change in results, after which `asv | ||
| // publish` starts reporting regressions. Dictionary of the same | ||
| // form as in ``regressions_first_commits``, with values | ||
| // indicating the thresholds. If multiple entries match, the | ||
| // maximum is taken. If no entry matches, the default is 5%. | ||
| // | ||
| // "regressions_thresholds": { | ||
| // "some_benchmark": 0.01, // Threshold of 1% | ||
| // "another_benchmark": 0.5, // Threshold of 50% | ||
| // }, | ||
| } |
Empty file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| from activitysim.benchmarking.componentwise import ( | ||
| template_component_timings, | ||
| template_setup_cache, | ||
| ) | ||
|
|
||
| EXAMPLE_NAME = "example_mtc_full" | ||
| CONFIGS_DIRS = ("configs",) | ||
| DYNAMIC_CONFIG_DIR = "bench_configs" | ||
| DATA_DIR = "data" | ||
| OUTPUT_DIR = "output" | ||
| COMPONENT_NAMES = [ | ||
| # "compute_accessibility", | ||
| "school_location", | ||
| "workplace_location", | ||
| "auto_ownership_simulate", | ||
| "free_parking", | ||
| "cdap_simulate", | ||
| "mandatory_tour_frequency", | ||
| "mandatory_tour_scheduling", | ||
| "joint_tour_frequency", | ||
| "joint_tour_composition", | ||
| "joint_tour_participation", | ||
| "joint_tour_destination", | ||
| "joint_tour_scheduling", | ||
| "non_mandatory_tour_frequency", | ||
| "non_mandatory_tour_destination", | ||
| "non_mandatory_tour_scheduling", | ||
| "tour_mode_choice_simulate", | ||
| "atwork_subtour_frequency", | ||
| "atwork_subtour_destination", | ||
| "atwork_subtour_scheduling", | ||
| "atwork_subtour_mode_choice", | ||
| "stop_frequency", | ||
| "trip_purpose", | ||
| "trip_destination", | ||
| "trip_purpose_and_destination", | ||
| "trip_scheduling", | ||
| "trip_mode_choice", | ||
| # "write_data_dictionary", | ||
| # "track_skim_usage", | ||
| "write_trip_matrices", | ||
| # "write_tables", | ||
| ] | ||
| BENCHMARK_SETTINGS = { | ||
| "households_sample_size": 48_769, | ||
| } | ||
| SKIM_CACHE = False | ||
| PRELOAD_INJECTABLES = ("skim_dict",) | ||
| REPEAT = 1 | ||
| NUMBER = 1 | ||
| TIMEOUT = 36000.0 # ten hours | ||
| VERSION = "1" | ||
|
|
||
|
|
||
| def setup_cache(): | ||
| template_setup_cache( | ||
| EXAMPLE_NAME, | ||
| COMPONENT_NAMES, | ||
| BENCHMARK_SETTINGS, | ||
| dict( | ||
| read_skim_cache=SKIM_CACHE, | ||
| write_skim_cache=SKIM_CACHE, | ||
| ), | ||
| CONFIGS_DIRS, | ||
| DATA_DIR, | ||
| OUTPUT_DIR, | ||
| config_overload_dir=DYNAMIC_CONFIG_DIR, | ||
| ) | ||
|
|
||
|
|
||
| template_component_timings( | ||
| globals(), | ||
| COMPONENT_NAMES, | ||
| EXAMPLE_NAME, | ||
| (DYNAMIC_CONFIG_DIR, *CONFIGS_DIRS), | ||
| DATA_DIR, | ||
| OUTPUT_DIR, | ||
| PRELOAD_INJECTABLES, | ||
| REPEAT, | ||
| NUMBER, | ||
| TIMEOUT, | ||
| VERSION, | ||
| ) | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.