{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/confuciux-autonomous-hardware-resource","title":"ConfuciuX: Autonomous Hardware Resource Assignment for DNN Accelerators using Reinforcement Learning","arxiv_id":"2009.02010","date":"2020-09-04","proceeding":null,"authors":["Sheng-Chun Kao","Geonhwa Jeong","Tushar Krishna"],"abstract":"DNN accelerators provide efficiency by leveraging reuse of activations/weights/outputs during the DNN computations to reduce data movement from DRAM to the chip. The reuse is captured by the accelerator's dataflow. While there has been significant prior work in exploring and comparing various dataflows, the strategy for assigning on-chip hardware resources (i.e., compute and memory) given a dataflow that can optimize for performance/energy while meeting platform constraints of area/power for DNN(s) of interest is still relatively unexplored. The design-space of choices for balancing compute and memory explodes combinatorially, as we show in this work (e.g., as large as O(10^(72)) choices for running \\mobilenet), making it infeasible to do manual-tuning via exhaustive searches. It is also difficult to come up with a specific heuristic given that different DNNs and layer types exhibit different amounts of reuse. In this paper, we propose an autonomous strategy called ConfuciuX to find optimized HW resource assignments for a given model and dataflow style. ConfuciuX leverages a reinforcement learning method, REINFORCE, to guide the search process, leveraging a detailed HW performance cost model within the training loop to estimate rewards. We also augment the RL approach with a genetic algorithm for further fine-tuning. ConfuciuX demonstrates the highest sample-efficiency for training compared to other techniques such as Bayesian optimization, genetic algorithm, simulated annealing, and other RL methods. It converges to the optimized hardware configuration 4.7 to 24 times faster than alternate techniques.","url_abs":"https://arxiv.org/abs/2009.02010v1","url_pdf":"https://arxiv.org/pdf/2009.02010v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"confuciux-autonomous-hardware-resource","repo_url":"https://github.com/maestro-project/confuciux","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"bayesian-optimization","task_name":"Bayesian Optimization"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[{"method_slug":"reinforce","method_name":"REINFORCE"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2009.02010","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2009.02010"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/maestro-project/confuciux","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"unverified":7},"by_repo_kind":{"official":{"samples":8,"ran":1,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"24ee38e114b38bce","entry":"hidden_init","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/ConfX/rl_confx.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/ConfX/rl_confx.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"24ee38e114b38bce"}},{"code_sha256_prefix":"eca45758227c3dbe","entry":"crossover","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/ConfX/ga_confx.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/ConfX/ga_confx.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"eca45758227c3dbe"}},{"code_sha256_prefix":"504c7d524f5c0f44","entry":"crossover","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/Other_Opts/other_opt_env.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/Other_Opts/other_opt_env.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"504c7d524f5c0f44"}},{"code_sha256_prefix":"7b839c5ef9b57e9b","entry":"get_action_space","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/utils/get_action_space.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/utils/get_action_space.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7b839c5ef9b57e9b"}},{"code_sha256_prefix":"11a8a4f8188bf669","entry":"get_population_fitness","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/ConfX/ga_confx.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/ConfX/ga_confx.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"11a8a4f8188bf669"}},{"code_sha256_prefix":"66506442dd31d0e2","entry":"mutation","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/Other_Opts/other_opt_env.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/Other_Opts/other_opt_env.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"66506442dd31d0e2"}},{"code_sha256_prefix":"d5fe4c86b97bcd9b","entry":"select_parents","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/ConfX/ga_confx.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/ConfX/ga_confx.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d5fe4c86b97bcd9b"}},{"code_sha256_prefix":"fd2141ce08b3d8ff","entry":"select_parents","repo":"maestro-project/confuciux","repo_kind":"official","path":"src/Other_Opts/other_opt_env.py","file_url":"https://github.com/maestro-project/confuciux/blob/HEAD/src/Other_Opts/other_opt_env.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fd2141ce08b3d8ff"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}