{"id":20429058,"url":"https://github.com/pp3345/bachelor-thesis","last_synced_at":"2026-03-09T06:32:10.474Z","repository":{"id":144977626,"uuid":"197777266","full_name":"pp3345/bachelor-thesis","owner":"pp3345","description":"Analysis and Optimization of DVFS for AVX Workloads","archived":false,"fork":false,"pushed_at":"2020-02-16T17:04:31.000Z","size":7748,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-05T05:42:35.599Z","etag":null,"topics":["avx","dvfs","intel","skylake","x86"],"latest_commit_sha":null,"homepage":"http://os.itec.kit.edu/97_3571.php","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pp3345.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-19T13:26:30.000Z","updated_at":"2020-02-16T17:15:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"c516b27c-ab7a-4d3d-947a-ae2b06207aae","html_url":"https://github.com/pp3345/bachelor-thesis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pp3345/bachelor-thesis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2Fbachelor-thesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2Fbachelor-thesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2Fbachelor-thesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2Fbachelor-thesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pp3345","download_url":"https://codeload.github.com/pp3345/bachelor-thesis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pp3345%2Fbachelor-thesis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30284774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avx","dvfs","intel","skylake","x86"],"created_at":"2024-11-15T07:32:47.096Z","updated_at":"2026-03-09T06:32:10.455Z","avatar_url":"https://github.com/pp3345.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Analysis and Optimization of Dynamic Voltage and Frequency Scaling for AVX Workloads Using a Software-Based Reimplementation\nThis repository contains the LaTeX sources of my bachelor's thesis (conducted at KIT between 05/03/2019 and 09/02/2019), \nall source code written for the research done in the thesis, and CSV sheets with the raw results.\n\n## Abstract\nWhile using the Advanced Vector Extensions (AVX) on current Intel x86 \nprocessors allows for great performance improvements in programs that can be\nparallelized by using vectorization, many heterogeneous workloads that use\nboth vector and scalar instructions expose degraded throughput when making\nuse of AVX2 or AVX-512. This effect is caused by processor frequency\nreductions that are required to maintain system stability while executing AVX\ncode. Due to the delays incurred by frequency switches, reduced clock speeds\nare retained for some additional time after the last demanding instruction has\nretired, causing code in scalar phases directly following AVX phases to be\nexecuted at a slower rate than theoretically possible.\n\nWe present an analysis of the precise frequency switching behavior of an\nIntel Syklake (Server) CPU when AVX instructions are used. Based on the\nobtained results, we propose AVXFreq, a software reimplementation of the AVX\nfrequency selection mechanism. AVXFreq is designed to enable us to devise and\nevaluate alternative algorithms that govern the processor’s frequency smarter\nwith regard to workloads that mix both AVX and scalar instructions. Using\nan oracle mechanism built atop AVXFreq, we show that the performance of\nscalar phases in heterogeneous workloads can theoretically be improved by up\nto 15 % with more intelligent reclocking mechanisms.\n\n## Build \u0026 Run\n**Note**: All code was specifically written to run on an Intel Core i9-7940X. Both AVXFreq and the analysis framework are \ntheoretically capable of running on other *Skylake (Server)* processors as well, however, minor modifications will be \nnecessary.\n\n### AVXFreq\n* Grab a fresh copy of the Linux 5.1.0 source code\n* Apply `avxfreq.diff`\n* `make \u0026\u0026 sudo make modules_install install`\n* Ensure the following settings are configured in your motherboard's UEFI:\n  * SpeedShift (HWP/CPPC): Off\n  * SpeedStep (EIST): On\n  * Turbo Boost: On\n  * Turbo License Level Offsets 1 and 2 both set to 1\n* Boot your kernel with `intel_pstate=avxfreq`\n\n### Reclocking Analysis Tool\n* Build and run a kernel with AVXFreq and `reclocking-analysis/entry.diff` applied\n* Build the kernel module:\n  * `cd reclocking-analysis/kernel`\n  * `make -C \u003ckernel source path\u003e M=$(pwd) \u0026\u0026 sudo make -C \u003ckernel source path\u003e M=$(pwd) modules_install`\n* Build the user-space component:\n  * `cd reclocking-analysis/user`\n  * `make`\n* `sudo php reclocking-analysis/user/run-all.php` to run all tests (this requires PHP 7.2)\n\nThe analysis framework will automatically detect whether the system is running with HWP or AVXFreq and adapt accordingly.\n\n## License\nYou may redistribute, present, build, and run everything in this repository, as long as you keep/show a clear notice of authorship.\nAll modifications and other uses require explicit written permission by me.\n\nExecute this software at your own risk. I am not responsible for any damage done to your or anyone's computer.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpp3345%2Fbachelor-thesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpp3345%2Fbachelor-thesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpp3345%2Fbachelor-thesis/lists"}