{"id":20446927,"url":"https://github.com/eedalong/ece408","last_synced_at":"2025-04-13T01:06:29.622Z","repository":{"id":39365540,"uuid":"358866639","full_name":"eedalong/ECE408","owner":"eedalong","description":"Code base and slides for ECE408：Applied Parallel Programming On GPU.","archived":false,"fork":false,"pushed_at":"2021-07-02T06:51:36.000Z","size":37344,"stargazers_count":122,"open_issues_count":1,"forks_count":34,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T01:06:23.285Z","etag":null,"topics":["ece408","gpu-programming","machine-learning","parallel-programming"],"latest_commit_sha":null,"homepage":"http://ece408.hwu-server2.crhc.illinois.edu/_layouts/15/start.aspx#/SitePages/Home.aspx","language":"C++","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/eedalong.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}},"created_at":"2021-04-17T11:56:21.000Z","updated_at":"2025-04-04T09:25:56.000Z","dependencies_parsed_at":"2022-09-09T14:11:34.329Z","dependency_job_id":null,"html_url":"https://github.com/eedalong/ECE408","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eedalong%2FECE408","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eedalong%2FECE408/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eedalong%2FECE408/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eedalong%2FECE408/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eedalong","download_url":"https://codeload.github.com/eedalong/ECE408/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650508,"owners_count":21139678,"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":["ece408","gpu-programming","machine-learning","parallel-programming"],"created_at":"2024-11-15T10:23:43.557Z","updated_at":"2025-04-13T01:06:29.591Z","avatar_url":"https://github.com/eedalong.png","language":"C++","readme":"## Code Project For Course ECE408\nThis is code project for ECE408(Applied Parallel Programming). And you can use this project as a good start for your own lab implementation. Here's how you finish your own project. [You can get all slices here](http://ece408.hwu-server2.crhc.illinois.edu/_layouts/15/start.aspx#/SitePages/Home.aspx).\n\n### 1. Finish your own code based on template code\n`templates/mpx_template.cu` are template codes and you need to full fill these code files. For me, I add these implementations in `mpx_implement.cu`.\n\n### 2. Add your code to CmakeLists.txt\nOnce you finish your new implementation code, you need to add it to `CmakeLists.txt` so it can be compiled.\n    \n    // mpx_implement.cu is your implementation code file name.\n    CUDA_ADD_EXECUTABLE(MPX_Implement mpx_implement.cu ${wbhdr} ${wbsrc})\n\n**NOTICE:** In `CmakeLists.txt`, this line set GPU arch and code generation configuration. Change it if your GPU arch is not `sm_86`.\n![](imgs/archs.png)\n\n\n### 2. Compile \u0026 Run\n    mkdir build\n    cd build\n    cmake ..\n    make \n\nExecutable files will be generated in under `build/`, and any time when you update your implementation you just need to rerun `make` under `build/`. But if you update your `CmakeLists.txt`, you should run `cmake ..` first and then run `make` to compile all codes.\n\n## Test Dataset\ndatasets for code test are under `test_data/`, you can use them to test your implementation with\n     \n     ./program -e \u003cexpected_output_file\u003e -i \u003cinput_file_1\u003e,\u003cinput_file_2\u003e -o \u003coutput_file\u003e -t \u003ctype\u003e\n\nThe `\u003cexpected_output_file\u003e` and `\u003cinput_file_n\u003e` are the input and output files provided in the dataset. The `\u003coutput_file\u003e` is the location you’d like to place the output from your program. The`\u003ctype\u003e` is the output file type: `vector`, `matrix`, or `image`. If an MP does not expect an input or output, then pass none as the parameter.\n\nFor example, if you want test mp1_implementatiton, you can run\n    \n    #suppose you are in ./build directory\n\n    ./MP1_Implement -e ../test_data/mp01/0/output.raw -i ../test_data/mp01/0/input0.raw,../test_data/mp01/0/input1.raw -o ../test_data/mp01/0/res.raw -t vector \nAnd if you see logs like this, then congratulations, you have passed the test!\n\n![](imgs/correct_res.png)\n\n\n## Generate your own dataset\nYou can generate your own dataset if you want more test. For example, you can use `MP2_Dataset` to generate dataset.\n\n    MP2_Dataset -d /data/directory/ -ra 100 -ca 128 -rb 128 -cb 256\n\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feedalong%2Fece408","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feedalong%2Fece408","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feedalong%2Fece408/lists"}