{"id":87,"date":"2022-02-20T04:48:23","date_gmt":"2022-02-20T04:48:23","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/?p=87"},"modified":"2022-03-20T03:18:01","modified_gmt":"2022-03-20T03:18:01","slug":"teams-status-report-02-19-2022","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/2022\/02\/20\/teams-status-report-02-19-2022\/","title":{"rendered":"Team&#8217;s Status Report 02\/19\/2022"},"content":{"rendered":"<p>If you\u2019ve already looked at our individual reports, you\u2019d know that much of our week was spent on realizing the Y2k22 issue with Vitis, so we won\u2019t go on too much about it here. Instead, we\u2019ll focus on the positives. \ud83d\ude0a<\/p>\n<p>To start, we now have a local instance of Vitis running on Alice\u2019s laptop! The point of this is that we will no longer be restricted to the build tools present on the ECE machines. As the current Scotty3D code runs on a newer version of CMake, the ECE machine was unable to compile the program. Things should be more straightforward on a local machine, where we can easily install whatever packages we need. In any case, it seems like our build platform woes are hopefully coming to an end\u2026<\/p>\n<p>&nbsp;<\/p>\n<p>In terms of algorithmic improvements, we met a couple times throughout the week to analyze the code in the fluid.cpp file itself, rather than just identifying the dependencies in the overall algorithm. Of primary importance for these meetings was determining how to represent each of the datatypes and determining what data we would be able to store on chip in the BRAMs, as well as how many copies of the data we would actually be able to store. One particular structure of importance was trying to figure out how we would actually implement the neighbor map on the FPGA. In the regular implementation, the neighbor map is simply an unordered hash map that uses a nearest quantized point to index into a list of neighboring particles. While this implementation is fine in software, if we actually want a performant hardware implementation, we\u2019ll likely need to manually implement the hashmap as a BRAM array of pointers to another BRAM array of particles. \u00a0Aside from that, we also took a look at the looping structures in the code and assessed its ability to benefit from pipelining. In fact, we found that a lot of the steps in the code could actually be pipelined. Steps 2 and 3 seem to have no interdependencies, so we can probably unroll and pipeline those two steps. Other than that, we also took note of the instances of multithreading code that we would need to strip from the fluids.cpp file due to depreciation.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-88 aligncenter\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-content\/uploads\/sites\/203\/2022\/02\/codeanal-300x275.png\" alt=\"\" width=\"300\" height=\"275\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-content\/uploads\/sites\/203\/2022\/02\/codeanal-300x275.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-content\/uploads\/sites\/203\/2022\/02\/codeanal-768x705.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-content\/uploads\/sites\/203\/2022\/02\/codeanal.png 816w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>For the next week, our primary goal is to get a build of the fluids.cpp kernel working in Vitis HLS, as this will give us the baseline results we need.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you\u2019ve already looked at our individual reports, you\u2019d know that much of our week was spent on realizing the Y2k22 issue with Vitis, so we won\u2019t go on too much about it here. Instead, we\u2019ll focus on the positives. \ud83d\ude0a To start, we now have a local instance of Vitis running on Alice\u2019s laptop! &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/2022\/02\/20\/teams-status-report-02-19-2022\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Team&#8217;s Status Report 02\/19\/2022&#8221;<\/span><\/a><\/p>\n","protected":false},"author":593,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/posts\/87"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/users\/593"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":89,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/posts\/87\/revisions\/89"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s22-teame1\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}