Programming Parallel Computers: Part 1B

Apr 9, 2020 19:09 · 1768 words · 9 minute read 15 running time first 3

Let’s now have a quick look at our course practicalities. First of all, I’d like to remind all of you that this is a 6-week course that is worth 5 credits. Which basically means that you are going to be spending roughly 22 hours each week on activities that are related to this course. So this is basically going to be a half-time job for all of you. We are going to have lectures on every Monday.

00:31 - Then, there are exercise sessions on Tuesdays and Fridays. And every Sunday we are going to have a deadline for submitting that week’s exercises. The first thing you are going to need to do in order to take part in this course is to solve the prerequisite test. So if you haven’t solved this test yet, please do it as soon as possible. The deadline of this test is going to be on Friday at noon. To pass the course, the only thing you are required to do is to solve our weekly exercises. So there is no exam, nothing like this. You just keep solving exercises, submit solutions, and that’s going to determine the grade of your course. And the grading is completely based on the number of points you get for these exercises. If you get 64 points, then it’s going to be a grade of 5, and if you get at least 38 points, it’s going to be a passing grade. You can freely choose whichever exercises you want to solve, you can solve exercises in any order, but there is a so-called “recommended path”, and if you follow this recommended path and solve all exercises along this path, you are going to get up to 77 points.

02:02 - And on top of these recommended exercises there are “challenging exercises” that you can solve whenever you want for extra credits, and finally there is going to be a contest in which for selected exercises whoever has been among the fastest solutions for these exercises is going to get one extra point. To solve the exercises, you are going to follow this kind of a workflow. When you are solving exercises of week x, basically what you are going to do during week x is you are going to write code, test your code, benchmark your code, and do a preliminary self-service grading on your own. And after that self-service grading, you already should have a good idea of what is going to be the number of points you are going to get for this exercise, assuming you haven’t been cheating, assuming everything is correct, assuming there are no bugs. And then you are going to submit these exercises to GitHub and then you are done for that week.

03:19 - During week x + 1, our teaching assistants are going to download your submissions from GitHub and then they are going to do the final grading of these exercises. If everything is good, you are going to get those points that you already got in preliminary grading, if there are let’s say bugs, then our teaching assistants are going to give feedback and adjust the grading if needed. And please note that you can always resubmit any of the exercises at any point during the course. It is completely safe, you are never going to lose points by doing resubmissions. But please note that for many exercises, especially exercises on the recommended path, there is going to be a deadline week.

04:15 - And whatever you submit or resubmit before the deadline week gives you full points, whatever you submit or resubmit after the deadline week is going to give you some points but not full points. But please note that resubmissions are always safe, you are never going to lose points that way. And also please note the end of week 6 is the final deadline for everything. You can’t submit, you can’t resubmit anything after week 6. We are going to using computers in the Maari building computer classrooms.

04:58 - The classroom names are Maari-A and Maari-B, but because we are going to do everything remotely these classrooms don’t matter that much. On the course web page you are going to find the names of all of these computers in Maari-A and Maari-B. And you can connect to any of those computers by ssh. And it’s actually going to be your responsibility to find computers that you can use to do self-service grading. In order to get assistance for solving exercises we are going to organize two exercise sessions each week.

05:42 - And of course these exercise sessions are also going to be organized online. So we are going to be using both Slack and Zoom to provide one-to-one assistance to anybody who needs help with your exercises. There are two exercise sessions each week, but you are free to take part in one of these or both of these or none of these depending on how much help you need. And one very important point regarding collaboration during this course. Please note that you are encouraged to discuss your solution ideas with other students but any code that you are going to submit has to be written 100% by yourself.

06:39 - So feel free to exchange ideas on the level of, say, pseudo-code or algorithm ideas but please be very careful to not do any kind of copy-pasting from any of the other students who are taking part in this course, or from any other sources, let’s say, code examples that you can find online. And again regarding online sources, you are free to use ideas that you find online, but you cannot directly use any code that you find online. The only exception is the code in course material: if you can reuse some parts of the code from the course material, this is perfectly fine. If you are unsure about any of these collaboration rules, please ask us to make sure you are not breaking these rules. And here is a list of important pointers that you are going to need in order to successfully take part in our course activities.

07:49 - You are going to be using Slack heavily, because Slack is going to be the main communication channel that we are going to use during our course. And the final important computer system that we are going to be using is GitHub. All of you, once you have solved the prerequisite test, all of you will get a personal, private GitHub repository in this GitHub organization that we are using for this course. Here is a list of people who are organizing this course this year. If you have any questions regarding any parts of this course, whether it’s related to the course material or the topic of the course or our course practicalities, please feel free to ask any of us on Slack.

08:49 - Please try to use Slack as the primary means for communication, and please try to use public messages on the public channels on Slack whenever possible. You can email me if you for some reason have for instance difficulties accessing our Slack or something like this, but other than that, please try to use Slack whenever possible. This course lasts for 6 weeks, and the first 3 weeks are going to focus on CPU programming, and the last 3 weeks of the course are going to be focusing on GPU programming. Here is a checklist of things that you should do during this week. First of all, you should have already registered for the course in Oodi.

09:42 - Secondly, you should have already solved the prerequisite test. If you haven’t, please note that the deadline for this prerequisite test is on Friday at noon. Then, you should join Slack if you haven’t done that yet. You can join our Slack by just registering with your Aalto email address, and then you can create a new user account that way on this Slack workspace. Then, once you have solved the prerequisite test, you should have received an invitation for your own private GitHub repository.

10:27 - Please make sure that you have access to this GitHub repository. Then, once you have access to this repository, you will find all exercise templates there, and then you can start solving exercises. And if you are following the recommended path for this course, you should this week solve at least exercises CP1 and MF1. For each of these exercises that you are solving, you should write code, run our self-service grading tool, and once this grading tool is happy with the solution that you have written, you should submit your solution by committing everything and pushing it to GitHub. Here is now an example of the workflow for solving one exercise.

11:24 - You will first, in your own clone of your own private Git repository first switch to the right directory. Then you will open the right source file in a text editor, you will write code there, once you are happy, you can try to compile it, once it compiles fine, you can run tests and benchmarks and, if you are happy with everything, you can do self-service grading using our grading tool. Then, once grading is done, this grading tool is going to create a submission file that basically contains the running time of your program. You are going to add both the source code of your submission and this submission file to your own Git repository. You are going to commit these and you are going to push these to GitHub.

12:32 - And at this point it’s very important to make sure that all of this information is really available on GitHub. If you are unsure, please open your GitHub repository using a web browser and double-check that all information is really there the way you expect it to be. This is basically the workflow for, for instance, solving CP1 exercise this week. Once you have done everything like this, then you are done with this exercise for this week. Next week, our teaching assistants are going to have a look at your exercise, they are going to give some feedback if needed, and, at some point during next week, this feedback will appear in your own personal Git repository.

13:27 - And then you can just pull this feedback from the repository and if you want, you can use the grading tool to show the final score that you have got for these exercises. .