{"id":16654992,"url":"https://github.com/argmaster/bachelors_thesis","last_synced_at":"2025-03-12T18:26:41.137Z","repository":{"id":195174907,"uuid":"639175390","full_name":"Argmaster/bachelors_thesis","owner":"Argmaster","description":"Finished with grade 5 (2-5 range), unfortunately only Polish version is available.","archived":false,"fork":false,"pushed_at":"2024-07-06T00:50:59.000Z","size":44972,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-19T11:30:49.203Z","etag":null,"topics":["cssfinder","quantum-entanglement","separable-states"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/Argmaster.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":"2023-05-10T23:32:36.000Z","updated_at":"2024-04-20T22:34:00.000Z","dependencies_parsed_at":"2024-04-20T23:30:49.996Z","dependency_job_id":"2b819cd5-e91b-45d7-b93c-8aecc53b1a32","html_url":"https://github.com/Argmaster/bachelors_thesis","commit_stats":null,"previous_names":["argmaster/bachelors_thesis"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Argmaster%2Fbachelors_thesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Argmaster%2Fbachelors_thesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Argmaster%2Fbachelors_thesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Argmaster%2Fbachelors_thesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Argmaster","download_url":"https://codeload.github.com/Argmaster/bachelors_thesis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243270152,"owners_count":20264217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cssfinder","quantum-entanglement","separable-states"],"created_at":"2024-10-12T09:51:41.111Z","updated_at":"2025-03-12T18:26:41.115Z","avatar_url":"https://github.com/Argmaster.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Bachelor's thesis: *Optimization of quantum entanglement detection software*\n\n\u003e ## Introduction\n\u003e\n\u003e Closest Separable State Finder (CSSFinder) is a program which can be used for \n\u003e detection of entanglement in quantum system and determining how strong this\n\u003e entanglement is. It is based on an adapted algorithm by Elmer G. Gilbert, which allows\n\u003e for calculating the approximate value of the Hilbert-Schmidt distance between a\n\u003e quantum state and a set of separated states. The operation of this algorithm is\n\u003e described in a paper titled `Hilbert-Schmidt distance and entanglement witnessing'\n\u003e whose authors are Palash Pandya, Omer Sakarya and Marcin Wieśniak.\n\u003e \n\u003e Dr. Marcin Wieśniak, prof. of UG, created an implementation of the CSSF algorithm in the\n\u003e Python language, using the NumPy library to perform the necessary matrix calculations.\n\u003e This choice was dictated by the possibilities offered by this toolkit. It allows you to\n\u003e quickly create simple code, capable of performing calculations relatively efficiently on\n\u003e all the most popular systems for desktop computers.\n\u003e \n\u003e The advantages of the Python language are widely noted by both the academia as well as\n\u003e the commercial community, as is clearly evident in compilations such as those published\n\u003e by GitHub, Inc. `The top programming languages' (2022). The Python language ranks second\n\u003e in it.\n\u003e \n\u003e Alternatives in the form of the C, C++ or Fortran languages would require more and more\n\u003e complex code, while forcing you to manually compile a build system, external libraries,\n\u003e and using dedicated solutions for each operating system operating system. In addition,\n\u003e performing calculations would be difficult, due to the the complicated process of\n\u003e integrating specialized libraries for linear algebra, the need for manual memory\n\u003e handling and static typing.\n\nFinished with grade 5 (2-5 range), unfortunately full version is available only in Polish.\n\n## Table of contents\n\n```\n1 Introduction.........................................................................3\n    1.1 Operation of the Program.......................................................3\n    1.2 Purpose of the work............................................................4\n    1.3 Reasons to proceed with optimization...........................................5\n2 Tools................................................................................5\n    2.1 AOT compilation................................................................5\n    2.2 JIT compilation................................................................6\n    2.3 Tool selection.................................................................7\n        2.3.1 Python and NumPy.........................................................7\n        2.3.2 Python and NumPy with AOT................................................7\n        2.3.3 Python and NumPy with JIT................................................8\n        2.3.4 Rust and Ndarray.........................................................8\n        2.3.5 Rust and Ndarray with OpenBLAS...........................................9\n3 Methods..............................................................................9\n    3.1 Modularization.................................................................9\n    3.2 Test data.....................................................................10\n    3.3 Test environment..............................................................11\n    3.4 Profiling.....................................................................11\n    3.5 Calculation precision.........................................................12\n    3.6 Graphs........................................................................13\n4 Results.............................................................................13\n    4.1 Preliminary profiling.........................................................13\n    4.2 Preliminary performance measurements..........................................15\n    4.3 Double precision measurements.................................................16\n        4.3.1 Python and NumPy........................................................17\n        4.3.2 Python and NumPy with AOT...............................................17\n        4.3.3 Python and NumPy with JIT...............................................19\n        4.3.4 Rust and Ndarray........................................................20\n        4.3.5 Rust and Ndarray with OpenBLAS..........................................20\n4.4 Single precision measurements.....................................................21\n        4.4.1 Python and NumPy........................................................21\n        4.4.2 Python and NumPy with AOT...............................................22\n        4.4.3 Python and NumPy with JIT...............................................22\n        4.4.4 Rust and Ndarray........................................................24\n        4.4.5 Rust and Ndarray with OpenBLAS..........................................24\n    4.5 Matrix statements.............................................................25\n        4.5.1 Matrix ρ1 (32 × 32).....................................................25\n        4.5.2 Matrix ρ2 (4 × 4).......................................................26\n        4.5.3 Matrix ρ3 (8 × 8).......................................................27\n        4.5.4 Matrix ρ4 (16 × 16).....................................................27\n        4.5.5 Matrix ρ5 (32 × 32).....................................................27\n        4.5.6 Matrix ρ6 (64 × 64).....................................................28\n    4.6 Rust profiling with OpenBLAS..................................................29\n5 Discussion..........................................................................30\n    5.1 Summary.......................................................................30\n    5.2 Follow-up.....................................................................31\n    5.3 Overlooked tools..............................................................32\n        5.3.1 PyTorch and TensorFlow..................................................32\n        5.3.2 PyPy....................................................................32\n        5.3.3 C/C++...................................................................32\n6 Conclusions.........................................................................33\n    6.1 Conclusion....................................................................33\n    6.2 Code..........................................................................33\nReferences............................................................................35\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargmaster%2Fbachelors_thesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fargmaster%2Fbachelors_thesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargmaster%2Fbachelors_thesis/lists"}