1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:02,430 The following content is provided under a Creative 3 00:00:02,430 --> 00:00:03,880 Commons license. 4 00:00:03,880 --> 00:00:06,860 Your support will help MIT OpenCourseWare continue to 5 00:00:06,860 --> 00:00:10,550 offer high quality educational resources for free. 6 00:00:10,550 --> 00:00:13,410 To make a donation or view additional materials from 7 00:00:13,410 --> 00:00:17,510 hundreds of MIT courses, visit MIT OpenCourseWare at 8 00:00:17,510 --> 00:00:18,760 ocw.mit.edu. 9 00:00:18,760 --> 00:00:21,510 10 00:00:21,510 --> 00:00:25,490 PROFESSOR: So I will go into a little about what the class 11 00:00:25,490 --> 00:00:28,790 is, and what you're going to do. 12 00:00:28,790 --> 00:00:31,100 I'll just put one slide about requirements and outcomes. 13 00:00:31,100 --> 00:00:32,190 So what are the requirements? 14 00:00:32,190 --> 00:00:34,550 We require you to be a good programmer with a lot of 15 00:00:34,550 --> 00:00:36,390 programming experience. 16 00:00:36,390 --> 00:00:39,180 As I said, we are going down to very bare metal. 17 00:00:39,180 --> 00:00:41,980 And there won't be any niceties of just 18 00:00:41,980 --> 00:00:42,850 writing Java code. 19 00:00:42,850 --> 00:00:45,140 So you're going to run into a lot of these kind of issues. 20 00:00:45,140 --> 00:00:47,260 Fluent in C is -- 21 00:00:47,260 --> 00:00:53,430 I wouldn't call it a 100% requirement, but it really 22 00:00:53,430 --> 00:00:55,770 helps if you're fluent in C. If not, you'll have to 23 00:00:55,770 --> 00:00:59,510 probably spend a lot of time trying to understand C, C++. 24 00:00:59,510 --> 00:01:05,230 And in this class that means -- just start doing it today, 25 00:01:05,230 --> 00:01:07,080 just get a C book and then try to understand. 26 00:01:07,080 --> 00:01:09,640 If you run a lot of Java it might be an easy transition. 27 00:01:09,640 --> 00:01:13,070 But get to the transition fast, don't wait. 28 00:01:13,070 --> 00:01:17,140 What are we expecting at the end? 29 00:01:17,140 --> 00:01:18,920 We expect at the end for you to know -- 30 00:01:18,920 --> 00:01:20,880 AUDIENCE: I have to go. 31 00:01:20,880 --> 00:01:22,716 Thank you very much [INAUDIBLE] 32 00:01:22,716 --> 00:01:25,460 33 00:01:25,460 --> 00:01:27,790 PROFESSOR: So what do we expect? 34 00:01:27,790 --> 00:01:30,290 We expect at the end you'll probably understand a lot of 35 00:01:30,290 --> 00:01:33,410 fundamentals and concepts of parallel programming -- 36 00:01:33,410 --> 00:01:34,260 both hardware and software. 37 00:01:34,260 --> 00:01:36,230 Because the nice thing about -- 38 00:01:36,230 --> 00:01:37,770 or the nice thing or the bad thing about Cell -- 39 00:01:37,770 --> 00:01:39,710 is a lot of hardware conceptuals to expose. 40 00:01:39,710 --> 00:01:42,340 There's no nice abstraction layers in there. 41 00:01:42,340 --> 00:01:44,280 You'll understand a lot of issues about parallel 42 00:01:44,280 --> 00:01:45,060 performance. 43 00:01:45,060 --> 00:01:48,220 We started here, you write a program, compile -- it's not 44 00:01:48,220 --> 00:01:49,570 just order n you're looking for. 45 00:01:49,570 --> 00:01:50,970 You're looking for all these constants. 46 00:01:50,970 --> 00:01:53,290 All these things matter, basically. 47 00:01:53,290 --> 00:01:56,100 You should be able to synthesize a fairly complex 48 00:01:56,100 --> 00:01:58,020 parallel program by the end, because that's what your group 49 00:01:58,020 --> 00:01:59,260 project's going to be. 50 00:01:59,260 --> 00:02:02,060 And you'll get a lot of hands-on experience with the 51 00:02:02,060 --> 00:02:03,930 Cell processor, so we'll understand this one 52 00:02:03,930 --> 00:02:05,350 instance very well. 53 00:02:05,350 --> 00:02:07,820 So that is what we are expecting will happen at the 54 00:02:07,820 --> 00:02:10,390 end of this 3.5 weeks. 55 00:02:10,390 --> 00:02:12,360 So the project. 56 00:02:12,360 --> 00:02:14,750 You proposed the projects, we did something different. 57 00:02:14,750 --> 00:02:18,230 So it's all your ideas that we are going to do. 58 00:02:18,230 --> 00:02:20,710 We selected seven groups out of these -- there are seven 59 00:02:20,710 --> 00:02:22,000 projects in there -- 60 00:02:22,000 --> 00:02:24,300 mainly based on the strength of the project proposals. 61 00:02:24,300 --> 00:02:26,330 And I was pretty impressed with the height of things you 62 00:02:26,330 --> 00:02:28,030 guys proposed. 63 00:02:28,030 --> 00:02:29,660 So here are the seven projects. 64 00:02:29,660 --> 00:02:31,480 Let's actually try to figure out who's who. 65 00:02:31,480 --> 00:02:35,400 Who's doing distributed real-time ray tracer? 66 00:02:35,400 --> 00:02:37,110 OK, that's not true. 67 00:02:37,110 --> 00:02:40,510 OK, how about the global illumination? 68 00:02:40,510 --> 00:02:43,060 OK. 69 00:02:43,060 --> 00:02:44,490 Linear algebra pack? 70 00:02:44,490 --> 00:02:46,990 OK, good. 71 00:02:46,990 --> 00:02:49,600 Molecular dynamics? 72 00:02:49,600 --> 00:02:51,030 OK. 73 00:02:51,030 --> 00:02:53,890 Speech synthesizer? 74 00:02:53,890 --> 00:02:54,950 OK. 75 00:02:54,950 --> 00:02:57,480 Soft radio? 76 00:02:57,480 --> 00:02:58,600 OK. 77 00:02:58,600 --> 00:03:00,550 Backgammon tutor? 78 00:03:00,550 --> 00:03:01,050 OK. 79 00:03:01,050 --> 00:03:03,660 And there are some people who are, I think, in this class 80 00:03:03,660 --> 00:03:05,260 thinking that they can join a group. 81 00:03:05,260 --> 00:03:08,420 So at the end, there are a few groups that only have one 82 00:03:08,420 --> 00:03:10,190 member, so probably go ahead and talk to them and see 83 00:03:10,190 --> 00:03:13,240 whether they are willing to work with people. 84 00:03:13,240 --> 00:03:15,720 So I'll give you a little bit of time, because I'm going to 85 00:03:15,720 --> 00:03:16,970 finish early. 86 00:03:16,970 --> 00:03:19,770 87 00:03:19,770 --> 00:03:21,570 OK, let's ask -- who are the people who are 88 00:03:21,570 --> 00:03:22,380 hoping to join a group? 89 00:03:22,380 --> 00:03:23,240 Is there anybody who came? 90 00:03:23,240 --> 00:03:26,660 I got a few emails, I don't know that anybody's here. 91 00:03:26,660 --> 00:03:27,900 Oh good. 92 00:03:27,900 --> 00:03:30,420 So it's not going to be a problem. 93 00:03:30,420 --> 00:03:33,020 So I did the project characteristics. 94 00:03:33,020 --> 00:03:35,860 You can see that they are ambitious projects, but 95 00:03:35,860 --> 00:03:38,310 accomplishable. 96 00:03:38,310 --> 00:03:40,990 I was worried that people would say, "I'm going to build 97 00:03:40,990 --> 00:03:43,460 this entire thing", and it's going to take a year. 98 00:03:43,460 --> 00:03:45,500 But I think most of the projects that they proposed 99 00:03:45,500 --> 00:03:47,260 are doable. 100 00:03:47,260 --> 00:03:49,020 Another thing is important and relevant things. 101 00:03:49,020 --> 00:03:52,090 102 00:03:52,090 --> 00:03:55,410 I think for a lot of these things, if the code is done 103 00:03:55,410 --> 00:03:56,960 right other people might even use it. 104 00:03:56,960 --> 00:03:59,160 I think this can start something, it's not just going 105 00:03:59,160 --> 00:04:00,600 to be this project. 106 00:04:00,600 --> 00:04:02,710 And there's a lot of opportunity to sizzle. 107 00:04:02,710 --> 00:04:04,710 I think some people will come up with these things that I 108 00:04:04,710 --> 00:04:07,100 think at the end will be so amazing. 109 00:04:07,100 --> 00:04:09,880 And that's what got me excited. 110 00:04:09,880 --> 00:04:13,310 But get them started as soon as possible, because this is 111 00:04:13,310 --> 00:04:16,800 not a semester course, this is going to run so fast. There's 112 00:04:16,800 --> 00:04:18,440 only a few all nighters you can pull, 113 00:04:18,440 --> 00:04:20,850 basically is what it is. 114 00:04:20,850 --> 00:04:22,610 So there's a note of caution. 115 00:04:22,610 --> 00:04:24,230 Cell processor is very new. 116 00:04:24,230 --> 00:04:25,350 We heard about that today. 117 00:04:25,350 --> 00:04:27,940 I mean this is a really cool thing, but it has 118 00:04:27,940 --> 00:04:29,850 its problems in there. 119 00:04:29,850 --> 00:04:32,530 It's not an easy architecture to work with. 120 00:04:32,530 --> 00:04:33,960 There is though this nice abstraction. 121 00:04:33,960 --> 00:04:37,510 So it's just then from this being completely abstracted 122 00:04:37,510 --> 00:04:40,570 out, writing Java code, to all the way to metal. 123 00:04:40,570 --> 00:04:42,560 So it's just almost a jump from going to a higher 124 00:04:42,560 --> 00:04:43,790 language of assembly. 125 00:04:43,790 --> 00:04:46,990 So there's a huge, big gap in there, and that's going to be 126 00:04:46,990 --> 00:04:48,810 a lot of issues in there. 127 00:04:48,810 --> 00:04:51,270 The tool chain is very thin and brittle. 128 00:04:51,270 --> 00:04:53,870 So my pointing out all those things, you wish there's a 129 00:04:53,870 --> 00:04:54,720 tool, but there's nothing. 130 00:04:54,720 --> 00:04:56,510 And even the existing tools -- 131 00:04:56,510 --> 00:04:59,715 we just got the SDK 2.0 into working I think this morning 132 00:04:59,715 --> 00:05:03,800 -- and so there might be issues in there. 133 00:05:03,800 --> 00:05:05,980 Most of the staff have limited experience. 134 00:05:05,980 --> 00:05:07,380 For example, SDK 2.0. 135 00:05:07,380 --> 00:05:11,110 We just got it working, so we haven't used it yet in there. 136 00:05:11,110 --> 00:05:14,835 So that can create problems, especially in 137 00:05:14,835 --> 00:05:17,480 a fast moving course. 138 00:05:17,480 --> 00:05:20,580 The projects you are doing are of your own making. 139 00:05:20,580 --> 00:05:21,920 Most of the classes -- 140 00:05:21,920 --> 00:05:23,000 if you need to [UNINTELLIGIBLE] 141 00:05:23,000 --> 00:05:26,040 classes, we actually come up with the projects, TAs go and 142 00:05:26,040 --> 00:05:28,420 implement it once, we know all the gotchas. 143 00:05:28,420 --> 00:05:31,070 And then when you get the project we know there's an 144 00:05:31,070 --> 00:05:33,230 existence proof that it's doable, it 145 00:05:33,230 --> 00:05:34,840 works, the tools work. 146 00:05:34,840 --> 00:05:37,470 We know at least there's one path through it. 147 00:05:37,470 --> 00:05:38,950 There's nothing like that here. 148 00:05:38,950 --> 00:05:41,500 Everybody's kind of just jumping at it head on, and 149 00:05:41,500 --> 00:05:45,170 hoping that we can read them. 150 00:05:45,170 --> 00:05:48,670 And we might find issues that are very hard, and that's why 151 00:05:48,670 --> 00:05:50,230 we actually have very close contact with 152 00:05:50,230 --> 00:05:51,150 those guys at IBM. 153 00:05:51,150 --> 00:05:53,330 So if things happen, we'll call them and they will be 154 00:05:53,330 --> 00:05:54,680 available to help us. 155 00:05:54,680 --> 00:05:57,730 But it's not something you can say -- oh yeah, I know, just 156 00:05:57,730 --> 00:05:58,380 go do that. 157 00:05:58,380 --> 00:06:00,050 Or -- here's the way out. 158 00:06:00,050 --> 00:06:01,900 So there might be issues like that, so we have to be very 159 00:06:01,900 --> 00:06:03,020 careful of that. 160 00:06:03,020 --> 00:06:08,540 And you will face these kinds of problems. That's more given 161 00:06:08,540 --> 00:06:10,960 than anything else, so be ready for that. 162 00:06:10,960 --> 00:06:13,390 This is not just writing some high level code and getting 163 00:06:13,390 --> 00:06:14,540 away with it. 164 00:06:14,540 --> 00:06:16,250 And you're all in this together. 165 00:06:16,250 --> 00:06:20,120 So the staff, you, me, everybody -- 166 00:06:20,120 --> 00:06:22,170 we're just doing it for the first time in some sense. 167 00:06:22,170 --> 00:06:24,840 And that's the fun part about it, because as you pointed 168 00:06:24,840 --> 00:06:27,040 out, there might be some stuff that you guys come out with 169 00:06:27,040 --> 00:06:31,060 that will become more like folklore and the basis for the 170 00:06:31,060 --> 00:06:32,330 things people do. 171 00:06:32,330 --> 00:06:33,690 Because you might say -- hey, there's a neat 172 00:06:33,690 --> 00:06:34,470 way of doing that. 173 00:06:34,470 --> 00:06:36,220 You will be the first to do this kind of thing. 174 00:06:36,220 --> 00:06:40,460 So there's that time, but on planning the three week course 175 00:06:40,460 --> 00:06:41,550 it's a large chunk to bite. 176 00:06:41,550 --> 00:06:44,030 If it is more for a PhD, then you can say -- 177 00:06:44,030 --> 00:06:45,430 OK, spend three months figuring it out. 178 00:06:45,430 --> 00:06:46,830 There's no other time limit. 179 00:06:46,830 --> 00:06:51,406 So we will try to manage this process, but you need to try 180 00:06:51,406 --> 00:06:53,780 to -- expectations of what you are trying to get done, and 181 00:06:53,780 --> 00:06:54,980 then be able to get it done. 182 00:06:54,980 --> 00:06:56,570 So you have to always balance this out. 183 00:06:56,570 --> 00:07:01,120 If you're running into issues, get to us very fast. Because 184 00:07:01,120 --> 00:07:02,150 we need to figure it out. 185 00:07:02,150 --> 00:07:04,250 And we might have to actually also figure it out from 186 00:07:04,250 --> 00:07:06,590 somebody else, so we can escalate it up and get the 187 00:07:06,590 --> 00:07:07,110 information. 188 00:07:07,110 --> 00:07:10,500 Because three weeks are going to go so fast. 189 00:07:10,500 --> 00:07:11,850 How many people are taking the class for a grade? 190 00:07:11,850 --> 00:07:14,380 191 00:07:14,380 --> 00:07:16,935 So people who are taking it for a grade, here is what we 192 00:07:16,935 --> 00:07:18,750 are going to do. 193 00:07:18,750 --> 00:07:22,540 The first thing, what I call mini quizzes, is just a prop 194 00:07:22,540 --> 00:07:24,260 so you will come into class. 195 00:07:24,260 --> 00:07:26,860 So the way I am going to do that is, at the beginning of 196 00:07:26,860 --> 00:07:30,360 the class I am going to give you a piece of paper with two 197 00:07:30,360 --> 00:07:32,510 questions from the previous lecture. 198 00:07:32,510 --> 00:07:34,020 You can do anything you want to answer it. 199 00:07:34,020 --> 00:07:36,510 You can talk to people, look it up, whatever. 200 00:07:36,510 --> 00:07:39,660 And then at the end of the class 201 00:07:39,660 --> 00:07:41,630 basically we want it back. 202 00:07:41,630 --> 00:07:44,110 And the only requirement is, you have to come individually 203 00:07:44,110 --> 00:07:46,290 to pick your thing up, and you have to come individually to 204 00:07:46,290 --> 00:07:50,310 hand it in, and you can't write somebody else's anwers 205 00:07:50,310 --> 00:07:51,910 physically, but you can talk to each other. 206 00:07:51,910 --> 00:07:55,232 So we'll try to make it a little bit entertaining, and a 207 00:07:55,232 --> 00:07:58,270 little bit thought-provoking, but nothing like you have to 208 00:07:58,270 --> 00:08:00,520 spend hours doing it. 209 00:08:00,520 --> 00:08:03,390 It'll be probably five minutes. 210 00:08:03,390 --> 00:08:06,670 Normally we will do a break inbetween, so you probably can 211 00:08:06,670 --> 00:08:09,310 talk to each other and come up with some of the answers. 212 00:08:09,310 --> 00:08:12,110 So this is just the fact that the people who are actually 213 00:08:12,110 --> 00:08:16,270 getting the grades will be coming to class, more than 214 00:08:16,270 --> 00:08:17,680 anything else I'll be testing. 215 00:08:17,680 --> 00:08:20,320 And then we have these lab projects at the beginning, 216 00:08:20,320 --> 00:08:21,280 that will get some grade. 217 00:08:21,280 --> 00:08:24,330 And the final group project. 218 00:08:24,330 --> 00:08:26,800 And then we have a final competition. 219 00:08:26,800 --> 00:08:30,405 So since everybody's not doing the same project, we are going 220 00:08:30,405 --> 00:08:32,720 to decide on performance -- 221 00:08:32,720 --> 00:08:39,400 so how well your code ran, how much MIPS or [? GOPs ?] you 222 00:08:39,400 --> 00:08:40,710 were able to get from that. 223 00:08:40,710 --> 00:08:43,380 And how raw performance is in there. 224 00:08:43,380 --> 00:08:47,440 And then we will also look at it from a 225 00:08:47,440 --> 00:08:48,430 complexity point of view. 226 00:08:48,430 --> 00:08:51,900 So for example, as I pointed out, if you do matrix 227 00:08:51,900 --> 00:08:54,630 multiplier you get certain performance, so if you do 228 00:08:54,630 --> 00:08:55,710 [? FF3, ?] you get certain performance. 229 00:08:55,710 --> 00:08:59,460 So just absolute numbers is not what matters, but how far 230 00:08:59,460 --> 00:09:01,920 you can get hard algorithm too. 231 00:09:01,920 --> 00:09:03,390 Completeness. 232 00:09:03,390 --> 00:09:06,100 So were you able to get your project through? 233 00:09:06,100 --> 00:09:08,170 How much do you actually have a compete solution at the end 234 00:09:08,170 --> 00:09:09,210 that something works? 235 00:09:09,210 --> 00:09:10,300 That's important. 236 00:09:10,300 --> 00:09:13,150 Algorithmic complexity -- how much of a complexity did you 237 00:09:13,150 --> 00:09:17,810 bite in, both from more of a pure algorithm point of view, 238 00:09:17,810 --> 00:09:20,070 and also implementing some shared complexity in there. 239 00:09:20,070 --> 00:09:21,860 And demo and presentation. 240 00:09:21,860 --> 00:09:24,250 So OK, those two. 241 00:09:24,250 --> 00:09:27,740 So we are going to select a winning team. 242 00:09:27,740 --> 00:09:30,960 We haven't figured exactly what, but we'll give everybody 243 00:09:30,960 --> 00:09:33,400 a gift set depending on -- 244 00:09:33,400 --> 00:09:36,250 this is what we are aiming at right now. 245 00:09:36,250 --> 00:09:39,550 Also we are going to invite the winning team to spend a 246 00:09:39,550 --> 00:09:41,910 day at IBM TJ Watson. 247 00:09:41,910 --> 00:09:45,470 You get to give a presentation to a bunch of people there, 248 00:09:45,470 --> 00:09:48,020 and probably go see what they are doing. 249 00:09:48,020 --> 00:09:49,840 That should be a fun day to spend. 250 00:09:49,840 --> 00:09:51,810 We haven't scheduled a day, depending on the class 251 00:09:51,810 --> 00:09:54,580 schedule and stuff like that, the winning team will go spend 252 00:09:54,580 --> 00:09:56,160 a day out in there. 253 00:09:56,160 --> 00:09:57,920 That will be a fun thing to do, there's a lot of cool 254 00:09:57,920 --> 00:10:01,140 stuff going on there. 255 00:10:01,140 --> 00:10:02,670 They will get to actually interact with some 256 00:10:02,670 --> 00:10:05,090 researchers, see what they do, as well as present 257 00:10:05,090 --> 00:10:06,180 this work to them. 258 00:10:06,180 --> 00:10:08,230 And since this is new everybody's excited. 259 00:10:08,230 --> 00:10:11,620 I think hopefully we'll come up with a team that will do 260 00:10:11,620 --> 00:10:14,460 things that other people will be interested in and will use. 261 00:10:14,460 --> 00:10:17,350 262 00:10:17,350 --> 00:10:19,590 So these kind of come from backward because I wanted to 263 00:10:19,590 --> 00:10:23,790 get Mike Perrone first. So my name is Saman -- 264 00:10:23,790 --> 00:10:24,510 Saman Amarasinghe -- 265 00:10:24,510 --> 00:10:26,950 I live in CSAIL. 266 00:10:26,950 --> 00:10:28,510 I have had a lot of interest in -- 267 00:10:28,510 --> 00:10:31,550 [LAUGHTER] 268 00:10:31,550 --> 00:10:35,780 Not as much as you guys probably. 269 00:10:35,780 --> 00:10:38,820 I have a lot of interest in languages, compilers, and 270 00:10:38,820 --> 00:10:40,000 computer architecture. 271 00:10:40,000 --> 00:10:43,350 So if you have been at this game for a long time, in the 272 00:10:43,350 --> 00:10:46,200 early 1990s there was a huge surge in parallel performance, 273 00:10:46,200 --> 00:10:49,630 work on parallelism, and at that time I did the SUIF 274 00:10:49,630 --> 00:10:51,140 parallelizing compiler in there. 275 00:10:51,140 --> 00:10:55,120 And then, everybody says -- hey, there's this Moore slope 276 00:10:55,120 --> 00:10:56,420 of performance, who cares about parallelism? 277 00:10:56,420 --> 00:10:58,890 So there was this decade when this paralellism 278 00:10:58,890 --> 00:10:59,900 kind of died down. 279 00:10:59,900 --> 00:11:02,460 I kind of hid under the radar and kind of survived through 280 00:11:02,460 --> 00:11:04,810 that thing, and then again I think parallelism coming up. 281 00:11:04,810 --> 00:11:07,280 So we are doing a bunch of parallel work in here. 282 00:11:07,280 --> 00:11:09,860 So I probably have a perspective that goes 283 00:11:09,860 --> 00:11:11,820 somewhere old, and then coming up. 284 00:11:11,820 --> 00:11:13,570 Probably Aaron can also relate to that. 285 00:11:13,570 --> 00:11:14,440 Aaron: There's one of us who did that. 286 00:11:14,440 --> 00:11:15,210 PROFESSOR: Yeah exactly. 287 00:11:15,210 --> 00:11:17,080 Going through that, kind of survived in that. 288 00:11:17,080 --> 00:11:19,720 289 00:11:19,720 --> 00:11:23,430 And Rodric is sitting there. 290 00:11:23,430 --> 00:11:29,310 So Rodric is right now at IBM PJ Watson, but he's probably 291 00:11:29,310 --> 00:11:32,400 going to live at CSAIL next month, so he's going to be 292 00:11:32,400 --> 00:11:35,290 here more than me in fact. 293 00:11:35,290 --> 00:11:40,320 He was actually in the lab until a few months ago, as a 294 00:11:40,320 --> 00:11:43,160 research scientist. He's also interested in a lot of these 295 00:11:43,160 --> 00:11:45,680 kinds of things -- compilers, architecture, parallel 296 00:11:45,680 --> 00:11:47,890 architecture, and FPGA type work. 297 00:11:47,890 --> 00:11:50,000 And then we have two TAs. 298 00:11:50,000 --> 00:11:52,340 Where's David and Phil? 299 00:11:52,340 --> 00:11:53,790 OK, get up. 300 00:11:53,790 --> 00:11:57,020 So they actually have some experience. 301 00:11:57,020 --> 00:11:59,910 Probably they are about a week ahead of you on understanding 302 00:11:59,910 --> 00:12:01,300 Cell, not too much. 303 00:12:01,300 --> 00:12:05,210 304 00:12:05,210 --> 00:12:07,910 They are going to lead the recitations and be available 305 00:12:07,910 --> 00:12:09,160 to help you in there. 306 00:12:09,160 --> 00:12:12,610 So really use those resources as much as possible. 307 00:12:12,610 --> 00:12:15,980 And then we are going to have a huge amount of guest 308 00:12:15,980 --> 00:12:17,740 lecturers, and I was pretty happy with the 309 00:12:17,740 --> 00:12:18,840 kind of list we got. 310 00:12:18,840 --> 00:12:21,270 Mike Perrone just came and gave you the lecture, and Alan 311 00:12:21,270 --> 00:12:24,780 is going to talk in a few weeks. 312 00:12:24,780 --> 00:12:29,440 And Professor Arvind, Brad Kuszmaul, Mike Acton -- that 313 00:12:29,440 --> 00:12:31,400 Mike Perrone talk about is going to come at the end. 314 00:12:31,400 --> 00:12:36,760 And Bill Thies, who was one of the PhD students in the 315 00:12:36,760 --> 00:12:37,990 Streamit group, is going to talk about 316 00:12:37,990 --> 00:12:40,310 the Streamit language. 317 00:12:40,310 --> 00:12:45,350 So the way we have kind of structured the class is, how 318 00:12:45,350 --> 00:12:48,090 do you go about extracting parallelism. 319 00:12:48,090 --> 00:12:50,490 There's implicit parallelism. 320 00:12:50,490 --> 00:12:53,260 And sometimes the current way of 321 00:12:53,260 --> 00:12:56,340 everything done by hardware. 322 00:12:56,340 --> 00:12:59,370 In the next lecture, I will just touch upon superscalar 323 00:12:59,370 --> 00:13:02,690 hardware, what it is and what its problems are. 324 00:13:02,690 --> 00:13:05,700 Implicit parallelism means you can do by compiler. 325 00:13:05,700 --> 00:13:08,150 So you write a C program, and let the compiler deal with the 326 00:13:08,150 --> 00:13:08,620 parallelism. 327 00:13:08,620 --> 00:13:13,035 For as long as you are a programmer, you don't have to 328 00:13:13,035 --> 00:13:16,050 deal with that thing. 329 00:13:16,050 --> 00:13:18,230 In lectures 11 and 12 I will talk about 330 00:13:18,230 --> 00:13:19,440 parallelizing compilers. 331 00:13:19,440 --> 00:13:21,890 So we'll cover how you can do that [? in C. ?] 332 00:13:21,890 --> 00:13:26,020 So that means kind of abstract it out, and leaving it out of 333 00:13:26,020 --> 00:13:27,450 the end programmer. 334 00:13:27,450 --> 00:13:31,430 So the hardware exposes it, but we put a software layer. 335 00:13:31,430 --> 00:13:33,420 And then the other end is explicit parallelism. 336 00:13:33,420 --> 00:13:34,830 That's where, I think, we are going to spend most of the 337 00:13:34,830 --> 00:13:36,550 time in this class. 338 00:13:36,550 --> 00:13:38,830 So in the first part of explicit parallelism is the 339 00:13:38,830 --> 00:13:40,170 library approach. 340 00:13:40,170 --> 00:13:44,410 What that means is you are using MPI type things, so you 341 00:13:44,410 --> 00:13:49,270 are basically at the metal dealing with this parallelism. 342 00:13:49,270 --> 00:13:52,830 I am going to do lecture 4 on concurrency. 343 00:13:52,830 --> 00:13:58,540 How many people took 6.170 last year when I was teaching? 344 00:13:58,540 --> 00:13:59,880 OK. 345 00:13:59,880 --> 00:14:02,310 I did a lecture on concurrency there, so something very 346 00:14:02,310 --> 00:14:05,020 similar I'm going to do in here -- to get the basics of 347 00:14:05,020 --> 00:14:06,660 parallelism. 348 00:14:06,660 --> 00:14:08,320 In order to write a parallel program, the program has to 349 00:14:08,320 --> 00:14:09,090 run concurrently. 350 00:14:09,090 --> 00:14:11,750 There's a lot of issues for writing concurrent programs. 351 00:14:11,750 --> 00:14:14,110 It is necessary to get parallel, it's not sufficient. 352 00:14:14,110 --> 00:14:15,470 There are a lot more other things to worry about. 353 00:14:15,470 --> 00:14:18,590 But let's deal with those kind of issues -- 354 00:14:18,590 --> 00:14:21,520 deal with things like synchronization, deadlocks, 355 00:14:21,520 --> 00:14:22,600 and issues like that. 356 00:14:22,600 --> 00:14:26,140 So I'm going to give that, and then Rodric is going to have a 357 00:14:26,140 --> 00:14:27,910 few lecture on design patterns. 358 00:14:27,910 --> 00:14:32,930 So if you want to write a parallel program, how do you 359 00:14:32,930 --> 00:14:32,980 look at it? 360 00:14:32,980 --> 00:14:35,710 Different algorithms will have different ways of 361 00:14:35,710 --> 00:14:36,580 parallelizing. 362 00:14:36,580 --> 00:14:39,330 So he's going to go about looking at these kind of 363 00:14:39,330 --> 00:14:40,200 parallel patterns. 364 00:14:40,200 --> 00:14:41,956 If you have this kind of program, here is a 365 00:14:41,956 --> 00:14:42,660 way to look at it. 366 00:14:42,660 --> 00:14:43,770 Here's another way to look at it. 367 00:14:43,770 --> 00:14:47,880 So kind of go through that in there. 368 00:14:47,880 --> 00:14:52,250 And in concurrency we work with a lot more abstract 369 00:14:52,250 --> 00:14:56,130 parallel model, and get slowly down to all the realism needed 370 00:14:56,130 --> 00:14:58,520 in dealing with Cell. 371 00:14:58,520 --> 00:15:02,860 And then we are going to have a bunch of guest lectures, 372 00:15:02,860 --> 00:15:06,320 mainly dealing with other ways of doing parallelism. 373 00:15:06,320 --> 00:15:08,810 So this is one way. 374 00:15:08,810 --> 00:15:10,850 We are going to have a lecture on Streamit, because you might 375 00:15:10,850 --> 00:15:14,220 be able to use that also as a way on Cell. 376 00:15:14,220 --> 00:15:16,330 So a little bit of high abstraction, we are trying to 377 00:15:16,330 --> 00:15:17,480 make that available on Cell. 378 00:15:17,480 --> 00:15:20,250 So if that comes to, then you might be able to even have 379 00:15:20,250 --> 00:15:22,630 that as a part of your toolbox in there. 380 00:15:22,630 --> 00:15:25,220 The other three talks are about very different 381 00:15:25,220 --> 00:15:27,560 approaches for parallelism. 382 00:15:27,560 --> 00:15:30,606 I think they will give you a big picture view, it's not 383 00:15:30,606 --> 00:15:32,090 that you're just going through one 384 00:15:32,090 --> 00:15:35,040 parallelling down in there. 385 00:15:35,040 --> 00:15:37,400 I think at the end of to the day you'll understand not only 386 00:15:37,400 --> 00:15:40,370 how to deal with Cell, but kind of a general way of 387 00:15:40,370 --> 00:15:42,020 looking at parallelism, and maybe from that approach 388 00:15:42,020 --> 00:15:44,580 [UNINTELLIGIBLE] parallelism in there. 389 00:15:44,580 --> 00:15:46,970 So the lectures are organized as follows. 390 00:15:46,970 --> 00:15:49,440 We are now at the end of the day here. 391 00:15:49,440 --> 00:15:51,590 Tomorrow we'll have a recitation on 392 00:15:51,590 --> 00:15:53,120 getting to know Cell. 393 00:15:53,120 --> 00:15:56,450 We are trying to figure out a good room, so just check your 394 00:15:56,450 --> 00:15:58,060 email to figure out exactly where we are going to have it, 395 00:15:58,060 --> 00:15:59,580 because we are trying to figure it out. 396 00:15:59,580 --> 00:16:01,930 We want to find a room with machines so everybody can 397 00:16:01,930 --> 00:16:04,295 actualy get hands-on experience in kind of a 398 00:16:04,295 --> 00:16:05,000 lecture format. 399 00:16:05,000 --> 00:16:09,720 And then we will have the architecture, just general 400 00:16:09,720 --> 00:16:12,730 parallel architecture, and an introduction to concurrent 401 00:16:12,730 --> 00:16:13,470 programming. 402 00:16:13,470 --> 00:16:16,260 And then Rodric is going to have individual meets with 403 00:16:16,260 --> 00:16:17,770 individual groups, trying to get the 404 00:16:17,770 --> 00:16:19,190 groups' projects going. 405 00:16:19,190 --> 00:16:23,330 So at that point kind of figure out how we are doing 406 00:16:23,330 --> 00:16:26,270 it, have some early ideas about it so you can start 407 00:16:26,270 --> 00:16:31,840 thinking and start the process of doing that. 408 00:16:31,840 --> 00:16:34,910 You can start working on Cell probably from tomorrow, but 409 00:16:34,910 --> 00:16:37,040 really get a day to kind of get familiarized, and then 410 00:16:37,040 --> 00:16:38,410 here start the project. 411 00:16:38,410 --> 00:16:42,210 And then we will have some lectures on 412 00:16:42,210 --> 00:16:44,240 design patterns in here. 413 00:16:44,240 --> 00:16:47,370 And as we go we'll have more hands-on experience also. 414 00:16:47,370 --> 00:16:53,210 415 00:16:53,210 --> 00:16:55,460 Then we'll have a lecture on Streamit. 416 00:16:55,460 --> 00:17:03,210 So if you are using Streamit for a part of the run program, 417 00:17:03,210 --> 00:17:04,870 you'll be able to understand what's going on. 418 00:17:04,870 --> 00:17:07,380 And we'll get to some debugging tools, hopefully we 419 00:17:07,380 --> 00:17:10,320 will have to deal with these things before that, but here's 420 00:17:10,320 --> 00:17:14,240 something that if you're really stuck, to get a breadth 421 00:17:14,240 --> 00:17:15,790 of tools available in here. 422 00:17:15,790 --> 00:17:18,430 And then we'll talk in general about debugging and 423 00:17:18,430 --> 00:17:20,360 performance monitoring and performance optimization. 424 00:17:20,360 --> 00:17:23,400 So at this point hopefully you have done the first cart, you 425 00:17:23,400 --> 00:17:25,560 have figured out what problems, and start optimizing 426 00:17:25,560 --> 00:17:26,530 things in here. 427 00:17:26,530 --> 00:17:32,440 And then we'll going into a little bit more breadth, 428 00:17:32,440 --> 00:17:35,080 things like traffic paralleizing compilers that I 429 00:17:35,080 --> 00:17:37,330 talk about, getting implicit parallelism in here. 430 00:17:37,330 --> 00:17:41,290 And then we will have a bunch of guest lecturers coming in. 431 00:17:41,290 --> 00:17:43,680 And we'll talk about some hardware and the future, 432 00:17:43,680 --> 00:17:47,690 because we are just starting this very new phase in 433 00:17:47,690 --> 00:17:51,130 programming that might change almost everybody. 434 00:17:51,130 --> 00:17:53,490 Five years, ten years down the line if you go through 435 00:17:53,490 --> 00:17:56,250 computer science, you might have a very different flavor, 436 00:17:56,250 --> 00:18:00,990 if what people think of parallelism takes hold. 437 00:18:00,990 --> 00:18:03,800 So let's look at some future, and talk about that. 438 00:18:03,800 --> 00:18:05,910 And it's a nice way to finish the lectures. 439 00:18:05,910 --> 00:18:07,600 A few more days and then we'll have group 440 00:18:07,600 --> 00:18:08,920 presentations in here. 441 00:18:08,920 --> 00:18:13,890 So each group will get about 15 minutes time to present 442 00:18:13,890 --> 00:18:16,130 what they have done and give a little bit of a demo. 443 00:18:16,130 --> 00:18:18,710 And then finally on Friday we will 444 00:18:18,710 --> 00:18:22,200 have awards and reception. 445 00:18:22,200 --> 00:18:25,470 So this is what we got. 446 00:18:25,470 --> 00:18:26,720 Any questions? 447 00:18:26,720 --> 00:18:33,625 448 00:18:33,625 --> 00:18:36,090 AUDIENCE: For recitations, if we're not in a room with 449 00:18:36,090 --> 00:18:37,570 machines should we bring laptops? 450 00:18:37,570 --> 00:18:39,910 PROFESSOR: So that's a good question. 451 00:18:39,910 --> 00:18:41,815 Who doesn't have a laptop they can bring? 452 00:18:41,815 --> 00:18:44,394 453 00:18:44,394 --> 00:18:47,290 OK. 454 00:18:47,290 --> 00:18:49,820 If that is the case, we can have it in any room we want, 455 00:18:49,820 --> 00:18:50,970 and have the network. 456 00:18:50,970 --> 00:18:54,380 And we might have one or two additional machines for people 457 00:18:54,380 --> 00:18:55,710 who don't have a laptop. 458 00:18:55,710 --> 00:18:58,230 And that actually will work much better than everybody 459 00:18:58,230 --> 00:19:00,580 marching into some kind of a computer room that's not 460 00:19:00,580 --> 00:19:03,410 structured properly for doing a class. 461 00:19:03,410 --> 00:19:06,160 OK, that actually helps a lot. 462 00:19:06,160 --> 00:19:08,980 That's a good point, I think that helps a lot. 463 00:19:08,980 --> 00:19:11,024 OK, we'll do that that way then. 464 00:19:11,024 --> 00:19:13,510 AUDIENCE: How do we get access to these machines? 465 00:19:13,510 --> 00:19:14,330 PROFESSOR: OK. 466 00:19:14,330 --> 00:19:14,830 Rodric, you -- 467 00:19:14,830 --> 00:19:23,010 RODRIC RABBAH: Every room has a PS3 dedicated to them. 468 00:19:23,010 --> 00:19:26,060 And every group has accounts on their dedicated PS3. 469 00:19:26,060 --> 00:19:28,020 I have your usernames and passwords. 470 00:19:28,020 --> 00:19:31,200 I will pass them out tomorrow, because I'm going to propagate 471 00:19:31,200 --> 00:19:34,480 the new SDK to all the PS3's -- to sort of test it with one 472 00:19:34,480 --> 00:19:35,890 and make sure everything's working. 473 00:19:35,890 --> 00:19:38,350 So you'll get them at the first recitation tomorrow. 474 00:19:38,350 --> 00:19:42,440 Unless you really want them today, then come talk to me or 475 00:19:42,440 --> 00:19:43,355 send me email. 476 00:19:43,355 --> 00:19:44,420 PROFESSOR: You'll get to take home -- 477 00:19:44,420 --> 00:19:46,020 AUDIENCE: [INAUDIBLE] 478 00:19:46,020 --> 00:19:46,360 PROFESSOR: Yes. 479 00:19:46,360 --> 00:19:47,240 RODRIC RABBAH: Yes. 480 00:19:47,240 --> 00:19:49,360 PROFESSOR: We couldn't even put it in the machine room, 481 00:19:49,360 --> 00:19:50,365 because they were scared somebody was going 482 00:19:50,365 --> 00:19:51,200 to take them home. 483 00:19:51,200 --> 00:19:53,310 So we actually have it in a different room -- closed, 484 00:19:53,310 --> 00:19:55,590 nicely locked -- 485 00:19:55,590 --> 00:19:57,010 or on the network. 486 00:19:57,010 --> 00:20:00,475 So I have been a very popular person lately, a lot of people 487 00:20:00,475 --> 00:20:02,740 have tried to bribe me to get access to 488 00:20:02,740 --> 00:20:03,990 one of these masters. 489 00:20:03,990 --> 00:20:07,218 490 00:20:07,218 --> 00:20:08,468 AUDIENCE: [UNINTELLIGIBLE] 491 00:20:08,468 --> 00:20:19,283 492 00:20:19,283 --> 00:20:22,570 AUDIENCE: How much does the PS3 cost? 493 00:20:22,570 --> 00:20:29,016 PROFESSOR: Officially $600, but then eBay's going up to 494 00:20:29,016 --> 00:20:30,710 like $2,500 these days. 495 00:20:30,710 --> 00:20:30,880 AUDIENCE: No. 496 00:20:30,880 --> 00:20:31,530 PROFESSOR: That's gone down? 497 00:20:31,530 --> 00:20:34,360 AUDIENCE: They're down between $400 and $500. 498 00:20:34,360 --> 00:20:35,020 PROFESSOR: Oh, OK. 499 00:20:35,020 --> 00:20:36,933 AUDIENCE: They tried [? to rope me in. ?] 500 00:20:36,933 --> 00:20:38,350 [LAUGHTER] 501 00:20:38,350 --> 00:20:39,240 PROFESSOR: OK. 502 00:20:39,240 --> 00:20:42,260 But during Christmas it was down for -- 503 00:20:42,260 --> 00:20:45,118 a few desperate payers who were trying to bribe me. 504 00:20:45,118 --> 00:20:49,280 [LAUGHTER] 505 00:20:49,280 --> 00:20:51,690 So I guess their volume has caught up to -- 506 00:20:51,690 --> 00:20:54,320 AUDIENCE: No, the demand has dropped. 507 00:20:54,320 --> 00:20:54,630 PROFESSOR: OK. 508 00:20:54,630 --> 00:20:55,880 AUDIENCE: [INAUDIBLE] 509 00:20:55,880 --> 00:21:04,230 510 00:21:04,230 --> 00:21:06,850 AUDIENCE: Will we get to see the Playstation? 511 00:21:06,850 --> 00:21:09,610 PROFESSOR: Tomorrow we can bring one -- 512 00:21:09,610 --> 00:21:11,120 AUDIENCE: I can bring one [INAUDIBLE] 513 00:21:11,120 --> 00:21:13,980 PROFESSOR: If you put a game in it's fun. 514 00:21:13,980 --> 00:21:16,540 You can put a game in and play it, but this is going to be 515 00:21:16,540 --> 00:21:18,920 Linux so it's a little bit boring. 516 00:21:18,920 --> 00:21:20,652 [LAUGHTER] 517 00:21:20,652 --> 00:21:22,115 AUDIENCE: So these are things that actually 518 00:21:22,115 --> 00:21:23,090 cannot play the games. 519 00:21:23,090 --> 00:21:24,730 PROFESSOR: It can. 520 00:21:24,730 --> 00:21:29,730 Interestingly, mostly these game machines are sold for 521 00:21:29,730 --> 00:21:31,450 less than production value. 522 00:21:31,450 --> 00:21:36,350 So Microsoft, Nintendo, and Sony before made sure that 523 00:21:36,350 --> 00:21:41,090 nobody can run anything other than the published games that 524 00:21:41,090 --> 00:21:43,680 they've charged $25 per pop to 525 00:21:43,680 --> 00:21:45,520 recover the cost. Huh? 526 00:21:45,520 --> 00:21:46,620 No, $60 for the game. 527 00:21:46,620 --> 00:21:49,660 I think they are charging $25 from the game maker just for 528 00:21:49,660 --> 00:21:51,040 the privilege of running the game. 529 00:21:51,040 --> 00:21:53,140 That's how they make their money. 530 00:21:53,140 --> 00:21:55,070 But, [UNINTELLIGIBLE] 531 00:21:55,070 --> 00:21:58,370 when they made PS3 bootable by Linux. 532 00:21:58,370 --> 00:22:04,200 So in fact, it's much cheaper, you get a Blu-Ray player, and 533 00:22:04,200 --> 00:22:07,529 this Cell processor for a lot less than the production cost. 534 00:22:07,529 --> 00:22:09,819 AUDIENCE: Does Linux on the PS3 run on top 535 00:22:09,819 --> 00:22:11,601 of the PS3 OS though? 536 00:22:11,601 --> 00:22:13,290 PROFESSOR: No. 537 00:22:13,290 --> 00:22:14,720 It just boots up PS3. 538 00:22:14,720 --> 00:22:18,240 What it does is in fact -- 539 00:22:18,240 --> 00:22:20,130 right now, you don't get access to the graphics 540 00:22:20,130 --> 00:22:21,240 processor properly. 541 00:22:21,240 --> 00:22:23,570 So you can run open G11. 542 00:22:23,570 --> 00:22:26,120 You have framebuffer access, but you don't get the full 543 00:22:26,120 --> 00:22:28,410 graphics access out of that. 544 00:22:28,410 --> 00:22:30,530 AUDIENCE: Which distribution are we using? 545 00:22:30,530 --> 00:22:30,900 PROFESSOR: Which one? 546 00:22:30,900 --> 00:22:32,342 AUDIENCE: We're using Yellow Dog. 547 00:22:32,342 --> 00:22:36,669 548 00:22:36,669 --> 00:22:38,770 AUDIENCE: So in other words, Mario and Luigi are 549 00:22:38,770 --> 00:22:40,416 subsidizing what we're going to do. 550 00:22:40,416 --> 00:22:41,360 [LAUGHTER] 551 00:22:41,360 --> 00:22:43,430 PROFESSOR: Yeah, exactly. 552 00:22:43,430 --> 00:22:46,830 All those shoot them up games are basically what subsidizes. 553 00:22:46,830 --> 00:22:51,280 Actually he said, in one sense, you get the processor 554 00:22:51,280 --> 00:22:54,610 down to $200 because they are selling all the other things. 555 00:22:54,610 --> 00:22:57,010 And the other thing, actually if you want to build a high 556 00:22:57,010 --> 00:23:00,680 performance Cell farm, it's probably cheaper because I 557 00:23:00,680 --> 00:23:03,210 think that the Cell blend would be $2,000. 558 00:23:03,210 --> 00:23:05,480 It should be cheaper to buy a bunch of PS3's, 559 00:23:05,480 --> 00:23:06,400 connect them together. 560 00:23:06,400 --> 00:23:09,520 But there might be issues about things like network 561 00:23:09,520 --> 00:23:14,160 access, file access, because as you pointed out, the board 562 00:23:14,160 --> 00:23:15,880 access is pretty primitive. 563 00:23:15,880 --> 00:23:18,510 Because for games you don't need this high bandwidth 564 00:23:18,510 --> 00:23:20,200 connection, you just need to download it once. 565 00:23:20,200 --> 00:23:23,860 So there might be issues using it for cluster. 566 00:23:23,860 --> 00:23:32,080 567 00:23:32,080 --> 00:23:32,670 OK. 568 00:23:32,670 --> 00:23:33,920 Anything else? 569 00:23:33,920 --> 00:23:36,240 570 00:23:36,240 --> 00:23:37,520 OK, good. 571 00:23:37,520 --> 00:23:42,289