WEBVTT

1
00:00:04.995 --> 00:00:06.135
<00:00:04.995>Uh, <00:00:05.337>good <00:00:05.679>morning <00:00:06.021>everyone.

2
00:00:06.135 --> 00:00:07.615
<00:00:06.135>Thanks <00:00:06.357>for <00:00:06.579>joining <00:00:06.801>me <00:00:07.023>for <00:00:07.245>this <00:00:07.467>talk.

3
00:00:07.835 --> 00:00:09.855
<00:00:07.835>Uh, <00:00:07.990>some <00:00:08.146>of <00:00:08.301>you <00:00:08.457>who <00:00:08.612>may <00:00:08.768>have <00:00:08.923>been <00:00:09.079>here <00:00:09.235>last

4
00:00:09.855 --> 00:00:10.895
<00:00:09.855>year <00:00:10.167>may <00:00:10.479>recognize <00:00:10.791>me.

5
00:00:10.975 --> 00:00:13.855
<00:00:10.975>I <00:00:11.115>gave, <00:00:11.254>uh, <00:00:11.395>I <00:00:11.535>won't <00:00:11.674>say <00:00:11.815>the <00:00:11.955>same <00:00:12.094>talk <00:00:12.235>last <00:00:12.375>year,

6
00:00:13.875 --> 00:00:15.055
<00:00:13.875>but <00:00:14.087>it <00:00:14.299>had <00:00:14.512>the <00:00:14.724>same <00:00:14.937>title.

7
00:00:15.395 --> 00:00:18.655
<00:00:15.395>Um, <00:00:15.511>so <00:00:15.628>this <00:00:15.745>is <00:00:15.861>gonna <00:00:15.978>be <00:00:16.094>an <00:00:16.211>update <00:00:16.328>on <00:00:16.445>how <00:00:16.561>you <00:00:16.678>can <00:00:16.794>approach,

8
00:00:19.395 --> 00:00:22.455
<00:00:19.395>uh, <00:00:19.675>programming <00:00:19.955>for <00:00:20.235>GPUs <00:00:20.515>using <00:00:20.794>Python.

9
00:00:23.235 --> 00:00:26.815
<00:00:23.235>Now, <00:00:23.375>uh, <00:00:23.515>GPUs <00:00:23.655>have <00:00:23.794>been <00:00:23.935>around <00:00:24.075>for <00:00:24.215>quite <00:00:24.355>a <00:00:24.494>while <00:00:24.634>now,

10
00:00:26.835 --> 00:00:29.895
<00:00:26.835>but <00:00:26.990>traditionally <00:00:27.146>it <00:00:27.301>was <00:00:27.457>things <00:00:27.612>like <00:00:27.768>c <00:00:27.923>plus <00:00:28.079>plus <00:00:28.235>fortran,

11
00:00:29.995 --> 00:00:31.775
<00:00:29.995>uh, <00:00:30.170>you <00:00:30.345>know, <00:00:30.520>the <00:00:30.695>way <00:00:30.870>we <00:00:31.045>used <00:00:31.220>to <00:00:31.395>program

12
00:00:31.915 --> 00:00:33.415
<00:00:31.915>for <00:00:32.252>high <00:00:32.589>performance <00:00:32.927>computing <00:00:33.265>systems.

13
00:00:33.995 --> 00:00:37.015
<00:00:33.995>Uh, <00:00:34.135>but <00:00:34.275>of <00:00:34.415>course, <00:00:34.555>Python <00:00:34.695>is <00:00:34.834>so <00:00:34.974>commonly <00:00:35.114>used <00:00:35.254>across <00:00:35.394>many,

14
00:00:37.015 --> 00:00:39.775
<00:00:37.015>many <00:00:37.190>different <00:00:37.365>fields <00:00:37.540>and <00:00:37.715>areas, <00:00:37.890>uh, <00:00:38.065>that <00:00:38.240>we've <00:00:38.415>had

15
00:00:39.775 --> 00:00:41.575
<00:00:39.775>to <00:00:40.055>start <00:00:40.335>taking <00:00:40.614>Python <00:00:40.894>very <00:00:41.175>seriously

16
00:00:41.595 --> 00:00:44.855
<00:00:41.595>and <00:00:41.769>making <00:00:41.945>sure <00:00:42.120>that <00:00:42.295>the <00:00:42.470>qda <00:00:42.644>ecosystem <00:00:42.820>for <00:00:42.995>programming

17
00:00:44.855 --> 00:00:46.655
<00:00:44.855>for <00:00:45.088>our <00:00:45.321>GPUs <00:00:45.555>is <00:00:45.788>fit <00:00:46.021>for <00:00:46.254>purpose.

18
00:00:47.155 --> 00:00:48.855
<00:00:47.155>Uh, <00:00:47.310>and <00:00:47.466>so <00:00:47.621>I'll <00:00:47.777>go <00:00:47.932>through <00:00:48.088>some <00:00:48.243>of <00:00:48.399>the <00:00:48.555>features

19
00:00:48.855 --> 00:00:50.615
<00:00:48.855>that <00:00:49.055>we've <00:00:49.254>brought <00:00:49.455>in <00:00:49.654>in <00:00:49.855>the <00:00:50.055>last <00:00:50.254>year

20
00:00:50.615 --> 00:00:53.455
<00:00:50.615>or <00:00:50.722>so <00:00:50.830>to <00:00:50.938>make <00:00:51.045>it <00:00:51.153>as <00:00:51.261>easy <00:00:51.368>as <00:00:51.476>possible <00:00:51.584>for <00:00:51.691>you <00:00:51.799>to <00:00:51.907>get <00:00:52.015>your

21
00:00:54.015 --> 00:00:56.175
<00:00:54.015>software <00:00:54.155>to <00:00:54.295>run <00:00:54.435>as <00:00:54.575>fast <00:00:54.715>as <00:00:54.855>it <00:00:54.995>can <00:00:55.135>on <00:00:55.275>our <00:00:55.415>GPUs.

22
00:00:57.355 --> 00:00:59.095
<00:00:57.355>Um, <00:00:57.635>there's <00:00:57.915>a <00:00:58.194>QR <00:00:58.474>code <00:00:58.754>here.

23
00:00:59.095 --> 00:01:01.015
<00:00:59.095>There's, <00:00:59.235>I'll <00:00:59.375>show <00:00:59.515>it <00:00:59.655>again <00:00:59.795>at <00:00:59.935>the <00:01:00.074>end <00:01:00.214>of <00:01:00.355>the <00:01:00.495>talk.

24
00:01:01.015 --> 00:01:03.415
<00:01:01.015>It <00:01:01.170>allows <00:01:01.326>you <00:01:01.481>to <00:01:01.637>download <00:01:01.792>the <00:01:01.948>PDF <00:01:02.103>of <00:01:02.259>these <00:01:02.415>slides.

25
00:01:03.415 --> 00:01:04.935
<00:01:03.415>There's <00:01:03.610>a <00:01:03.805>lot <00:01:04.001>of <00:01:04.196>links <00:01:04.392>in <00:01:04.587>the <00:01:04.783>slides,

26
00:01:05.105 --> 00:01:06.575
<00:01:05.105>which <00:01:05.325>is <00:01:05.546>why <00:01:05.766>I <00:01:05.987>include <00:01:06.207>it <00:01:06.428>there.

27
00:01:07.145 --> 00:01:08.655
<00:01:07.145>Don't <00:01:07.295>worry <00:01:07.447>if <00:01:07.598>you <00:01:07.749>haven't <00:01:07.900>got <00:01:08.051>your <00:01:08.202>phone <00:01:08.353>out. <00:01:08.504>Now.

28
00:01:08.775 --> 00:01:10.055
<00:01:08.775>I <00:01:08.939>will <00:01:09.104>show <00:01:09.268>this <00:01:09.433>again <00:01:09.597>at <00:01:09.762>the <00:01:09.927>end.

29
00:01:11.765 --> 00:01:14.175
<00:01:11.765>I'll <00:01:11.905>see <00:01:12.045>a <00:01:12.185>little <00:01:12.325>bit <00:01:12.465>about <00:01:12.605>Nvidia <00:01:12.745>to <00:01:12.885>start <00:01:13.025>off <00:01:13.165>with.

30
00:01:14.395 --> 00:01:18.975
<00:01:14.395>Uh, <00:01:14.535>it <00:01:14.675>was <00:01:14.815>formed <00:01:14.955>in <00:01:15.095>1993, <00:01:15.235>uh, <00:01:15.375>with <00:01:15.515>the, <00:01:15.655>uh, <00:01:15.795>idea

31
00:01:18.975 --> 00:01:22.535
<00:01:18.975>of <00:01:19.208>creating <00:01:19.441>graphics, <00:01:19.675>processing <00:01:19.908>units, <00:01:20.141>uh, <00:01:20.375>processes,

32
00:01:22.535 --> 00:01:25.855
<00:01:22.535>pieces <00:01:22.690>of <00:01:22.846>hardware, <00:01:23.001>which <00:01:23.157>would <00:01:23.312>work <00:01:23.468>alongside <00:01:23.623>the <00:01:23.779>CFUs <00:01:23.935>in

33
00:01:25.855 --> 00:01:28.215
<00:01:25.855>order <00:01:26.055>to <00:01:26.255>put <00:01:26.455>pretty <00:01:26.655>images <00:01:26.855>on <00:01:27.055>the <00:01:27.255>screen.

34
00:01:28.715 --> 00:01:32.135
<00:01:28.715>Um, <00:01:28.890>few <00:01:29.065>years <00:01:29.240>into <00:01:29.415>developing <00:01:29.590>that, <00:01:29.765>people <00:01:29.940>start <00:01:30.115>thinking,

35
00:01:32.135 --> 00:01:33.615
<00:01:32.134>this <00:01:32.401>is <00:01:32.667>quite <00:01:32.934>a <00:01:33.200>powerful <00:01:33.467>hardware.

36
00:01:33.715 --> 00:01:35.175
<00:01:33.715>Are <00:01:33.879>there <00:01:34.043>other <00:01:34.207>things <00:01:34.372>we <00:01:34.536>can <00:01:34.700>use <00:01:34.864>it <00:01:35.029>for?

37
00:01:35.915 --> 00:01:38.375
<00:01:35.914>And <00:01:36.089>so <00:01:36.264>they <00:01:36.440>start <00:01:36.615>experimenting <00:01:36.789>with <00:01:36.964>using <00:01:37.139>things <00:01:37.315>for

38
00:01:38.375 --> 00:01:40.815
<00:01:38.375>outside <00:01:38.575>of <00:01:38.775>the <00:01:38.975>world <00:01:39.175>of, <00:01:39.375>uh, <00:01:39.575>putting <00:01:39.775>images,

39
00:01:40.815 --> 00:01:42.215
<00:01:40.815>putting <00:01:41.130>pixels <00:01:41.445>on <00:01:41.760>the <00:01:42.075>screen.

40
00:01:42.675 --> 00:01:45.015
<00:01:42.675>And <00:01:42.815>that's <00:01:42.955>when <00:01:43.095>we <00:01:43.235>started <00:01:43.375>to <00:01:43.515>see <00:01:43.655>gen <00:01:43.795>more <00:01:43.935>general <00:01:44.075>purpose

41
00:01:45.335 --> 00:01:47.055
<00:01:45.335>GPU <00:01:45.801>computing <00:01:46.268>take <00:01:46.735>off.

42
00:01:47.475 --> 00:01:48.575
<00:01:47.475>Now, <00:01:47.722>the <00:01:47.970>challenge <00:01:48.217>there <00:01:48.465>was

43
00:01:48.575 --> 00:01:49.855
<00:01:48.575>how <00:01:48.767>do <00:01:48.959>we <00:01:49.151>program <00:01:49.342>for <00:01:49.535>these <00:01:49.726>things?

44
00:01:50.115 --> 00:01:52.975
<00:01:50.115>At <00:01:50.270>that <00:01:50.426>time, <00:01:50.581>people <00:01:50.737>were <00:01:50.892>using <00:01:51.048>the <00:01:51.203>language <00:01:51.359>of <00:01:51.515>graphics,

45
00:01:53.195 --> 00:01:56.535
<00:01:53.195>so <00:01:53.350>shaders <00:01:53.506>and <00:01:53.661>texture <00:01:53.817>maps, <00:01:53.972>which <00:01:54.128>made <00:01:54.283>it <00:01:54.439>quite <00:01:54.595>hard

46
00:01:56.535 --> 00:01:58.655
<00:01:56.535>to <00:01:56.735>map <00:01:56.935>your <00:01:57.134>scientific <00:01:57.335>problems <00:01:57.535>to <00:01:57.735>these <00:01:57.935>devices.

47
00:01:59.355 --> 00:02:01.255
<00:01:59.354>Um, <00:01:59.510>so <00:01:59.666>we <00:01:59.821>came <00:01:59.977>up <00:02:00.132>with <00:02:00.288>the <00:02:00.443>idea <00:02:00.599>of <00:02:00.755>cda.

48
00:02:01.255 --> 00:02:05.535
<00:02:01.255>So <00:02:01.429>right <00:02:01.604>about <00:02:01.780>2006, <00:02:01.955>uh, <00:02:02.130>CDA <00:02:02.304>was <00:02:02.479>developed <00:02:02.655>short

49
00:02:05.535 --> 00:02:08.215
<00:02:05.535>for <00:02:05.884>compute <00:02:06.235>unified <00:02:06.585>device <00:02:06.935>architecture,

50
00:02:08.675 --> 00:02:11.175
<00:02:08.675>and <00:02:08.830>it <00:02:08.986>allowed <00:02:09.141>you <00:02:09.297>a <00:02:09.452>way <00:02:09.608>to <00:02:09.763>program <00:02:09.919>for <00:02:10.075>GPUs,

51
00:02:11.175 --> 00:02:12.215
<00:02:11.175>which <00:02:11.487>looked <00:02:11.799>very <00:02:12.111>familiar

52
00:02:12.215 --> 00:02:13.455
<00:02:12.215>to <00:02:12.354>you <00:02:12.494>if <00:02:12.633>you <00:02:12.773>were <00:02:12.912>coming <00:02:13.052>from <00:02:13.191>the <00:02:13.331>world

53
00:02:13.455 --> 00:02:14.775
<00:02:13.455>of <00:02:13.692>c <00:02:13.930>plus <00:02:14.167>plus, <00:02:14.405>for <00:02:14.643>example.

54
00:02:16.385 --> 00:02:18.925
<00:02:16.385>So <00:02:16.540>not <00:02:16.696>long <00:02:16.851>after <00:02:17.007>that, <00:02:17.162>people <00:02:17.318>start <00:02:17.473>using <00:02:17.629>these <00:02:17.785>GPUs

55
00:02:18.945 --> 00:02:20.525
<00:02:18.945>for <00:02:19.295>doing <00:02:19.644>their <00:02:19.995>scientific <00:02:20.345>simulations.

56
00:02:20.625 --> 00:02:21.725
<00:02:20.625>You <00:02:20.872>start <00:02:21.120>to <00:02:21.367>see <00:02:21.615>some

57
00:02:21.725 --> 00:02:23.525
<00:02:21.725>of <00:02:21.958>the <00:02:22.191>large <00:02:22.424>high <00:02:22.658>performance <00:02:22.891>computing <00:02:23.125>systems

58
00:02:23.635 --> 00:02:24.765
<00:02:23.635>include <00:02:24.143>these <00:02:24.652>GPUs.

59
00:02:25.955 --> 00:02:27.765
<00:02:25.954>Then <00:02:26.421>around <00:02:26.888>2012, <00:02:27.355>uh,

60
00:02:27.805 --> 00:02:31.245
<00:02:27.805>a <00:02:27.980>research <00:02:28.155>called <00:02:28.330>Alex <00:02:28.505>Chesky <00:02:28.680>entered <00:02:28.855>his <00:02:29.030>neural <00:02:29.205>network

61
00:02:31.635 --> 00:02:33.645
<00:02:31.635>into, <00:02:31.984>uh, <00:02:32.334>the <00:02:32.685>ImageNet <00:02:33.035>competition.

62
00:02:33.665 --> 00:02:37.365
<00:02:33.665>Now, <00:02:33.840>this <00:02:34.015>is <00:02:34.190>a <00:02:34.364>competition <00:02:34.540>for <00:02:34.715>recognizing, <00:02:34.890>uh, <00:02:35.065>images.

63
00:02:37.545 --> 00:02:40.245
<00:02:37.545>So <00:02:37.645>what, <00:02:37.745>what <00:02:37.845>was <00:02:37.945>in <00:02:38.045>an <00:02:38.145>image? <00:02:38.245>Is <00:02:38.345>it <00:02:38.445>a <00:02:38.545>cat? <00:02:38.645>Is <00:02:38.745>it <00:02:38.845>a <00:02:38.945>dog?

64
00:02:40.245 --> 00:02:43.965
<00:02:40.245>That <00:02:40.400>sort <00:02:40.556>of <00:02:40.711>thing. <00:02:40.867>He <00:02:41.022>trained <00:02:41.178>his <00:02:41.333>Neur <00:02:41.489>network, <00:02:41.645>uh,

65
00:02:44.175 --> 00:02:46.685
<00:02:44.175>using <00:02:44.315>two <00:02:44.455>of <00:02:44.595>our <00:02:44.735>GPUs <00:02:44.875>over <00:02:45.015>just <00:02:45.155>a <00:02:45.295>couple <00:02:45.435>of <00:02:45.575>days,

66
00:02:47.075 --> 00:02:48.965
<00:02:47.075>entered <00:02:47.355>it <00:02:47.635>into <00:02:47.915>the <00:02:48.195>ImageNet <00:02:48.475>competition,

67
00:02:49.145 --> 00:02:51.045
<00:02:49.145>and <00:02:49.378>he <00:02:49.611>blew <00:02:49.845>away <00:02:50.078>the <00:02:50.311>everyone <00:02:50.545>else.

68
00:02:51.465 --> 00:02:54.005
<00:02:51.465>Uh, <00:02:51.640>that's <00:02:51.815>when <00:02:51.990>people <00:02:52.165>started <00:02:52.340>really <00:02:52.515>to <00:02:52.690>sit <00:02:52.865>up

69
00:02:54.005 --> 00:02:57.285
<00:02:54.005>and <00:02:54.144>take <00:02:54.285>notice, <00:02:54.424>uh, <00:02:54.565>of <00:02:54.704>how <00:02:54.845>we <00:02:54.984>could <00:02:55.125>start <00:02:55.265>using <00:02:55.405>ai.

70
00:02:57.505 --> 00:03:00.925
<00:02:57.505>And <00:02:57.680>it <00:02:57.855>was <00:02:58.030>that <00:02:58.204>combination <00:02:58.380>of <00:02:58.555>availability <00:02:58.730>of <00:02:58.905>data.

71
00:03:01.145 --> 00:03:04.085
<00:03:01.145>So <00:03:01.272>we <00:03:01.399>had <00:03:01.526>all <00:03:01.654>the <00:03:01.781>pictures <00:03:01.908>of <00:03:02.035>cats <00:03:02.163>on <00:03:02.290>the <00:03:02.417>internet, <00:03:02.545>uh,

72
00:03:04.105 --> 00:03:06.365
<00:03:04.105>and <00:03:04.280>also <00:03:04.454>the <00:03:04.630>availability <00:03:04.804>of <00:03:04.980>the <00:03:05.155>compute <00:03:05.329>in <00:03:05.505>order

73
00:03:06.385 --> 00:03:07.685
<00:03:06.385>to <00:03:06.677>train <00:03:06.970>these <00:03:07.262>neural <00:03:07.555>networks.

74
00:03:07.865 --> 00:03:09.805
<00:03:07.865>And <00:03:08.020>of <00:03:08.176>course, <00:03:08.331>here <00:03:08.487>we <00:03:08.642>are <00:03:08.798>now, <00:03:08.953>uh, <00:03:09.109>as <00:03:09.265>far

75
00:03:09.805 --> 00:03:13.485
<00:03:09.805>as <00:03:09.912>I <00:03:10.020>see <00:03:10.128>every <00:03:10.235>other <00:03:10.343>talk <00:03:10.451>in <00:03:10.558>in <00:03:10.666>this, <00:03:10.774>uh, <00:03:10.881>event <00:03:10.989>is <00:03:11.097>about <00:03:11.205>ai.

76
00:03:13.785 --> 00:03:15.285
<00:03:13.785>Um, <00:03:13.977>so, <00:03:14.170>uh, <00:03:14.363>we've <00:03:14.556>come <00:03:14.749>a <00:03:14.942>long <00:03:15.135>way,

77
00:03:15.305 --> 00:03:17.805
<00:03:15.305>but <00:03:15.585>AlexNet <00:03:15.865>was <00:03:16.145>when, <00:03:16.425>uh, <00:03:16.705>uh,

78
00:03:17.805 --> 00:03:19.325
<00:03:17.805>people <00:03:18.033>sat <00:03:18.261>up <00:03:18.489>and, <00:03:18.716>and <00:03:18.945>took <00:03:19.173>notice.

79
00:03:19.785 --> 00:03:22.005
<00:03:19.785>And <00:03:19.924>the <00:03:20.065>reason <00:03:20.204>GPUs <00:03:20.345>are <00:03:20.484>at <00:03:20.625>the <00:03:20.765>core <00:03:20.905>of <00:03:21.045>that, <00:03:21.185>uh,

80
00:03:22.115 --> 00:03:23.765
<00:03:22.115>development <00:03:22.465>is <00:03:22.815>the <00:03:23.165>compute <00:03:23.515>power.

81
00:03:23.765 --> 00:03:26.205
<00:03:23.765>They're <00:03:23.904>very, <00:03:24.045>very <00:03:24.184>good <00:03:24.325>at <00:03:24.464>doing <00:03:24.605>the <00:03:24.744>operations <00:03:24.885>at <00:03:25.024>the <00:03:25.165>heart

82
00:03:26.545 --> 00:03:29.805
<00:03:26.545>of <00:03:26.700>training <00:03:26.856>and <00:03:27.011>in <00:03:27.167>inferencing <00:03:27.322>on <00:03:27.478>neural <00:03:27.633>networks <00:03:27.789>as <00:03:27.945>well

83
00:03:29.805 --> 00:03:30.885
<00:03:29.805>as <00:03:30.129>many <00:03:30.453>other <00:03:30.777>applications.

84
00:03:32.345 --> 00:03:33.925
<00:03:32.345>So <00:03:32.500>I <00:03:32.656>wanted <00:03:32.811>to <00:03:32.967>zoom <00:03:33.122>in <00:03:33.278>a <00:03:33.433>little <00:03:33.589>bit <00:03:33.745>on

85
00:03:33.925 --> 00:03:35.525
<00:03:33.925>what <00:03:34.275>A <00:03:34.625>GPU <00:03:34.975>looks <00:03:35.325>like.

86
00:03:35.745 --> 00:03:37.565
<00:03:35.745>Now, <00:03:35.978>this <00:03:36.211>is <00:03:36.445>a, <00:03:36.678>a <00:03:36.911>schematic <00:03:37.145>diagram.

87
00:03:37.845 --> 00:03:39.725
<00:03:37.845>I <00:03:38.000>don't <00:03:38.156>expect <00:03:38.311>you <00:03:38.467>to <00:03:38.622>be <00:03:38.778>hardware <00:03:38.933>experts <00:03:39.089>at <00:03:39.245>all.

88
00:03:40.025 --> 00:03:43.045
<00:03:40.025>Uh, <00:03:40.165>but <00:03:40.305>this <00:03:40.445>is <00:03:40.585>a <00:03:40.725>schematic <00:03:40.865>diagram <00:03:41.005>of <00:03:41.145>the <00:03:41.285>hopper, <00:03:41.425>GPU.

89
00:03:43.045 --> 00:03:46.725
<00:03:43.045>This <00:03:43.185>is <00:03:43.325>one <00:03:43.465>of <00:03:43.605>our, <00:03:43.745>um, <00:03:43.885>uh, <00:03:44.025>recent <00:03:44.165>data <00:03:44.305>center <00:03:44.445>GPUs,

90
00:03:47.345 --> 00:03:48.805
<00:03:47.345>and <00:03:47.673>it <00:03:48.002>looks <00:03:48.330>very <00:03:48.659>complicated.

91
00:03:49.105 --> 00:03:51.085
<00:03:49.105>Um, <00:03:49.244>and <00:03:49.385>so <00:03:49.524>you <00:03:49.665>might <00:03:49.804>think <00:03:49.945>it's <00:03:50.084>very <00:03:50.225>complicated <00:03:50.364>to <00:03:50.505>program

92
00:03:51.185 --> 00:03:53.165
<00:03:51.185>for, <00:03:51.301>and <00:03:51.418>it <00:03:51.535>can <00:03:51.651>be, <00:03:51.768>but <00:03:51.885>I'm <00:03:52.001>gonna <00:03:52.118>show <00:03:52.235>you <00:03:52.351>there <00:03:52.468>are <00:03:52.585>ways

93
00:03:53.165 --> 00:03:55.045
<00:03:53.165>to <00:03:53.340>program <00:03:53.515>for <00:03:53.690>this <00:03:53.864>where <00:03:54.040>you <00:03:54.215>don't <00:03:54.390>really <00:03:54.565>need

94
00:03:55.045 --> 00:03:56.885
<00:03:55.045>to <00:03:55.278>know <00:03:55.511>the <00:03:55.745>details <00:03:55.978>of <00:03:56.211>the <00:03:56.445>hardware.

95
00:03:57.185 --> 00:03:58.605
<00:03:57.185>But <00:03:57.440>as <00:03:57.696>developers, <00:03:57.951>it's <00:03:58.207>always <00:03:58.463>good

96
00:03:58.605 --> 00:04:00.125
<00:03:58.605>to <00:03:58.878>understand <00:03:59.152>the <00:03:59.425>platform <00:03:59.699>we're <00:03:59.973>using.

97
00:04:00.705 --> 00:04:03.205
<00:04:00.705>So <00:04:00.880>all <00:04:01.055>the <00:04:01.230>little <00:04:01.405>green <00:04:01.580>things <00:04:01.755>here <00:04:01.930>are <00:04:02.105>things

98
00:04:03.205 --> 00:04:05.005
<00:04:03.205>for <00:04:03.485>doing <00:04:03.765>compute, <00:04:04.045>and <00:04:04.325>there <00:04:04.605>are

99
00:04:05.005 --> 00:04:06.085
<00:04:05.005>a <00:04:05.143>lot <00:04:05.282>of <00:04:05.421>them, <00:04:05.560>as <00:04:05.699>you <00:04:05.838>can <00:04:05.977>see.

100
00:04:06.425 --> 00:04:09.525
<00:04:06.425>Um, <00:04:06.552>now, <00:04:06.679>if <00:04:06.806>you <00:04:06.934>had <00:04:07.061>a <00:04:07.188>similar <00:04:07.315>diagram <00:04:07.443>of <00:04:07.570>a <00:04:07.697>CPU <00:04:07.825>u,

101
00:04:09.525 --> 00:04:10.525
<00:04:09.525>there'd <00:04:09.705>be <00:04:09.885>much <00:04:10.065>fewer <00:04:10.245>of <00:04:10.425>those,

102
00:04:10.545 --> 00:04:13.005
<00:04:10.545>and <00:04:10.700>that's <00:04:10.856>one <00:04:11.011>of <00:04:11.167>the <00:04:11.322>reasons <00:04:11.478>that <00:04:11.633>GPUs <00:04:11.789>are, <00:04:11.945>uh,

103
00:04:13.195 --> 00:04:14.325
<00:04:13.195>more <00:04:13.703>energy <00:04:14.212>efficient.

104
00:04:14.325 --> 00:04:17.525
<00:04:14.325>For <00:04:14.452>example, <00:04:14.579>much <00:04:14.706>of <00:04:14.834>the <00:04:14.961>silicon <00:04:15.088>on <00:04:15.215>A <00:04:15.343>GPU <00:04:15.470>is <00:04:15.597>given <00:04:15.725>over

105
00:04:17.625 --> 00:04:18.765
<00:04:17.625>for <00:04:18.137>doing <00:04:18.651>computations.

106
00:04:19.665 --> 00:04:23.125
<00:04:19.665>If <00:04:19.805>we <00:04:19.945>zoom <00:04:20.085>in <00:04:20.225>a <00:04:20.365>little <00:04:20.505>bit <00:04:20.645>more, <00:04:20.785>this <00:04:20.925>is <00:04:21.065>one

107
00:04:23.125 --> 00:04:24.485
<00:04:23.125>of <00:04:23.533>these <00:04:23.941>small <00:04:24.349>subunits.

108
00:04:24.485 --> 00:04:26.445
<00:04:24.485>This <00:04:24.765>is <00:04:25.045>called <00:04:25.325>a <00:04:25.605>streaming <00:04:25.885>multiprocessor.

109
00:04:26.945 --> 00:04:30.045
<00:04:26.945>Um, <00:04:27.120>this, <00:04:27.295>uh, <00:04:27.469>allows <00:04:27.645>us <00:04:27.820>to <00:04:27.995>have <00:04:28.170>different <00:04:28.344>levels

110
00:04:30.145 --> 00:04:32.405
<00:04:30.145>of <00:04:30.495>parallelism <00:04:30.844>within <00:04:31.195>the <00:04:31.544>GPU.

111
00:04:32.915 --> 00:04:35.605
<00:04:32.915>Okay. <00:04:33.148>Um, <00:04:33.381>and <00:04:33.615>on <00:04:33.848>a <00:04:34.081>streaming <00:04:34.315>multiprocessor,

112
00:04:35.605 --> 00:04:38.205
<00:04:35.605>and <00:04:35.745>there <00:04:35.885>are <00:04:36.025>many <00:04:36.165>of <00:04:36.305>these <00:04:36.445>per <00:04:36.585>GPU, <00:04:36.725>we <00:04:36.865>have <00:04:37.005>lots

113
00:04:38.205 --> 00:04:41.245
<00:04:38.205>of <00:04:38.344>smaller <00:04:38.484>compute <00:04:38.625>units, <00:04:38.765>uh, <00:04:38.905>which <00:04:39.044>allow <00:04:39.185>us <00:04:39.325>to <00:04:39.465>do, <00:04:39.604>uh,

114
00:04:41.435 --> 00:04:43.245
<00:04:41.435>sums <00:04:41.901>at <00:04:42.368>particular <00:04:42.835>precisions.

115
00:04:43.305 --> 00:04:45.445
<00:04:43.305>So, <00:04:43.480>uh, <00:04:43.655>double <00:04:43.830>precision, <00:04:44.005>single <00:04:44.180>precision, <00:04:44.355>and <00:04:44.530>so <00:04:44.705>on.

116
00:04:45.755 --> 00:04:46.965
<00:04:45.755>There's <00:04:46.027>also <00:04:46.299>a <00:04:46.571>big <00:04:46.844>chunk

117
00:04:46.965 --> 00:04:48.885
<00:04:46.965>of <00:04:47.198>green <00:04:47.431>there <00:04:47.665>called <00:04:47.898>the <00:04:48.131>TENS <00:04:48.365>call,

118
00:04:49.465 --> 00:04:52.685
<00:04:49.465>that's <00:04:49.698>dedicated <00:04:49.931>hardware <00:04:50.165>for <00:04:50.398>doing <00:04:50.631>matrix, <00:04:50.865>multiply

119
00:04:52.745 --> 00:04:54.045
<00:04:52.745>and <00:04:53.330>accumulate <00:04:53.915>operations.

120
00:04:54.255 --> 00:04:56.725
<00:04:54.255>Again, <00:04:54.488>very, <00:04:54.721>very <00:04:54.955>useful <00:04:55.188>for <00:04:55.421>various <00:04:55.655>engineering

121
00:04:56.725 --> 00:04:59.605
<00:04:56.725>and <00:04:56.925>scientific <00:04:57.125>apps, <00:04:57.325>but <00:04:57.525>in <00:04:57.725>particular <00:04:57.925>for <00:04:58.125>ai.

122
00:05:00.145 --> 00:05:01.725
<00:05:00.145>And <00:05:00.344>so <00:05:00.544>we've <00:05:00.745>actually <00:05:00.945>given <00:05:01.145>over <00:05:01.344>a <00:05:01.544>chunk

123
00:05:01.725 --> 00:05:03.325
<00:05:01.725>of <00:05:01.958>our <00:05:02.191>hardware <00:05:02.425>for, <00:05:02.658>for <00:05:02.891>doing <00:05:03.125>that.

124
00:05:04.465 --> 00:05:05.845
<00:05:04.465>But <00:05:04.620>if <00:05:04.775>you <00:05:04.930>look <00:05:05.086>at <00:05:05.241>that, <00:05:05.396>that <00:05:05.551>seems, <00:05:05.707>again,

125
00:05:05.845 --> 00:05:06.885
<00:05:05.845>seems <00:05:06.313>very <00:05:06.781>complicated.

126
00:05:06.905 --> 00:05:08.525
<00:05:06.905>How <00:05:07.080>can <00:05:07.255>you <00:05:07.429>even <00:05:07.604>start <00:05:07.780>a <00:05:07.955>program <00:05:08.130>for <00:05:08.304>this?

127
00:05:08.905 --> 00:05:11.485
<00:05:08.905>Um, <00:05:09.021>well, <00:05:09.138>we'll <00:05:09.255>see <00:05:09.371>in <00:05:09.488>a <00:05:09.604>few <00:05:09.721>ways <00:05:09.838>how <00:05:09.955>we <00:05:10.071>can <00:05:10.188>do <00:05:10.304>that.

128
00:05:12.225 --> 00:05:14.245
<00:05:12.225>So <00:05:12.341>just <00:05:12.458>to <00:05:12.575>give <00:05:12.691>you <00:05:12.808>an <00:05:12.925>idea <00:05:13.041>of <00:05:13.158>the <00:05:13.275>scale <00:05:13.391>of <00:05:13.508>these <00:05:13.625>things

129
00:05:14.245 --> 00:05:17.125
<00:05:14.245>and <00:05:14.478>how <00:05:14.711>powerful <00:05:14.945>they <00:05:15.178>are, <00:05:15.411>there's <00:05:15.645>132

130
00:05:17.125 --> 00:05:19.685
<00:05:17.125>of <00:05:17.325>those <00:05:17.525>streaming <00:05:17.725>multiprocessors <00:05:17.925>in <00:05:18.125>a <00:05:18.325>hopper, <00:05:18.525>GPU.

131
00:05:20.515 --> 00:05:24.245
<00:05:20.515>That <00:05:20.690>means <00:05:20.865>there's <00:05:21.039>over <00:05:21.215>16,000 <00:05:21.390>single <00:05:21.565>precision <00:05:21.740>core <00:05:21.914>in

132
00:05:24.245 --> 00:05:25.325
<00:05:24.245>a, <00:05:24.569>in <00:05:24.893>that <00:05:25.217>GPU.

133
00:05:25.985 --> 00:05:28.805
<00:05:25.985>So <00:05:26.125>how <00:05:26.265>can <00:05:26.405>we <00:05:26.545>even <00:05:26.685>start <00:05:26.825>a <00:05:26.965>program <00:05:27.105>for <00:05:27.245>16,000 <00:05:27.385>calls?

134
00:05:29.265 --> 00:05:32.045
<00:05:29.265>And <00:05:29.392>also <00:05:29.519>the <00:05:29.646>way <00:05:29.774>the <00:05:29.901>GPU <00:05:30.028>works <00:05:30.155>is <00:05:30.283>very <00:05:30.410>much <00:05:30.537>more <00:05:30.664>efficient

135
00:05:32.045 --> 00:05:33.445
<00:05:32.045>if <00:05:32.225>we <00:05:32.405>can <00:05:32.585>actually <00:05:32.765>give <00:05:32.945>it <00:05:33.125>more <00:05:33.305>work

136
00:05:33.465 --> 00:05:36.325
<00:05:33.465>to <00:05:33.620>do <00:05:33.776>than <00:05:33.931>there <00:05:34.087>are <00:05:34.242>physical <00:05:34.398>calls <00:05:34.553>to <00:05:34.709>execute <00:05:34.865>on.

137
00:05:36.425 --> 00:05:39.245
<00:05:36.425>So <00:05:36.565>we <00:05:36.705>actually <00:05:36.845>want <00:05:36.985>our <00:05:37.125>number <00:05:37.265>of <00:05:37.405>threads <00:05:37.545>to <00:05:37.685>be <00:05:37.825>much,

138
00:05:39.245 --> 00:05:40.685
<00:05:39.245>much <00:05:39.461>higher <00:05:39.677>than <00:05:39.893>the <00:05:40.109>number <00:05:40.325>of <00:05:40.541>calls.

139
00:05:40.735 --> 00:05:42.045
<00:05:40.735>We're <00:05:41.029>talking <00:05:41.324>hundreds <00:05:41.619>of <00:05:41.914>thousands,

140
00:05:42.225 --> 00:05:43.445
<00:05:42.225>if <00:05:42.499>not <00:05:42.774>millions <00:05:43.048>of <00:05:43.323>threads.

141
00:05:43.545 --> 00:05:45.845
<00:05:43.545>That's <00:05:43.720>the <00:05:43.895>kind <00:05:44.070>of <00:05:44.245>scale <00:05:44.420>of <00:05:44.595>operations <00:05:44.770>we <00:05:44.945>want

142
00:05:45.845 --> 00:05:48.405
<00:05:45.845>to <00:05:45.972>be <00:05:46.099>doing <00:05:46.226>on <00:05:46.354>the <00:05:46.481>GPU <00:05:46.608>to <00:05:46.735>make <00:05:46.863>full <00:05:46.990>use <00:05:47.117>of <00:05:47.245>it.

143
00:05:50.225 --> 00:05:53.365
<00:05:50.225>So <00:05:50.352>how <00:05:50.479>do <00:05:50.606>we <00:05:50.734>go <00:05:50.861>about <00:05:50.988>doing <00:05:51.115>that? <00:05:51.243>So <00:05:51.370>I <00:05:51.497>mentioned <00:05:51.625>qda.

144
00:05:53.625 --> 00:05:56.405
<00:05:53.625>Qda <00:05:53.780>started <00:05:53.936>out <00:05:54.091>as <00:05:54.247>an <00:05:54.402>API <00:05:54.558>for <00:05:54.713>programming <00:05:54.869>for <00:05:55.025>GPUs.

145
00:05:56.985 --> 00:05:58.405
<00:05:56.985>It <00:05:57.240>made <00:05:57.496>it <00:05:57.751>much <00:05:58.007>more <00:05:58.263>straightforward,

146
00:05:59.465 --> 00:06:03.085
<00:05:59.465>and <00:05:59.665>it's <00:05:59.865>since <00:06:00.065>developed <00:06:00.265>into <00:06:00.465>a <00:06:00.665>full <00:06:00.865>platform

147
00:06:03.145 --> 00:06:06.045
<00:06:03.145>of <00:06:03.424>different <00:06:03.705>software <00:06:03.984>frameworks, <00:06:04.265>different <00:06:04.544>tools

148
00:06:06.265 --> 00:06:07.965
<00:06:06.265>to <00:06:06.465>allow <00:06:06.664>you <00:06:06.865>to <00:06:07.065>program <00:06:07.265>at <00:06:07.465>any <00:06:07.664>level

149
00:06:07.965 --> 00:06:09.085
<00:06:07.965>which <00:06:08.217>you <00:06:08.469>are <00:06:08.721>comfortable <00:06:08.972>with.

150
00:06:09.385 --> 00:06:10.765
<00:06:09.385>So <00:06:09.633>the <00:06:09.881>very <00:06:10.130>highest <00:06:10.378>level <00:06:10.627>there,

151
00:06:10.765 --> 00:06:12.565
<00:06:10.765>we <00:06:10.998>have <00:06:11.231>the <00:06:11.465>app <00:06:11.698>applications <00:06:11.931>of <00:06:12.164>frameworks.

152
00:06:12.855 --> 00:06:15.165
<00:06:12.855>These <00:06:13.205>are <00:06:13.555>already <00:06:13.905>GPU <00:06:14.255>accelerated.

153
00:06:15.465 --> 00:06:17.085
<00:06:15.465>Uh, <00:06:15.620>so <00:06:15.776>you <00:06:15.931>don't <00:06:16.087>have <00:06:16.242>to <00:06:16.398>do <00:06:16.553>the <00:06:16.709>hard <00:06:16.864>work.

154
00:06:17.105 --> 00:06:18.485
<00:06:17.105>You <00:06:17.353>just <00:06:17.601>see <00:06:17.850>the <00:06:18.098>performance, <00:06:18.347>uh,

155
00:06:18.485 --> 00:06:19.725
<00:06:18.485>in <00:06:18.764>your, <00:06:19.043>in <00:06:19.322>your <00:06:19.601>workloads.

156
00:06:20.475 --> 00:06:22.765
<00:06:20.475>Next <00:06:20.708>level <00:06:20.941>down <00:06:21.175>is <00:06:21.408>the <00:06:21.641>accelerated <00:06:21.875>libraries.

157
00:06:22.765 --> 00:06:24.565
<00:06:22.765>So <00:06:22.965>you'll <00:06:23.164>know <00:06:23.365>from <00:06:23.565>the <00:06:23.765>world <00:06:23.965>of <00:06:24.164>CPUs,

158
00:06:24.565 --> 00:06:26.765
<00:06:24.565>you've <00:06:24.720>got <00:06:24.876>things <00:06:25.031>like <00:06:25.187>the <00:06:25.342>Intel, <00:06:25.498>MKL <00:06:25.653>and <00:06:25.809>so <00:06:25.965>on.

159
00:06:27.065 --> 00:06:29.685
<00:06:27.065>Uh, <00:06:27.240>these, <00:06:27.415>these <00:06:27.590>are <00:06:27.765>equivalent <00:06:27.940>libraries, <00:06:28.115>but <00:06:28.290>for <00:06:28.465>GPUs.

160
00:06:29.745 --> 00:06:31.885
<00:06:29.745>And <00:06:29.920>these <00:06:30.095>allow <00:06:30.270>you, <00:06:30.445>again, <00:06:30.620>a <00:06:30.795>higher <00:06:30.970>level <00:06:31.145>access

161
00:06:31.885 --> 00:06:35.325
<00:06:31.885>to <00:06:32.012>using <00:06:32.139>the <00:06:32.266>GP <00:06:32.394>without <00:06:32.521>having <00:06:32.648>to <00:06:32.775>go <00:06:32.903>into <00:06:33.030>the <00:06:33.157>details <00:06:33.284>of

162
00:06:35.325 --> 00:06:36.325
<00:06:35.325>what <00:06:35.625>the <00:06:35.925>hardware's <00:06:36.224>doing.

163
00:06:37.315 --> 00:06:39.165
<00:06:37.315>Then <00:06:37.515>of <00:06:37.715>course, <00:06:37.915>we <00:06:38.115>have <00:06:38.315>the <00:06:38.515>parallel <00:06:38.715>languages,

164
00:06:39.165 --> 00:06:41.925
<00:06:39.165>and <00:06:39.292>we <00:06:39.419>started <00:06:39.546>out <00:06:39.674>with <00:06:39.801>c <00:06:39.928>plus <00:06:40.055>plus, <00:06:40.183>then <00:06:40.310>we <00:06:40.437>got <00:06:40.565>fortran,

165
00:06:41.985 --> 00:06:43.565
<00:06:41.985>and <00:06:42.185>then <00:06:42.385>now <00:06:42.585>we <00:06:42.785>have <00:06:42.985>Python <00:06:43.185>as <00:06:43.385>well,

166
00:06:43.905 --> 00:06:45.245
<00:06:43.905>but <00:06:44.206>the <00:06:44.508>various <00:06:44.809>other <00:06:45.111>languages

167
00:06:45.245 --> 00:06:46.925
<00:06:45.245>with <00:06:45.525>various <00:06:45.805>levels <00:06:46.085>of <00:06:46.365>support <00:06:46.645>available.

168
00:06:47.665 --> 00:06:49.365
<00:06:47.665>And <00:06:47.840>then <00:06:48.015>we <00:06:48.190>get <00:06:48.365>down <00:06:48.540>to <00:06:48.715>the <00:06:48.890>compiler <00:06:49.065>level.

169
00:06:49.385 --> 00:06:51.245
<00:06:49.385>And <00:06:49.525>if <00:06:49.664>you <00:06:49.805>are <00:06:49.945>of <00:06:50.085>the <00:06:50.224>type <00:06:50.365>of <00:06:50.505>person <00:06:50.645>who <00:06:50.784>likes

170
00:06:51.245 --> 00:06:52.645
<00:06:51.245>to <00:06:51.560>go <00:06:51.875>into <00:06:52.190>compiler <00:06:52.505>technology,

171
00:06:52.705 --> 00:06:55.525
<00:06:52.705>you <00:06:52.860>can <00:06:53.016>actually <00:06:53.171>write <00:06:53.327>your <00:06:53.482>own <00:06:53.638>compiler <00:06:53.793>for <00:06:53.949>qda <00:06:54.104>software.

172
00:06:56.145 --> 00:06:58.245
<00:06:56.145>Um, <00:06:56.611>not <00:06:57.078>my <00:06:57.544>bag,

173
00:06:58.245 --> 00:06:59.205
<00:06:58.245>but <00:06:58.417>if <00:06:58.590>that's <00:06:58.763>the <00:06:58.936>thing <00:06:59.109>that

174
00:06:59.205 --> 00:07:00.605
<00:06:59.205>excites <00:06:59.414>you, <00:06:59.625>you <00:06:59.835>can <00:07:00.045>even <00:07:00.255>do <00:07:00.465>that.

175
00:07:01.425 --> 00:07:04.005
<00:07:01.425>But <00:07:01.565>the <00:07:01.705>idea <00:07:01.845>of <00:07:01.985>all <00:07:02.125>this <00:07:02.265>is <00:07:02.405>allow <00:07:02.545>you <00:07:02.685>as <00:07:02.825>developers

176
00:07:04.005 --> 00:07:06.885
<00:07:04.005>to <00:07:04.160>access <00:07:04.316>GPUs <00:07:04.471>at <00:07:04.627>the <00:07:04.782>level <00:07:04.938>you <00:07:05.093>are <00:07:05.249>comfortable <00:07:05.405>with.

177
00:07:06.905 --> 00:07:08.405
<00:07:06.905>And <00:07:07.073>we're <00:07:07.242>looking <00:07:07.411>a <00:07:07.580>bit <00:07:07.748>more <00:07:07.917>detail <00:07:08.086>out <00:07:08.255>that.

178
00:07:09.145 --> 00:07:13.905
<00:07:09.145>So <00:07:09.272>diving <00:07:09.399>down <00:07:09.526>a <00:07:09.654>bit <00:07:09.781>further, <00:07:09.908>uh, <00:07:10.035>here's <00:07:10.163>a <00:07:10.290>sort <00:07:10.417>of <00:07:10.544>snapshot

179
00:07:13.905 --> 00:07:16.305
<00:07:13.905>of, <00:07:14.184>uh, <00:07:14.465>the <00:07:14.744>qda <00:07:15.025>Python <00:07:15.304>ecosystem.

180
00:07:16.805 --> 00:07:19.505
<00:07:16.805>And <00:07:16.960>it <00:07:17.116>goes <00:07:17.271>from <00:07:17.427>the <00:07:17.582>top, <00:07:17.738>the, <00:07:17.893>uh, <00:07:18.049>frameworks, <00:07:18.205>uh,

181
00:07:19.505 --> 00:07:22.025
<00:07:19.505>and <00:07:19.680>the <00:07:19.855>domain <00:07:20.030>specific <00:07:20.205>languages, <00:07:20.380>all <00:07:20.555>the <00:07:20.730>way <00:07:20.905>down

182
00:07:22.025 --> 00:07:23.145
<00:07:22.025>to <00:07:22.361>the <00:07:22.697>runtime <00:07:23.032>stack.

183
00:07:23.445 --> 00:07:25.905
<00:07:23.445>And <00:07:23.620>at <00:07:23.795>each <00:07:23.969>level, <00:07:24.145>we <00:07:24.320>have <00:07:24.495>various <00:07:24.670>different <00:07:24.844>tools,

184
00:07:25.925 --> 00:07:27.345
<00:07:25.925>and <00:07:26.084>I, <00:07:26.244>I'll <00:07:26.404>touch <00:07:26.564>on <00:07:26.723>some <00:07:26.883>of <00:07:27.043>these <00:07:27.203>today.

185
00:07:27.885 --> 00:07:29.945
<00:07:27.885>Um, <00:07:28.040>if <00:07:28.196>you <00:07:28.351>look <00:07:28.507>at <00:07:28.662>my <00:07:28.818>talk <00:07:28.973>from <00:07:29.129>last <00:07:29.284>year,

186
00:07:30.065 --> 00:07:31.465
<00:07:30.065>I <00:07:30.317>focused <00:07:30.569>a <00:07:30.820>lot <00:07:31.073>on <00:07:31.325>number.

187
00:07:31.805 --> 00:07:33.705
<00:07:31.805>Uh, <00:07:31.980>I'm <00:07:32.155>not <00:07:32.330>gonna <00:07:32.505>particularly <00:07:32.680>focus <00:07:32.855>on <00:07:33.030>that <00:07:33.205>year,

188
00:07:33.725 --> 00:07:35.865
<00:07:33.725>but, <00:07:33.852>uh, <00:07:33.979>that <00:07:34.106>is <00:07:34.234>one <00:07:34.361>of <00:07:34.488>the <00:07:34.615>ways <00:07:34.743>that <00:07:34.870>you <00:07:34.997>can <00:07:35.125>program

189
00:07:35.885 --> 00:07:37.745
<00:07:35.885>for <00:07:36.235>GPUs <00:07:36.585>in <00:07:36.935>Python, <00:07:37.284>uh,

190
00:07:37.745 --> 00:07:40.265
<00:07:37.745>and <00:07:37.872>it <00:07:37.999>allows <00:07:38.126>you <00:07:38.254>a <00:07:38.381>very <00:07:38.508>nice, <00:07:38.635>uh, <00:07:38.763>way <00:07:38.890>of <00:07:39.017>starting <00:07:39.145>out.

191
00:07:40.265 --> 00:07:42.465
<00:07:40.265>So <00:07:40.420>that's <00:07:40.576>highlighted <00:07:40.731>there <00:07:40.887>on, <00:07:41.042>on, <00:07:41.198>on <00:07:41.353>one <00:07:41.509>of <00:07:41.664>these,

192
00:07:42.525 --> 00:07:43.785
<00:07:42.525>uh, <00:07:43.092>these <00:07:43.659>tabs.

193
00:07:43.965 --> 00:07:45.465
<00:07:43.965>But <00:07:44.115>as <00:07:44.265>you <00:07:44.415>can <00:07:44.565>see, <00:07:44.715>there's <00:07:44.865>a <00:07:45.015>lot <00:07:45.165>of <00:07:45.315>different

194
00:07:46.135 --> 00:07:48.025
<00:07:46.135>working <00:07:46.414>parts <00:07:46.695>here <00:07:46.974>that <00:07:47.255>we <00:07:47.534>need

195
00:07:48.025 --> 00:07:49.065
<00:07:48.025>to <00:07:48.181>make <00:07:48.337>sure <00:07:48.493>they <00:07:48.649>all <00:07:48.805>work <00:07:48.961>together.

196
00:07:49.205 --> 00:07:51.785
<00:07:49.205>And <00:07:49.360>that's <00:07:49.516>our <00:07:49.671>main <00:07:49.827>strategy <00:07:49.982>is <00:07:50.138>to <00:07:50.293>make <00:07:50.449>sure <00:07:50.604>that

197
00:07:52.745 --> 00:07:54.625
<00:07:52.745>historically, <00:07:52.900>a <00:07:53.056>lot <00:07:53.211>of <00:07:53.367>these <00:07:53.522>parts <00:07:53.678>have <00:07:53.833>come <00:07:53.989>from <00:07:54.145>different

198
00:07:54.685 --> 00:07:56.025
<00:07:54.685>worlds <00:07:55.087>and <00:07:55.489>different <00:07:55.890>times,

199
00:07:56.405 --> 00:07:58.345
<00:07:56.405>and <00:07:56.560>we're <00:07:56.716>trying <00:07:56.871>to <00:07:57.027>bring <00:07:57.182>them <00:07:57.338>all <00:07:57.493>together <00:07:57.649>that <00:07:57.804>there's,

200
00:07:58.345 --> 00:07:59.785
<00:07:58.345>that <00:07:58.777>they're <00:07:59.209>all <00:07:59.640>interoperable.

201
00:08:00.085 --> 00:08:02.225
<00:08:00.085>So <00:08:00.318>you <00:08:00.551>don't <00:08:00.784>need <00:08:01.018>to <00:08:01.251>specifically <00:08:01.484>copy

202
00:08:02.295 --> 00:08:03.545
<00:08:02.295>code <00:08:02.520>from <00:08:02.745>one <00:08:02.970>place <00:08:03.195>to <00:08:03.420>another.

203
00:08:03.685 --> 00:08:07.305
<00:08:03.685>You <00:08:03.840>can <00:08:03.996>just <00:08:04.151>pass <00:08:04.307>your <00:08:04.462>array <00:08:04.618>to <00:08:04.773>whichever, <00:08:04.929>uh, <00:08:05.085>library

204
00:08:07.405 --> 00:08:08.505
<00:08:07.405>or <00:08:07.734>framework <00:08:08.065>you're <00:08:08.395>using,

205
00:08:08.565 --> 00:08:10.905
<00:08:08.565>and <00:08:08.720>it <00:08:08.876>will <00:08:09.031>understand <00:08:09.187>that's <00:08:09.342>an <00:08:09.498>array <00:08:09.653>on <00:08:09.809>the <00:08:09.965>GPU

206
00:08:11.005 --> 00:08:12.505
<00:08:11.005>and <00:08:11.197>we'll <00:08:11.390>know <00:08:11.583>how <00:08:11.776>to <00:08:11.969>interact <00:08:12.162>with <00:08:12.355>it.

207
00:08:12.505 --> 00:08:14.665
<00:08:12.505>And <00:08:12.645>that's <00:08:12.784>one <00:08:12.925>of <00:08:13.065>the <00:08:13.205>key <00:08:13.344>goals <00:08:13.485>of <00:08:13.625>what <00:08:13.765>we're <00:08:13.905>doing.

208
00:08:18.165 --> 00:08:20.705
<00:08:18.165>So <00:08:18.340>starting <00:08:18.515>at <00:08:18.690>the <00:08:18.865>top <00:08:19.040>level, <00:08:19.215>um, <00:08:19.390>I <00:08:19.565>wanted

209
00:08:20.705 --> 00:08:22.185
<00:08:20.705>to <00:08:20.926>highlight <00:08:21.149>just <00:08:21.371>some <00:08:21.593>of <00:08:21.815>the <00:08:22.037>frameworks

210
00:08:22.185 --> 00:08:23.585
<00:08:22.185>that <00:08:22.500>are <00:08:22.815>available <00:08:23.130>for <00:08:23.445>programming.

211
00:08:23.605 --> 00:08:25.585
<00:08:23.605>Uh, <00:08:23.805>uh, <00:08:24.005>uh, <00:08:24.205>well, <00:08:24.405>making <00:08:24.605>use <00:08:24.805>of <00:08:25.005>GPUs.

212
00:08:25.965 --> 00:08:27.785
<00:08:25.965>And <00:08:26.244>again, <00:08:26.525>these <00:08:26.804>abstract <00:08:27.085>away <00:08:27.364>the

213
00:08:27.785 --> 00:08:29.145
<00:08:27.785>underlying <00:08:28.193>hardware <00:08:28.601>for <00:08:29.009>you.

214
00:08:29.885 --> 00:08:32.305
<00:08:29.885>Of <00:08:30.040>course, <00:08:30.196>if <00:08:30.351>you're <00:08:30.507>working <00:08:30.662>in <00:08:30.818>deep <00:08:30.973>learning, <00:08:31.129>pie, <00:08:31.284>torch,

215
00:08:32.395 --> 00:08:35.025
<00:08:32.395>TensorFlow, <00:08:32.628>all <00:08:32.861>those <00:08:33.095>frameworks <00:08:33.328>have <00:08:33.561>GPU <00:08:33.794>accelerated

216
00:08:35.025 --> 00:08:36.545
<00:08:35.025>versions, <00:08:35.220>so <00:08:35.415>you're <00:08:35.611>ready <00:08:35.806>to <00:08:36.002>go <00:08:36.197>with <00:08:36.392>those.

217
00:08:37.085 --> 00:08:39.345
<00:08:37.085>We <00:08:37.285>also <00:08:37.485>have <00:08:37.685>some <00:08:37.885>more <00:08:38.085>domain <00:08:38.285>specific <00:08:38.485>frameworks,

218
00:08:39.345 --> 00:08:40.665
<00:08:39.345>which <00:08:39.543>allow <00:08:39.741>you <00:08:39.938>to <00:08:40.136>do <00:08:40.334>certain <00:08:40.533>things.

219
00:08:40.665 --> 00:08:43.305
<00:08:40.664>So <00:08:40.804>Q <00:08:40.944>op <00:08:41.084>is <00:08:41.224>one <00:08:41.365>I'd <00:08:41.505>highlight, <00:08:41.645>uh, <00:08:41.784>for <00:08:41.924>doing, <00:08:42.064>uh,

220
00:08:43.305 --> 00:08:47.145
<00:08:43.304>optimization <00:08:43.505>of, <00:08:43.704>um, <00:08:43.905>logistics, <00:08:44.104>uh, <00:08:44.305>and <00:08:44.505>so <00:08:44.704>on.

221
00:08:47.145 --> 00:08:49.465
<00:08:47.145>And <00:08:47.285>we've <00:08:47.425>got <00:08:47.564>a <00:08:47.704>lovely <00:08:47.845>video <00:08:47.985>of, <00:08:48.125>uh, <00:08:48.265>robots <00:08:48.405>running <00:08:48.545>around,

222
00:08:49.465 --> 00:08:51.825
<00:08:49.465>uh, <00:08:49.665>an <00:08:49.865>Amazon <00:08:50.065>warehouse, <00:08:50.265>uh, <00:08:50.465>using <00:08:50.665>Q <00:08:50.865>Ops.

223
00:08:51.995 --> 00:08:53.465
<00:08:51.995>We've <00:08:52.259>got <00:08:52.524>things <00:08:52.788>like <00:08:53.053>Physics <00:08:53.318>nemo.

224
00:08:53.465 --> 00:08:54.625
<00:08:53.465>So <00:08:53.726>my <00:08:53.987>background <00:08:54.248>is <00:08:54.509>high,

225
00:08:54.625 --> 00:08:56.370
<00:08:54.625>perform <00:08:54.905>high <00:08:55.185>performance <00:08:55.465>computing <00:08:55.745>and <00:08:56.025>physics.

226
00:08:56.505 --> 00:08:59.045
<00:08:56.505>So <00:08:56.680>that's <00:08:56.855>something <00:08:57.030>I'm <00:08:57.205>interested <00:08:57.380>in <00:08:57.555>that <00:08:57.730>allows <00:08:57.905>us

227
00:08:59.045 --> 00:09:01.205
<00:08:59.045>to <00:08:59.278>do <00:08:59.511>physics <00:08:59.745>informed, <00:08:59.978>uh, <00:09:00.211>neural <00:09:00.444>networks.

228
00:09:01.625 --> 00:09:05.285
<00:09:01.625>So <00:09:01.752>instead <00:09:01.879>of <00:09:02.006>using, <00:09:02.134>uh, <00:09:02.261>pictures <00:09:02.388>of <00:09:02.515>cats <00:09:02.643>to <00:09:02.770>train <00:09:02.897>our <00:09:03.025>ai,

229
00:09:05.305 --> 00:09:06.885
<00:09:05.305>we <00:09:05.584>use <00:09:05.864>the <00:09:06.145>equations <00:09:06.425>of <00:09:06.704>physics

230
00:09:07.065 --> 00:09:08.845
<00:09:07.065>and <00:09:07.345>experimental <00:09:07.625>data <00:09:07.905>to <00:09:08.185>train <00:09:08.465>them.

231
00:09:09.185 --> 00:09:10.525
<00:09:09.185>So <00:09:09.335>this <00:09:09.486>is <00:09:09.637>just <00:09:09.788>to <00:09:09.938>give <00:09:10.089>you <00:09:10.240>an <00:09:10.391>idea

232
00:09:10.525 --> 00:09:11.605
<00:09:10.525>of <00:09:10.719>some <00:09:10.913>of <00:09:11.108>the <00:09:11.302>things <00:09:11.497>available.

233
00:09:12.365 --> 00:09:14.365
<00:09:12.365>Anything <00:09:12.598>green <00:09:12.831>and <00:09:13.065>underscored <00:09:13.298>is <00:09:13.531>a <00:09:13.765>link.

234
00:09:14.625 --> 00:09:17.565
<00:09:14.625>Uh, <00:09:14.752>so <00:09:14.879>again, <00:09:15.006>get <00:09:15.134>a <00:09:15.261>PDF <00:09:15.388>of <00:09:15.515>the <00:09:15.643>slides, <00:09:15.770>if <00:09:15.897>there's <00:09:16.025>any

235
00:09:17.565 --> 00:09:19.485
<00:09:17.565>of <00:09:17.720>these, <00:09:17.876>which, <00:09:18.031>uh, <00:09:18.187>you <00:09:18.342>think <00:09:18.498>are <00:09:18.653>more <00:09:18.809>in, <00:09:18.965>uh,

236
00:09:19.505 --> 00:09:21.045
<00:09:19.505>of <00:09:19.736>more <00:09:19.967>interest <00:09:20.198>to <00:09:20.429>you <00:09:20.660>after <00:09:20.891>today.

237
00:09:23.705 --> 00:09:25.645
<00:09:23.705>Now, <00:09:24.171>rapid, <00:09:24.638>uh, <00:09:25.105>again,

238
00:09:25.725 --> 00:09:27.365
<00:09:25.725>I <00:09:25.865>went <00:09:26.005>in <00:09:26.145>a <00:09:26.285>bit <00:09:26.425>more <00:09:26.565>detail <00:09:26.705>on <00:09:26.845>this <00:09:26.985>last <00:09:27.125>year,

239
00:09:27.365 --> 00:09:28.565
<00:09:27.365>but <00:09:27.581>I <00:09:27.797>just <00:09:28.013>wanted <00:09:28.229>to <00:09:28.445>highlight

240
00:09:28.565 --> 00:09:31.525
<00:09:28.565>and <00:09:28.765>again, <00:09:28.965>rapid <00:09:29.165>to <00:09:29.365>team <00:09:29.565>the <00:09:29.765>data <00:09:29.965>scientists.

241
00:09:31.785 --> 00:09:34.125
<00:09:31.785>So <00:09:31.959>people <00:09:32.135>who <00:09:32.310>use <00:09:32.485>things <00:09:32.660>like <00:09:32.834>psychic <00:09:33.010>learn <00:09:33.185>or,

242
00:09:34.145 --> 00:09:35.405
<00:09:34.145>or <00:09:34.712>pandas, <00:09:35.279>uh,

243
00:09:35.405 --> 00:09:37.885
<00:09:35.405>and <00:09:35.605>it's <00:09:35.805>basically <00:09:36.005>GPU <00:09:36.204>accelerated <00:09:36.405>versions <00:09:36.605>of <00:09:36.805>those.

244
00:09:38.505 --> 00:09:40.285
<00:09:38.505>Now <00:09:38.785>you <00:09:39.064>can <00:09:39.345>just <00:09:39.625>import, <00:09:39.905>uh,

245
00:09:40.285 --> 00:09:42.485
<00:09:40.285>the <00:09:40.485>Rapids <00:09:40.685>libraries <00:09:40.885>into <00:09:41.084>your <00:09:41.285>Python <00:09:41.485>code <00:09:41.685>directly,

246
00:09:42.485 --> 00:09:44.325
<00:09:42.485>but <00:09:42.660>we've <00:09:42.835>now <00:09:43.010>made <00:09:43.185>it <00:09:43.360>that <00:09:43.535>you <00:09:43.710>can <00:09:43.885>do,

247
00:09:44.565 --> 00:09:45.765
<00:09:44.565>actually <00:09:44.719>do <00:09:44.873>it <00:09:45.027>just <00:09:45.182>from <00:09:45.336>the <00:09:45.490>command <00:09:45.645>line.

248
00:09:45.945 --> 00:09:48.165
<00:09:45.945>Uh, <00:09:46.100>you <00:09:46.256>just <00:09:46.411>add <00:09:46.567>a <00:09:46.722>flag <00:09:46.878>to <00:09:47.033>your <00:09:47.189>Python <00:09:47.345>command

249
00:09:48.465 --> 00:09:50.645
<00:09:48.465>or <00:09:48.665>add <00:09:48.865>an <00:09:49.065>extension <00:09:49.265>to <00:09:49.465>your <00:09:49.665>Jupyter <00:09:49.865>Notebook,

250
00:09:50.865 --> 00:09:53.405
<00:09:50.865>and <00:09:50.981>you <00:09:51.098>don't <00:09:51.215>need <00:09:51.331>to <00:09:51.448>make <00:09:51.565>any <00:09:51.681>changes <00:09:51.798>at <00:09:51.915>all <00:09:52.031>to <00:09:52.148>your <00:09:52.265>code.

251
00:09:53.905 --> 00:09:56.325
<00:09:53.905>Uh, <00:09:54.021>and <00:09:54.138>to <00:09:54.255>give <00:09:54.371>you <00:09:54.488>an <00:09:54.605>idea <00:09:54.721>of <00:09:54.838>why <00:09:54.954>people <00:09:55.071>are <00:09:55.188>using <00:09:55.305>GPUs,

252
00:09:56.355 --> 00:09:58.445
<00:09:56.355>I've <00:09:56.530>included <00:09:56.705>this <00:09:56.880>graph <00:09:57.055>to <00:09:57.230>the <00:09:57.405>top <00:09:57.580>left <00:09:57.755>here.

253
00:09:58.865 --> 00:10:01.365
<00:09:58.865>Um, <00:09:59.020>so <00:09:59.176>that's <00:09:59.331>looking <00:09:59.487>at, <00:09:59.642>uh, <00:09:59.798>a <00:09:59.953>couple <00:10:00.109>of <00:10:00.265>database,

254
00:10:01.545 --> 00:10:02.605
<00:10:01.545>uh, <00:10:02.499>benchmarks.

255
00:10:03.065 --> 00:10:05.685
<00:10:03.065>Uh, <00:10:03.192>the <00:10:03.319>top <00:10:03.446>one <00:10:03.574>on <00:10:03.701>A <00:10:03.828>CPU, <00:10:03.955>it <00:10:04.083>takes <00:10:04.210>about <00:10:04.337>five <00:10:04.465>minutes,

256
00:10:05.685 --> 00:10:08.725
<00:10:05.685>30 <00:10:05.840>seconds <00:10:05.996>on <00:10:06.151>A <00:10:06.307>GPU, <00:10:06.462>it <00:10:06.618>takes <00:10:06.773>one <00:10:06.929>second <00:10:07.084>notice.

257
00:10:08.915 --> 00:10:11.485
<00:10:08.915>It's <00:10:09.089>a, <00:10:09.265>it's <00:10:09.439>a <00:10:09.615>exponential <00:10:09.790>scale <00:10:09.964>on <00:10:10.140>that <00:10:10.314>graph.

258
00:10:11.795 --> 00:10:13.925
<00:10:11.795>Similarly, <00:10:11.995>for <00:10:12.194>the, <00:10:12.395>uh, <00:10:12.594>for <00:10:12.795>the <00:10:12.995>group <00:10:13.194>by,

259
00:10:14.065 --> 00:10:16.205
<00:10:14.065>it <00:10:14.240>goes <00:10:14.415>from <00:10:14.590>four <00:10:14.765>minutes, <00:10:14.940>45 <00:10:15.115>to <00:10:15.290>two <00:10:15.465>seconds,

260
00:10:16.505 --> 00:10:18.085
<00:10:16.505>and <00:10:16.785>that's <00:10:17.064>with <00:10:17.345>zero <00:10:17.625>code <00:10:17.905>changes,

261
00:10:18.555 --> 00:10:20.405
<00:10:18.555>just <00:10:18.905>changing <00:10:19.255>your <00:10:19.604>Python <00:10:19.954>command.

262
00:10:20.745 --> 00:10:22.245
<00:10:20.745>So <00:10:20.913>I <00:10:21.082>think <00:10:21.251>that's <00:10:21.420>a, <00:10:21.588>that's <00:10:21.757>a, <00:10:21.926>you <00:10:22.095>know,

263
00:10:22.245 --> 00:10:23.605
<00:10:22.245>if <00:10:22.398>you're <00:10:22.551>working <00:10:22.704>in <00:10:22.857>the <00:10:23.010>field <00:10:23.163>of <00:10:23.316>data <00:10:23.469>science,

264
00:10:23.605 --> 00:10:25.165
<00:10:23.605>that <00:10:23.805>should <00:10:24.005>be <00:10:24.205>of <00:10:24.405>great <00:10:24.605>interest <00:10:24.805>to <00:10:25.005>you.

265
00:10:27.185 --> 00:10:29.325
<00:10:27.185>Um, <00:10:27.535>something <00:10:27.885>else <00:10:28.234>you <00:10:28.584>have

266
00:10:29.325 --> 00:10:31.485
<00:10:29.325>to <00:10:29.500>think <00:10:29.675>about <00:10:29.850>when <00:10:30.025>using <00:10:30.200>GPUs <00:10:30.375>is <00:10:30.550>the <00:10:30.725>movement

267
00:10:31.485 --> 00:10:32.685
<00:10:31.485>of <00:10:31.755>data <00:10:32.025>around <00:10:32.295>the <00:10:32.564>system.

268
00:10:33.105 --> 00:10:36.405
<00:10:33.105>Now, <00:10:33.260>typically, <00:10:33.416>uh, <00:10:33.571>data's <00:10:33.727>on <00:10:33.882>the <00:10:34.038>CPU, <00:10:34.193>you <00:10:34.349>then <00:10:34.505>have

269
00:10:36.405 --> 00:10:38.005
<00:10:36.405>to <00:10:36.638>move <00:10:36.871>it <00:10:37.105>across <00:10:37.338>to <00:10:37.571>the <00:10:37.805>GPU.

270
00:10:38.315 --> 00:10:41.325
<00:10:38.315>Then <00:10:38.470>you, <00:10:38.626>uh, <00:10:38.781>the <00:10:38.937>CPU <00:10:39.092>reads <00:10:39.248>something <00:10:39.403>from <00:10:39.559>the <00:10:39.715>database

271
00:10:41.325 --> 00:10:44.005
<00:10:41.325>system <00:10:41.480>that <00:10:41.636>gets <00:10:41.791>moved <00:10:41.947>back <00:10:42.102>across <00:10:42.258>to <00:10:42.413>the <00:10:42.569>GPU, <00:10:42.725>back

272
00:10:44.005 --> 00:10:45.125
<00:10:44.005>to <00:10:44.206>the <00:10:44.408>CPU <00:10:44.609>and <00:10:44.811>so <00:10:45.013>on.

273
00:10:45.585 --> 00:10:47.325
<00:10:45.585>If <00:10:45.818>you <00:10:46.051>make <00:10:46.285>use <00:10:46.518>of <00:10:46.751>rapids, <00:10:46.985>uh,

274
00:10:47.385 --> 00:10:49.245
<00:10:47.385>and <00:10:47.735>in <00:10:48.085>particular <00:10:48.435>the <00:10:48.785>QDF,

275
00:10:49.245 --> 00:10:52.045
<00:10:49.245>which <00:10:49.478>is <00:10:49.711>the <00:10:49.945>pandas <00:10:50.178>like <00:10:50.411>framework, <00:10:50.645>uh,

276
00:10:52.105 --> 00:10:53.605
<00:10:52.105>you <00:10:52.442>can <00:10:52.780>actually <00:10:53.117>bypass <00:10:53.455>that

277
00:10:53.665 --> 00:10:57.445
<00:10:53.665>and <00:10:53.805>you <00:10:53.944>can <00:10:54.084>directly <00:10:54.224>via <00:10:54.365>the <00:10:54.505>PCIE <00:10:54.645>bus <00:10:54.785>connect <00:10:54.925>the <00:10:55.064>GPU

278
00:10:57.445 --> 00:10:58.525
<00:10:57.445>to <00:10:57.769>the <00:10:58.093>database <00:10:58.417>itself,

279
00:10:59.045 --> 00:11:00.765
<00:10:59.045>assuming <00:10:59.245>your <00:10:59.444>service <00:10:59.645>set <00:10:59.844>up <00:11:00.045>to <00:11:00.245>enable <00:11:00.444>this.

280
00:11:01.185 --> 00:11:04.125
<00:11:01.185>Uh, <00:11:01.324>and <00:11:01.464>it <00:11:01.604>basically <00:11:01.744>means <00:11:01.885>we <00:11:02.025>can <00:11:02.165>reduce, <00:11:02.305>again, <00:11:02.444>the <00:11:02.584>time

281
00:11:04.145 --> 00:11:06.925
<00:11:04.145>for <00:11:04.300>managing <00:11:04.456>these <00:11:04.611>large <00:11:04.767>data <00:11:04.922>sets <00:11:05.078>for <00:11:05.233>reading <00:11:05.389>them <00:11:05.545>in.

282
00:11:07.185 --> 00:11:09.565
<00:11:07.185>And <00:11:07.359>so <00:11:07.535>we <00:11:07.709>can <00:11:07.885>start <00:11:08.060>doing <00:11:08.234>our <00:11:08.410>data <00:11:08.584>analysis

283
00:11:09.565 --> 00:11:10.645
<00:11:09.565>in <00:11:09.808>a <00:11:10.051>much <00:11:10.294>quicker <00:11:10.537>fashion.

284
00:11:14.165 --> 00:11:18.905
<00:11:14.165>So <00:11:14.339>if <00:11:14.515>I <00:11:14.689>was <00:11:14.865>programming, <00:11:15.040>uh, <00:11:15.214>for <00:11:15.390>for <00:11:15.564>GPU

285
00:11:18.905 --> 00:11:21.345
<00:11:18.905>for <00:11:19.079>the <00:11:19.255>first <00:11:19.430>time, <00:11:19.605>I'd <00:11:19.780>probably <00:11:19.954>do <00:11:20.130>something, <00:11:20.305>uh,

286
00:11:21.555 --> 00:11:23.625
<00:11:21.555>which <00:11:21.788>looks <00:11:22.021>like <00:11:22.255>what <00:11:22.488>I <00:11:22.721>already <00:11:22.954>use.

287
00:11:23.885 --> 00:11:26.345
<00:11:23.885>And <00:11:24.025>in <00:11:24.165>the <00:11:24.305>world <00:11:24.444>of <00:11:24.585>Python, <00:11:24.725>if <00:11:24.865>you <00:11:25.005>do <00:11:25.145>numerical <00:11:25.285>uh,

288
00:11:26.345 --> 00:11:29.545
<00:11:26.345>calculations, <00:11:26.485>num <00:11:26.625>PI <00:11:26.765>will <00:11:26.905>of <00:11:27.045>course <00:11:27.185>be <00:11:27.325>very <00:11:27.465>familiar <00:11:27.605>to <00:11:27.745>you.

289
00:11:30.085 --> 00:11:33.425
<00:11:30.085>So <00:11:30.260>QPI <00:11:30.435>is <00:11:30.610>designed <00:11:30.785>as <00:11:30.960>a <00:11:31.135>drop <00:11:31.310>in, <00:11:31.485>uh,

290
00:11:33.495 --> 00:11:35.105
<00:11:33.495>replacement <00:11:33.961>for <00:11:34.428>num <00:11:34.895>pi.

291
00:11:35.645 --> 00:11:38.105
<00:11:35.645>The <00:11:35.845>idea <00:11:36.045>being, <00:11:36.245>uh, <00:11:36.444>that <00:11:36.645>you <00:11:36.845>don't <00:11:37.045>have

292
00:11:38.105 --> 00:11:40.025
<00:11:38.105>to <00:11:38.260>make <00:11:38.416>a <00:11:38.571>huge <00:11:38.727>amount <00:11:38.882>of <00:11:39.038>change <00:11:39.193>to <00:11:39.349>your <00:11:39.505>code.

293
00:11:40.245 --> 00:11:42.105
<00:11:40.245>Uh, <00:11:40.478>and <00:11:40.711>this <00:11:40.945>example <00:11:41.178>hopefully <00:11:41.411>illustrates <00:11:41.645>that.

294
00:11:42.165 --> 00:11:46.265
<00:11:42.165>So <00:11:42.339>we've <00:11:42.515>got <00:11:42.689>a, <00:11:42.865>a <00:11:43.040>single <00:11:43.214>position, <00:11:43.390>uh, <00:11:43.564>multiplication

295
00:11:46.265 --> 00:11:47.945
<00:11:46.265>of <00:11:46.498>a <00:11:46.731>vector <00:11:46.965>by <00:11:47.198>a <00:11:47.431>scaler <00:11:47.665>value.

296
00:11:48.255 --> 00:11:49.385
<00:11:48.255>Then <00:11:48.509>add <00:11:48.763>another <00:11:49.017>a <00:11:49.271>vector.

297
00:11:49.525 --> 00:11:52.585
<00:11:49.525>So <00:11:49.652>Sax <00:11:49.779>P <00:11:49.906>is, <00:11:50.034>is <00:11:50.161>the, <00:11:50.288>uh, <00:11:50.415>what <00:11:50.543>we <00:11:50.670>call <00:11:50.797>it, <00:11:50.925>um,

298
00:11:52.805 --> 00:11:55.365
<00:11:52.805>on <00:11:52.932>the <00:11:53.059>left <00:11:53.186>hand <00:11:53.314>side <00:11:53.441>here, <00:11:53.568>you <00:11:53.695>can <00:11:53.823>see <00:11:53.950>the <00:11:54.077>CPU <00:11:54.204>version.

299
00:11:56.185 --> 00:11:59.645
<00:11:56.185>Um, <00:11:56.301>so <00:11:56.418>we <00:11:56.535>import <00:11:56.651>NumPy, <00:11:56.768>we <00:11:56.885>set <00:11:57.001>up <00:11:57.118>a <00:11:57.234>random <00:11:57.351>array <00:11:57.468>of <00:11:57.584>vectors,

300
00:11:59.865 --> 00:12:02.805
<00:11:59.865>um, <00:12:00.065>and <00:12:00.265>then, <00:12:00.465>uh, <00:12:00.665>we <00:12:00.865>perform <00:12:01.065>our <00:12:01.265>calculation

301
00:12:03.265 --> 00:12:05.165
<00:12:03.265>to <00:12:03.545>execute <00:12:03.824>that <00:12:04.105>on <00:12:04.385>the <00:12:04.665>GPU.

302
00:12:05.825 --> 00:12:09.245
<00:12:05.825>All <00:12:05.965>we <00:12:06.105>have <00:12:06.245>to <00:12:06.385>do <00:12:06.525>is <00:12:06.665>import <00:12:06.805>qpi <00:12:06.945>a <00:12:07.085>CCP <00:12:07.225>here,

303
00:12:09.265 --> 00:12:11.845
<00:12:09.265>and <00:12:09.420>you <00:12:09.576>can <00:12:09.731>see <00:12:09.887>it's <00:12:10.042>a <00:12:10.198>direct <00:12:10.353>replacement <00:12:10.509>for <00:12:10.665>the,

304
00:12:11.845 --> 00:12:13.085
<00:12:11.845>uh, <00:12:12.217>the <00:12:12.589>NumPy <00:12:12.961>code.

305
00:12:13.635 --> 00:12:15.245
<00:12:13.635>Okay? <00:12:13.868>It's <00:12:14.101>a <00:12:14.335>very <00:12:14.568>straightforward <00:12:14.801>to <00:12:15.035>do,

306
00:12:15.665 --> 00:12:18.565
<00:12:15.665>you <00:12:15.820>can <00:12:15.976>see <00:12:16.131>it's <00:12:16.287>called <00:12:16.442>a <00:12:16.598>random <00:12:16.753>function <00:12:16.909>generator <00:12:17.064>there,

307
00:12:18.565 --> 00:12:21.725
<00:12:18.565>that <00:12:18.681>is <00:12:18.798>actually <00:12:18.915>making <00:12:19.031>use <00:12:19.148>of <00:12:19.265>Q <00:12:19.381>ran, <00:12:19.498>which <00:12:19.615>is <00:12:19.731>one <00:12:19.848>of <00:12:19.965>our,

308
00:12:21.945 --> 00:12:25.045
<00:12:21.945>uh, <00:12:22.120>q <00:12:22.295>to <00:12:22.470>accelerated <00:12:22.645>libraries <00:12:22.820>for <00:12:22.995>random <00:12:23.170>number <00:12:23.345>generation.

309
00:12:25.385 --> 00:12:27.685
<00:12:25.385>So <00:12:25.525>again, <00:12:25.665>it's <00:12:25.805>a <00:12:25.944>nice <00:12:26.085>way <00:12:26.225>to <00:12:26.365>get <00:12:26.505>access <00:12:26.645>to <00:12:26.785>some

310
00:12:27.685 --> 00:12:30.205
<00:12:27.685>of <00:12:27.885>our <00:12:28.084>higher <00:12:28.285>level <00:12:28.484>libraries, <00:12:28.685>uh, <00:12:28.885>without <00:12:29.084>having

311
00:12:30.325 --> 00:12:32.605
<00:12:30.325>to <00:12:30.558>go <00:12:30.791>down <00:12:31.025>into <00:12:31.258>writing <00:12:31.491>qda <00:12:31.725>yourself.

312
00:12:33.515 --> 00:12:34.735
<00:12:33.515>And <00:12:33.734>you <00:12:33.954>can <00:12:34.173>try <00:12:34.393>this <00:12:34.613>out,

313
00:12:34.735 --> 00:12:36.055
<00:12:34.735>and <00:12:34.933>you'll <00:12:35.131>see <00:12:35.329>that <00:12:35.526>hopefully <00:12:35.724>you'll <00:12:35.923>get

314
00:12:36.055 --> 00:12:37.415
<00:12:36.055>significant <00:12:36.666>speed <00:12:37.279>up.

315
00:12:39.465 --> 00:12:41.565
<00:12:39.465>Um, <00:12:39.698>something <00:12:39.931>else <00:12:40.165>which <00:12:40.398>we've <00:12:40.631>brought <00:12:40.865>in,

316
00:12:41.565 --> 00:12:43.285
<00:12:41.565>and <00:12:41.720>this <00:12:41.876>has <00:12:42.031>been <00:12:42.187>brought <00:12:42.342>in <00:12:42.498>in <00:12:42.653>the <00:12:42.809>last <00:12:42.965>year,

317
00:12:43.625 --> 00:12:45.205
<00:12:43.625>is <00:12:43.858>a <00:12:44.091>thing <00:12:44.325>called <00:12:44.558>Envy <00:12:44.791>Math <00:12:45.025>Python.

318
00:12:45.905 --> 00:12:48.885
<00:12:45.905>And <00:12:46.079>the <00:12:46.255>idea <00:12:46.430>behind <00:12:46.605>this <00:12:46.780>is <00:12:46.954>it's <00:12:47.130>accelerated <00:12:47.305>maths

319
00:12:48.965 --> 00:12:51.965
<00:12:48.965>libraries, <00:12:49.165>uh, <00:12:49.365>to <00:12:49.565>include <00:12:49.765>in <00:12:49.965>your <00:12:50.165>Python <00:12:50.365>code.

320
00:12:52.185 --> 00:12:56.125
<00:12:52.185>And <00:12:52.340>it <00:12:52.496>goes <00:12:52.651>a <00:12:52.807>step <00:12:52.962>further <00:12:53.118>than, <00:12:53.273>uh, <00:12:53.429>QPI <00:12:53.584>does.

321
00:12:56.385 --> 00:12:59.485
<00:12:56.385>So <00:12:56.525>QPI <00:12:56.665>allows <00:12:56.805>you <00:12:56.944>to <00:12:57.085>access <00:12:57.225>our <00:12:57.365>libraries <00:12:57.505>at <00:12:57.645>the <00:12:57.785>sort

322
00:12:59.485 --> 00:13:01.325
<00:12:59.485>of <00:12:59.660>high <00:12:59.835>level, <00:13:00.010>the <00:13:00.185>same <00:13:00.360>way <00:13:00.535>as <00:13:00.710>it <00:13:00.885>would,

323
00:13:01.325 --> 00:13:02.965
<00:13:01.325>as <00:13:01.500>if <00:13:01.675>you <00:13:01.850>were <00:13:02.025>calling <00:13:02.200>it <00:13:02.375>from <00:13:02.550>the <00:13:02.725>CPU,

324
00:13:03.305 --> 00:13:04.725
<00:13:03.305>but <00:13:03.624>there's <00:13:03.944>actually <00:13:04.263>more <00:13:04.583>performance

325
00:13:04.725 --> 00:13:07.085
<00:13:04.725>to <00:13:04.841>be <00:13:04.958>gained <00:13:05.075>than <00:13:05.191>if <00:13:05.308>you <00:13:05.425>can <00:13:05.541>access <00:13:05.658>them <00:13:05.775>at <00:13:05.891>a <00:13:06.008>lower <00:13:06.125>level,

326
00:13:07.195 --> 00:13:08.845
<00:13:07.195>what <00:13:07.428>we <00:13:07.661>would <00:13:07.895>call <00:13:08.128>the <00:13:08.361>kernel <00:13:08.595>level,

327
00:13:08.945 --> 00:13:11.245
<00:13:08.945>or, <00:13:09.100>uh, <00:13:09.256>the <00:13:09.411>functions <00:13:09.567>that <00:13:09.722>are <00:13:09.878>execute <00:13:10.033>on <00:13:10.189>the <00:13:10.345>GP,

328
00:13:11.245 --> 00:13:12.245
<00:13:11.245>we <00:13:11.545>would <00:13:11.845>call <00:13:12.145>kernels.

329
00:13:12.625 --> 00:13:13.965
<00:13:12.625>And <00:13:12.866>you <00:13:13.107>can <00:13:13.348>actually <00:13:13.589>include <00:13:13.831>calls

330
00:13:13.965 --> 00:13:15.365
<00:13:13.965>to <00:13:14.280>our <00:13:14.595>libraries <00:13:14.910>and <00:13:15.225>kernels.

331
00:13:15.625 --> 00:13:18.405
<00:13:15.625>And <00:13:15.765>so <00:13:15.905>if <00:13:16.045>you <00:13:16.185>use <00:13:16.325>env <00:13:16.465>Math <00:13:16.605>Python, <00:13:16.745>this <00:13:16.885>allows <00:13:17.025>you

332
00:13:18.405 --> 00:13:20.925
<00:13:18.405>to <00:13:18.579>do <00:13:18.755>things <00:13:18.930>like <00:13:19.105>fusion <00:13:19.280>of <00:13:19.454>different, <00:13:19.630>uh, <00:13:19.805>parts

333
00:13:20.925 --> 00:13:22.565
<00:13:20.925>of <00:13:21.158>your <00:13:21.391>code, <00:13:21.625>and <00:13:21.858>that <00:13:22.091>allows <00:13:22.324>you

334
00:13:22.565 --> 00:13:25.205
<00:13:22.565>to <00:13:22.740>speed <00:13:22.915>things <00:13:23.090>up <00:13:23.265>even <00:13:23.440>further <00:13:23.615>on <00:13:23.790>the <00:13:23.965>gpu.

335
00:13:25.305 --> 00:13:27.365
<00:13:25.305>So <00:13:25.460>ENV <00:13:25.616>math <00:13:25.771>Python <00:13:25.927>is <00:13:26.082>a <00:13:26.238>way <00:13:26.393>of <00:13:26.549>doing <00:13:26.704>that.

336
00:13:27.955 --> 00:13:29.685
<00:13:27.955>Another <00:13:28.188>nice <00:13:28.421>thing <00:13:28.655>about <00:13:28.888>env <00:13:29.121>Math <00:13:29.355>Python,

337
00:13:29.785 --> 00:13:32.365
<00:13:29.785>it <00:13:29.959>allows <00:13:30.135>you <00:13:30.310>a <00:13:30.485>route <00:13:30.660>to <00:13:30.834>accelerate <00:13:31.010>your <00:13:31.185>code,

338
00:13:32.365 --> 00:13:33.605
<00:13:32.365>which <00:13:32.644>doesn't <00:13:32.923>involve <00:13:33.202>you <00:13:33.481>having

339
00:13:33.605 --> 00:13:35.685
<00:13:33.605>to <00:13:33.805>make <00:13:34.005>code <00:13:34.205>changes <00:13:34.405>at <00:13:34.605>every <00:13:34.805>different <00:13:35.005>stage.

340
00:13:36.225 --> 00:13:37.685
<00:13:36.225>If <00:13:36.487>you <00:13:36.750>include <00:13:37.013>NVM <00:13:37.276>Math, <00:13:37.539>Python,

341
00:13:38.025 --> 00:13:41.685
<00:13:38.025>and <00:13:38.141>you <00:13:38.258>pass <00:13:38.375>it <00:13:38.491>as <00:13:38.608>CPU <00:13:38.725>based <00:13:38.841>array, <00:13:38.958>it <00:13:39.074>will <00:13:39.191>use <00:13:39.308>the, <00:13:39.425>um,

342
00:13:42.085 --> 00:13:45.085
<00:13:42.085>CPU <00:13:42.318>accelerated <00:13:42.551>libraries, <00:13:42.785>uh, <00:13:43.018>for <00:13:43.251>doing <00:13:43.485>that.

343
00:13:45.185 --> 00:13:46.765
<00:13:45.185>It <00:13:45.359>will <00:13:45.535>not <00:13:45.709>use <00:13:45.885>the <00:13:46.060>GPU <00:13:46.234>for <00:13:46.410>doing <00:13:46.584>that.

344
00:13:46.785 --> 00:13:48.485
<00:13:46.785>So <00:13:46.940>it <00:13:47.096>will <00:13:47.251>use, <00:13:47.407>if <00:13:47.562>you're <00:13:47.718>on <00:13:47.873>an <00:13:48.029>Intel <00:13:48.185>system,

345
00:13:48.785 --> 00:13:50.005
<00:13:48.785>it <00:13:49.151>will <00:13:49.516>use <00:13:49.883>MKL.

346
00:13:50.005 --> 00:13:52.365
<00:13:50.005>If <00:13:50.132>you're <00:13:50.259>on <00:13:50.386>an <00:13:50.514>ARM <00:13:50.641>system, <00:13:50.768>it <00:13:50.895>will <00:13:51.023>use <00:13:51.150>the <00:13:51.277>arm, <00:13:51.405>uh,

347
00:13:52.365 --> 00:13:55.365
<00:13:52.365>performance <00:13:52.715>libraries <00:13:53.065>then <00:13:53.415>without <00:13:53.765>all,

348
00:13:55.425 --> 00:13:57.325
<00:13:55.425>the <00:13:55.564>only <00:13:55.704>change <00:13:55.844>you'd <00:13:55.984>have <00:13:56.125>to <00:13:56.265>make <00:13:56.405>your <00:13:56.545>code <00:13:56.685>is <00:13:56.824>instead

349
00:13:57.325 --> 00:14:00.685
<00:13:57.325>of <00:13:57.465>passing <00:13:57.605>the <00:13:57.745>CPU <00:13:57.885>array, <00:13:58.025>you <00:13:58.165>could <00:13:58.305>pass <00:13:58.445>a <00:13:58.585>GPU <00:13:58.725>array

350
00:14:00.685 --> 00:14:03.805
<00:14:00.685>to <00:14:00.801>MV <00:14:00.918>Math <00:14:01.035>Python, <00:14:01.151>and <00:14:01.268>it <00:14:01.385>will <00:14:01.501>see <00:14:01.618>that <00:14:01.734>that's <00:14:01.851>on <00:14:01.968>the <00:14:02.084>GPU,

351
00:14:03.865 --> 00:14:06.285
<00:14:03.865>and <00:14:04.020>then <00:14:04.176>it'll <00:14:04.331>make <00:14:04.487>use <00:14:04.642>of <00:14:04.798>the <00:14:04.953>GPU <00:14:05.109>accelerated <00:14:05.265>libraries.

352
00:14:06.795 --> 00:14:07.885
<00:14:06.795>Okay? <00:14:06.991>So <00:14:07.187>it <00:14:07.383>allows <00:14:07.579>you, <00:14:07.776>this,

353
00:14:07.885 --> 00:14:11.565
<00:14:07.885>this <00:14:08.001>pathway <00:14:08.118>from <00:14:08.235>going <00:14:08.351>from <00:14:08.468>A <00:14:08.585>CPU <00:14:08.701>only <00:14:08.818>code <00:14:08.935>to <00:14:09.051>A <00:14:09.168>GPU <00:14:09.285>code.

354
00:14:11.815 --> 00:14:14.765
<00:14:11.815>We've <00:14:11.990>also <00:14:12.165>introduced <00:14:12.340>a <00:14:12.515>thing <00:14:12.690>called <00:14:12.865>distributed, <00:14:13.040>uh, <00:14:13.215>uh,

355
00:14:14.765 --> 00:14:17.565
<00:14:14.765>in <00:14:14.881>mbm <00:14:14.998>a <00:14:15.115>Python, <00:14:15.231>which <00:14:15.348>allows <00:14:15.465>you <00:14:15.581>to <00:14:15.698>go <00:14:15.814>from <00:14:15.931>a <00:14:16.048>single <00:14:16.165>GPU

356
00:14:17.565 --> 00:14:19.725
<00:14:17.565>to <00:14:17.798>multiple <00:14:18.031>GPUs, <00:14:18.265>again, <00:14:18.498>just <00:14:18.731>by, <00:14:18.965>uh,

357
00:14:19.725 --> 00:14:21.125
<00:14:19.725>calling <00:14:20.145>this <00:14:20.565>library <00:14:20.985>function.

358
00:14:21.465 --> 00:14:24.405
<00:14:21.465>So <00:14:21.620>again, <00:14:21.776>it's <00:14:21.931>a <00:14:22.087>really <00:14:22.242>nice <00:14:22.398>way <00:14:22.553>of <00:14:22.709>allowing <00:14:22.865>you

359
00:14:24.405 --> 00:14:27.325
<00:14:24.405>to <00:14:24.532>scale <00:14:24.659>up <00:14:24.786>from <00:14:24.914>the <00:14:25.041>single <00:14:25.168>CPU <00:14:25.295>to, <00:14:25.423>to <00:14:25.550>the <00:14:25.677>large <00:14:25.805>systems

360
00:14:27.555 --> 00:14:28.965
<00:14:27.555>that <00:14:27.872>are <00:14:28.189>becoming <00:14:28.506>more <00:14:28.824>prevalent.

361
00:14:30.695 --> 00:14:32.555
<00:14:30.695>So <00:14:30.850>I <00:14:31.006>wanted <00:14:31.161>to <00:14:31.317>give <00:14:31.472>you <00:14:31.628>an <00:14:31.783>example <00:14:31.939>of <00:14:32.095>people

362
00:14:32.555 --> 00:14:34.715
<00:14:32.555>who <00:14:32.682>have <00:14:32.809>done <00:14:32.936>this <00:14:33.064>and <00:14:33.191>how, <00:14:33.318>and <00:14:33.445>how <00:14:33.573>easy <00:14:33.700>they <00:14:33.827>found <00:14:33.954>it.

363
00:14:34.775 --> 00:14:37.235
<00:14:34.775>So, <00:14:34.949>um, <00:14:35.125>there's <00:14:35.300>a <00:14:35.475>bunch <00:14:35.650>of <00:14:35.824>researchers <00:14:36.000>in <00:14:36.175>America

364
00:14:37.375 --> 00:14:41.355
<00:14:37.375>who <00:14:37.608>are <00:14:37.841>trying <00:14:38.075>to <00:14:38.308>identify, <00:14:38.541>um, <00:14:38.775>supernova,

365
00:14:41.865 --> 00:14:43.915
<00:14:41.865>supernova, <00:14:42.098>uh, <00:14:42.331>for <00:14:42.565>the <00:14:42.798>plural <00:14:43.031>of <00:14:43.265>them.

366
00:14:44.735 --> 00:14:45.955
<00:14:44.735>Um, <00:14:45.101>and <00:14:45.467>what <00:14:45.833>they,

367
00:14:45.985 --> 00:14:47.915
<00:14:45.985>what <00:14:46.185>they're <00:14:46.385>setting <00:14:46.585>up <00:14:46.785>is <00:14:46.985>a <00:14:47.185>space <00:14:47.385>telescope,

368
00:14:47.915 --> 00:14:49.475
<00:14:47.915>which <00:14:48.265>basically <00:14:48.615>scans <00:14:48.964>the <00:14:49.314>sky

369
00:14:49.935 --> 00:14:51.285
<00:14:49.935>and <00:14:50.238>is <00:14:50.542>looking <00:14:50.846>for <00:14:51.150>differences.

370
00:14:52.035 --> 00:14:54.885
<00:14:52.035>Okay? <00:14:52.162>So <00:14:52.289>the <00:14:52.416>sky <00:14:52.544>looks <00:14:52.671>pretty <00:14:52.798>much <00:14:52.925>the <00:14:53.053>same <00:14:53.180>all <00:14:53.307>the <00:14:53.435>time,

371
00:14:55.265 --> 00:14:57.205
<00:14:55.265>but <00:14:55.405>every <00:14:55.545>now <00:14:55.685>and <00:14:55.824>again, <00:14:55.965>there'll <00:14:56.105>be <00:14:56.245>a <00:14:56.385>really <00:14:56.525>bright <00:14:56.665>light,

372
00:14:57.205 --> 00:14:59.405
<00:14:57.205>which <00:14:57.405>lasts <00:14:57.605>a <00:14:57.805>few <00:14:58.005>seconds, <00:14:58.205>then <00:14:58.405>disappears <00:14:58.605>again,

373
00:14:59.665 --> 00:15:01.885
<00:14:59.665>and <00:14:59.839>that <00:15:00.015>could <00:15:00.189>be <00:15:00.365>a <00:15:00.540>supernova <00:15:00.714>being <00:15:00.890>set <00:15:01.064>off

374
00:15:01.885 --> 00:15:03.045
<00:15:01.885>in <00:15:02.146>a <00:15:02.406>far <00:15:02.668>away <00:15:02.929>galaxy.

375
00:15:03.385 --> 00:15:04.885
<00:15:03.385>Uh, <00:15:03.577>and <00:15:03.770>so <00:15:03.963>they're <00:15:04.156>trying <00:15:04.349>to <00:15:04.542>capture <00:15:04.735>that.

376
00:15:04.985 --> 00:15:07.285
<00:15:04.985>So <00:15:05.185>in <00:15:05.385>terms <00:15:05.585>of <00:15:05.785>making <00:15:05.985>sure <00:15:06.185>they're <00:15:06.385>ready

377
00:15:07.285 --> 00:15:10.005
<00:15:07.285>for <00:15:07.440>when <00:15:07.596>the <00:15:07.751>satellite's <00:15:07.907>launched, <00:15:08.062>uh, <00:15:08.218>to <00:15:08.373>have <00:15:08.529>a <00:15:08.685>piece

378
00:15:10.005 --> 00:15:13.365
<00:15:10.005>of <00:15:10.180>software, <00:15:10.355>which, <00:15:10.530>uh, <00:15:10.705>basically <00:15:10.880>analyzes <00:15:11.055>the <00:15:11.230>images, <00:15:11.405>uh,

379
00:15:13.395 --> 00:15:14.845
<00:15:13.395>does <00:15:13.656>a <00:15:13.917>furrier <00:15:14.178>transform <00:15:14.439>on <00:15:14.700>them,

380
00:15:14.845 --> 00:15:16.965
<00:15:14.845>which <00:15:15.045>basically <00:15:15.245>means <00:15:15.445>moving <00:15:15.645>them <00:15:15.845>to <00:15:16.045>frequency <00:15:16.245>space.

381
00:15:17.275 --> 00:15:20.365
<00:15:17.275>They <00:15:17.449>do <00:15:17.625>subtrac <00:15:17.800>subtraction <00:15:17.975>there, <00:15:18.150>then <00:15:18.324>move <00:15:18.500>it <00:15:18.675>back

382
00:15:20.625 --> 00:15:21.845
<00:15:20.625>to, <00:15:20.991>uh, <00:15:21.357>domain <00:15:21.723>space.

383
00:15:23.035 --> 00:15:25.005
<00:15:23.035>What <00:15:23.190>that <00:15:23.346>means <00:15:23.501>is <00:15:23.657>they <00:15:23.812>can <00:15:23.968>spot <00:15:24.123>the <00:15:24.279>small <00:15:24.435>differences.

384
00:15:25.595 --> 00:15:29.325
<00:15:25.595>Okay? <00:15:25.722>So <00:15:25.849>what <00:15:25.976>we're <00:15:26.104>seeing <00:15:26.231>on <00:15:26.358>the <00:15:26.485>left <00:15:26.613>there <00:15:26.740>is <00:15:26.867>the, <00:15:26.995>uh,

385
00:15:29.385 --> 00:15:30.685
<00:15:29.385>the <00:15:29.677>raw <00:15:29.970>images <00:15:30.262>coming <00:15:30.555>in,

386
00:15:30.825 --> 00:15:32.445
<00:15:30.825>and <00:15:31.058>then <00:15:31.291>the <00:15:31.525>process <00:15:31.758>images <00:15:31.991>there <00:15:32.225>is

387
00:15:32.445 --> 00:15:35.005
<00:15:32.445>to <00:15:32.678>identify <00:15:32.911>the <00:15:33.145>differences <00:15:33.378>between <00:15:33.611>each <00:15:33.845>image.

388
00:15:35.225 --> 00:15:37.205
<00:15:35.225>And <00:15:35.400>you'll <00:15:35.575>see, <00:15:35.750>uh, <00:15:35.925>at <00:15:36.100>some <00:15:36.275>point <00:15:36.450>in <00:15:36.625>this,

389
00:15:37.325 --> 00:15:38.885
<00:15:37.325>there'll <00:15:37.558>be <00:15:37.791>a, <00:15:38.025>a <00:15:38.258>flash <00:15:38.491>of <00:15:38.725>light.

390
00:15:38.905 --> 00:15:40.405
<00:15:38.905>And <00:15:39.175>basically <00:15:39.444>that's <00:15:39.714>the, <00:15:39.985>this, <00:15:40.255>this,

391
00:15:40.405 --> 00:15:42.765
<00:15:40.405>this <00:15:40.560>is <00:15:40.716>a <00:15:40.871>simulation <00:15:41.027>rather <00:15:41.182>than <00:15:41.338>real, <00:15:41.493>the <00:15:41.649>real <00:15:41.805>data,

392
00:15:43.305 --> 00:15:46.005
<00:15:43.305>but <00:15:43.444>that's <00:15:43.584>flash <00:15:43.724>of <00:15:43.864>light <00:15:44.005>is <00:15:44.145>meant <00:15:44.285>to <00:15:44.425>represent <00:15:44.564>a <00:15:44.704>supernova.

393
00:15:46.105 --> 00:15:47.365
<00:15:46.105>So <00:15:46.483>very <00:15:46.861>fleeting <00:15:47.239>thing,

394
00:15:47.625 --> 00:15:49.765
<00:15:47.625>but <00:15:47.825>taking <00:15:48.025>this <00:15:48.225>approach, <00:15:48.425>they <00:15:48.625>can <00:15:48.825>identify <00:15:49.025>it.

395
00:15:49.785 --> 00:15:52.045
<00:15:49.785>Now, <00:15:49.959>they <00:15:50.135>came <00:15:50.310>along <00:15:50.485>to <00:15:50.660>one <00:15:50.834>of <00:15:51.010>our <00:15:51.185>hackathons

396
00:15:52.045 --> 00:15:53.365
<00:15:52.045>with <00:15:52.342>this <00:15:52.639>CPU <00:15:52.936>only <00:15:53.233>code.

397
00:15:53.665 --> 00:15:57.645
<00:15:53.665>It <00:15:53.805>took <00:15:53.944>about <00:15:54.084>45 <00:15:54.224>minutes <00:15:54.365>per <00:15:54.505>image <00:15:54.645>to <00:15:54.785>do <00:15:54.925>this <00:15:55.064>calculation.

398
00:15:58.315 --> 00:16:00.525
<00:15:58.315>Okay? <00:15:58.490>So <00:15:58.665>this <00:15:58.840>is <00:15:59.015>the <00:15:59.190>starting <00:15:59.365>point <00:15:59.540>I <00:15:59.715>hear.

399
00:16:00.705 --> 00:16:03.525
<00:16:00.705>Now, <00:16:00.905>they <00:16:01.105>were <00:16:01.305>using <00:16:01.505>NumPy, <00:16:01.705>uh, <00:16:01.905>absolutely <00:16:02.105>reasonably.

400
00:16:04.585 --> 00:16:07.955
<00:16:04.585>Then <00:16:04.725>the <00:16:04.865>first <00:16:05.005>thing <00:16:05.145>they <00:16:05.285>did <00:16:05.425>was <00:16:05.565>they <00:16:05.705>used <00:16:05.845>QPI <00:16:05.985>instead

401
00:16:07.955 --> 00:16:09.595
<00:16:07.955>of <00:16:08.155>NumPy, <00:16:08.355>and <00:16:08.555>they <00:16:08.755>just <00:16:08.955>made <00:16:09.155>the <00:16:09.355>changes

402
00:16:09.625 --> 00:16:10.955
<00:16:09.625>that <00:16:09.864>I <00:16:10.103>showed <00:16:10.343>to <00:16:10.582>you <00:16:10.822>before.

403
00:16:11.295 --> 00:16:12.875
<00:16:11.295>Um, <00:16:11.469>they <00:16:11.645>also <00:16:11.819>used <00:16:11.995>a <00:16:12.170>little <00:16:12.344>bit <00:16:12.520>of <00:16:12.694>number

404
00:16:12.895 --> 00:16:14.755
<00:16:12.895>for <00:16:13.095>some <00:16:13.295>extra <00:16:13.495>kernels <00:16:13.694>they <00:16:13.895>needed <00:16:14.095>to <00:16:14.295>write,

405
00:16:15.055 --> 00:16:16.195
<00:16:15.055>but <00:16:15.396>that <00:16:15.739>didn't, <00:16:16.081>uh,

406
00:16:16.305 --> 00:16:17.955
<00:16:16.305>give <00:16:16.505>the <00:16:16.704>impact <00:16:16.905>in <00:16:17.104>terms <00:16:17.305>of <00:16:17.505>the <00:16:17.704>performance.

407
00:16:17.955 --> 00:16:20.555
<00:16:17.955>It <00:16:18.130>was <00:16:18.305>the <00:16:18.480>QPI <00:16:18.655>move, <00:16:18.830>which <00:16:19.005>really <00:16:19.180>changed <00:16:19.355>things.

408
00:16:21.055 --> 00:16:23.755
<00:16:21.055>So <00:16:21.210>in <00:16:21.366>the <00:16:21.521>see <00:16:21.677>go <00:16:21.832>from <00:16:21.988>this, <00:16:22.143>at <00:16:22.299>our <00:16:22.454>baseline

409
00:16:23.755 --> 00:16:26.555
<00:16:23.755>of <00:16:23.910>one <00:16:24.066>X <00:16:24.221>on <00:16:24.377>the <00:16:24.532>CPU <00:16:24.688>U <00:16:24.843>introduced <00:16:24.999>some <00:16:25.155>qi,

410
00:16:26.815 --> 00:16:29.035
<00:16:26.815>and <00:16:27.015>it <00:16:27.215>went <00:16:27.415>to, <00:16:27.615>um, <00:16:27.815>23 <00:16:28.015>times <00:16:28.215>faster.

411
00:16:29.585 --> 00:16:33.355
<00:16:29.585>Okay? <00:16:29.760>Then <00:16:29.935>there <00:16:30.110>were, <00:16:30.285>right, <00:16:30.460>we're <00:16:30.635>using <00:16:30.810>these <00:16:30.985>FFTs,

412
00:16:33.415 --> 00:16:36.835
<00:16:33.415>can <00:16:33.615>we <00:16:33.814>use <00:16:34.015>these <00:16:34.214>FFTs <00:16:34.415>transformations <00:16:34.615>more <00:16:34.814>efficiently?

413
00:16:37.455 --> 00:16:39.195
<00:16:37.455>Um, <00:16:37.655>and <00:16:37.855>so <00:16:38.055>they <00:16:38.255>brought <00:16:38.455>in <00:16:38.655>NVM <00:16:38.855>Python,

414
00:16:39.295 --> 00:16:40.995
<00:16:39.295>and <00:16:39.469>this <00:16:39.645>allowed <00:16:39.819>them <00:16:39.995>to <00:16:40.170>do <00:16:40.344>this, <00:16:40.520>this <00:16:40.694>idea

415
00:16:40.995 --> 00:16:43.155
<00:16:40.995>of <00:16:41.195>kernel <00:16:41.395>fusion, <00:16:41.595>which <00:16:41.795>i, <00:16:41.995>I <00:16:42.195>mentioned <00:16:42.395>earlier.

416
00:16:43.695 --> 00:16:46.435
<00:16:43.695>Uh, <00:16:43.835>and <00:16:43.975>this <00:16:44.115>meant <00:16:44.255>they <00:16:44.395>went <00:16:44.535>up <00:16:44.675>to <00:16:44.815>39 <00:16:44.955>times <00:16:45.095>faster.

417
00:16:46.575 --> 00:16:49.035
<00:16:46.575>So <00:16:46.750>they <00:16:46.925>basically <00:16:47.100>went <00:16:47.275>from <00:16:47.450>do <00:16:47.625>each <00:16:47.800>image <00:16:47.975>taking,

418
00:16:49.135 --> 00:16:52.555
<00:16:49.135>or <00:16:49.275>each <00:16:49.415>set <00:16:49.555>of <00:16:49.694>images, <00:16:49.835>taking <00:16:49.975>about <00:16:50.115>45 <00:16:50.255>minutes, <00:16:50.395>uh, <00:16:50.535>to,

419
00:16:52.695 --> 00:16:55.515
<00:16:52.695>to <00:16:52.850>them <00:16:53.006>taking <00:16:53.161>about <00:16:53.317>one <00:16:53.472>minute, <00:16:53.628>which <00:16:53.783>in, <00:16:53.939>when <00:16:54.095>the,

420
00:16:55.515 --> 00:16:57.155
<00:16:55.515>the <00:16:55.795>real <00:16:56.074>life <00:16:56.355>telescope <00:16:56.635>comes <00:16:56.915>online,

421
00:16:57.305 --> 00:16:59.835
<00:16:57.305>that <00:16:57.505>will <00:16:57.704>effectively <00:16:57.905>be <00:16:58.104>a <00:16:58.305>real <00:16:58.505>time, <00:16:58.704>uh,

422
00:16:59.885 --> 00:17:02.195
<00:16:59.885>processing <00:17:00.085>pipeline <00:17:00.285>that <00:17:00.485>they <00:17:00.685>can <00:17:00.885>create <00:17:01.085>for <00:17:01.285>this,

423
00:17:02.685 --> 00:17:04.675
<00:17:02.685>which <00:17:02.840>means, <00:17:02.996>you <00:17:03.151>know, <00:17:03.307>they <00:17:03.462>can <00:17:03.618>very <00:17:03.773>much <00:17:03.929>more <00:17:04.085>quickly

424
00:17:04.825 --> 00:17:06.755
<00:17:04.825>analyze <00:17:05.058>the <00:17:05.291>images, <00:17:05.525>see <00:17:05.758>if <00:17:05.991>anything's <00:17:06.225>happened,

425
00:17:06.755 --> 00:17:09.275
<00:17:06.755>and <00:17:06.955>if <00:17:07.155>something <00:17:07.355>has <00:17:07.555>happened, <00:17:07.755>get <00:17:07.955>over <00:17:08.155>telescopes

426
00:17:09.275 --> 00:17:11.475
<00:17:09.275>to <00:17:09.415>point <00:17:09.555>at <00:17:09.695>this <00:17:09.835>thing <00:17:09.975>to <00:17:10.115>try <00:17:10.255>and <00:17:10.395>get <00:17:10.535>more <00:17:10.675>information.

427
00:17:11.855 --> 00:17:12.995
<00:17:11.855>So <00:17:12.111>a <00:17:12.367>really <00:17:12.624>valid <00:17:12.880>thing.

428
00:17:13.135 --> 00:17:15.195
<00:17:13.135>Now, <00:17:13.262>the <00:17:13.389>thing <00:17:13.516>I <00:17:13.644>want <00:17:13.771>to <00:17:13.898>stress <00:17:14.025>here <00:17:14.153>is <00:17:14.280>these <00:17:14.407>were <00:17:14.535>all

429
00:17:15.195 --> 00:17:16.555
<00:17:15.194>domain <00:17:15.603>scientists, <00:17:16.011>all <00:17:16.419>right?

430
00:17:16.555 --> 00:17:17.835
<00:17:16.555>These <00:17:17.131>are <00:17:17.707>astrophysicists,

431
00:17:17.835 --> 00:17:19.795
<00:17:17.835>obviously <00:17:18.115>very <00:17:18.395>expert <00:17:18.675>in <00:17:18.954>the <00:17:19.235>field,

432
00:17:20.095 --> 00:17:22.995
<00:17:20.095>but <00:17:20.250>not <00:17:20.406>GPU <00:17:20.561>programmers <00:17:20.717>by <00:17:20.872>any <00:17:21.028>stretch <00:17:21.183>of <00:17:21.339>the <00:17:21.495>imagination.

433
00:17:23.295 --> 00:17:24.955
<00:17:23.295>But <00:17:23.495>with <00:17:23.695>just <00:17:23.895>a <00:17:24.095>few <00:17:24.295>days <00:17:24.495>of <00:17:24.695>effort,

434
00:17:24.985 --> 00:17:26.115
<00:17:24.984>they <00:17:25.188>might <00:17:25.391>just <00:17:25.595>see <00:17:25.798>this <00:17:26.002>kind

435
00:17:26.115 --> 00:17:27.875
<00:17:26.115>of <00:17:26.464>performance <00:17:26.815>increase <00:17:27.165>without <00:17:27.515>having

436
00:17:27.875 --> 00:17:29.875
<00:17:27.875>to <00:17:28.108>dive <00:17:28.341>into <00:17:28.575>writing <00:17:28.808>low <00:17:29.041>level <00:17:29.275>qda.

437
00:17:30.135 --> 00:17:32.355
<00:17:30.135>And <00:17:30.275>that's <00:17:30.415>the <00:17:30.555>kind <00:17:30.695>of <00:17:30.835>approach <00:17:30.975>we <00:17:31.115>want <00:17:31.254>to <00:17:31.395>enable <00:17:31.535>for

438
00:17:32.355 --> 00:17:34.275
<00:17:32.355>as <00:17:32.635>many, <00:17:32.915>uh, <00:17:33.195>developers <00:17:33.475>as <00:17:33.755>possible.

439
00:17:37.625 --> 00:17:40.075
<00:17:37.625>Okay? <00:17:37.858>I <00:17:38.091>also <00:17:38.325>wanna <00:17:38.558>mention <00:17:38.791>QT <00:17:39.025>tile.

440
00:17:40.135 --> 00:17:42.435
<00:17:40.135>Now, <00:17:40.368>Q <00:17:40.601>tile's <00:17:40.835>not <00:17:41.068>out <00:17:41.301>yet, <00:17:41.535>uh,

441
00:17:42.495 --> 00:17:45.275
<00:17:42.495>but <00:17:42.635>this <00:17:42.774>is, <00:17:42.915>uh, <00:17:43.054>an <00:17:43.195>approach <00:17:43.334>which <00:17:43.475>will <00:17:43.614>seem <00:17:43.754>very <00:17:43.895>python,

442
00:17:45.655 --> 00:17:47.275
<00:17:45.655>uh, <00:17:45.888>to, <00:17:46.121>to <00:17:46.355>many <00:17:46.588>of <00:17:46.821>you, <00:17:47.055>uh,

443
00:17:47.275 --> 00:17:49.365
<00:17:47.275>of <00:17:47.555>doing <00:17:47.835>array <00:17:48.115>based, <00:17:48.395>uh, <00:17:48.675>programming.

444
00:17:49.665 --> 00:17:52.685
<00:17:49.665>So <00:17:49.820>rather <00:17:49.976>going <00:17:50.131>down <00:17:50.287>to <00:17:50.442>the, <00:17:50.598>the <00:17:50.753>individual <00:17:50.909>thread <00:17:51.065>level.

445
00:17:52.745 --> 00:17:54.085
<00:17:52.745>So <00:17:52.946>we <00:17:53.147>talked <00:17:53.348>before <00:17:53.549>about <00:17:53.750>the <00:17:53.951>many,

446
00:17:54.085 --> 00:17:57.005
<00:17:54.085>many <00:17:54.225>different <00:17:54.365>threads <00:17:54.505>you <00:17:54.645>need <00:17:54.785>to, <00:17:54.925>to <00:17:55.065>execute <00:17:55.205>on <00:17:55.345>the <00:17:55.485>GPU.

447
00:17:57.355 --> 00:18:00.565
<00:17:57.355>This <00:17:57.530>allows <00:17:57.705>you <00:17:57.880>to, <00:17:58.055>uh, <00:17:58.230>abstract <00:17:58.405>away <00:17:58.580>from <00:17:58.755>that

448
00:18:00.565 --> 00:18:04.165
<00:18:00.565>and <00:18:00.720>just <00:18:00.876>pass <00:18:01.031>a, <00:18:01.187>a <00:18:01.342>raise <00:18:01.498>to, <00:18:01.653>um, <00:18:01.809>Q <00:18:01.965>tile,

449
00:18:04.425 --> 00:18:06.125
<00:18:04.425>and <00:18:04.580>they, <00:18:04.736>they <00:18:04.891>will <00:18:05.047>do <00:18:05.202>the <00:18:05.358>hard <00:18:05.513>work <00:18:05.669>for <00:18:05.825>you.

450
00:18:06.195 --> 00:18:10.085
<00:18:06.195>They <00:18:06.322>will <00:18:06.449>d <00:18:06.576>distribute <00:18:06.704>the <00:18:06.831>work <00:18:06.958>on, <00:18:07.085>on <00:18:07.213>that <00:18:07.340>data <00:18:07.467>set <00:18:07.595>across,

451
00:18:10.465 --> 00:18:11.765
<00:18:10.465>uh, <00:18:10.757>the, <00:18:11.050>the, <00:18:11.342>you <00:18:11.635>know,

452
00:18:11.765 --> 00:18:13.125
<00:18:11.765>the <00:18:11.939>vast <00:18:12.114>number <00:18:12.289>of <00:18:12.464>threads <00:18:12.639>that <00:18:12.814>are <00:18:12.989>available.

453
00:18:13.195 --> 00:18:14.565
<00:18:13.195>They <00:18:13.400>will <00:18:13.606>do <00:18:13.811>all <00:18:14.017>that <00:18:14.222>for <00:18:14.428>you.

454
00:18:14.865 --> 00:18:17.005
<00:18:14.865>And <00:18:14.992>again, <00:18:15.119>it's <00:18:15.246>to <00:18:15.374>try <00:18:15.501>and <00:18:15.628>make <00:18:15.755>it <00:18:15.883>as <00:18:16.010>easy <00:18:16.137>as <00:18:16.265>possible

455
00:18:17.005 --> 00:18:19.485
<00:18:17.005>for <00:18:17.132>you <00:18:17.259>to <00:18:17.386>program <00:18:17.514>in <00:18:17.641>a <00:18:17.768>way <00:18:17.895>which <00:18:18.023>seems <00:18:18.150>familiar <00:18:18.277>to <00:18:18.405>you.

456
00:18:19.705 --> 00:18:21.405
<00:18:19.705>So <00:18:19.860>keep <00:18:20.016>an <00:18:20.171>eye <00:18:20.327>out. <00:18:20.482>This <00:18:20.638>is <00:18:20.793>gonna <00:18:20.949>be <00:18:21.105>coming

457
00:18:21.405 --> 00:18:22.565
<00:18:21.405>out <00:18:21.613>over <00:18:21.822>the <00:18:22.031>next <00:18:22.240>few <00:18:22.449>months.

458
00:18:23.675 --> 00:18:27.045
<00:18:23.675>Also, <00:18:23.830>my, <00:18:23.986>my, <00:18:24.141>uh, <00:18:24.297>colleague <00:18:24.452>Andy <00:18:24.608>Terrell, <00:18:24.763>who's <00:18:24.919>the <00:18:25.075>lead

459
00:18:27.045 --> 00:18:29.605
<00:18:27.045>of <00:18:27.220>our <00:18:27.395>Python, <00:18:27.570>uh, <00:18:27.745>efforts, <00:18:27.920>uh, <00:18:28.095>in <00:18:28.270>the <00:18:28.445>us.

460
00:18:29.785 --> 00:18:30.925
<00:18:29.785>Uh, <00:18:30.041>I <00:18:30.298>saw <00:18:30.554>on <00:18:30.811>LinkedIn,

461
00:18:31.025 --> 00:18:32.725
<00:18:31.025>and <00:18:31.225>I <00:18:31.425>just <00:18:31.625>spotted <00:18:31.825>it <00:18:32.025>about <00:18:32.225>20 <00:18:32.425>minutes

462
00:18:32.725 --> 00:18:35.645
<00:18:32.725>before <00:18:32.899>this <00:18:33.074>talk, <00:18:33.250>he <00:18:33.425>announced, <00:18:33.600>uh, <00:18:33.774>that <00:18:33.949>we've, <00:18:34.125>uh,

463
00:18:35.705 --> 00:18:39.285
<00:18:35.705>our <00:18:35.845>qda <00:18:35.985>core <00:18:36.125>compute <00:18:36.264>libraries, <00:18:36.405>which <00:18:36.544>are <00:18:36.685>a <00:18:36.824>set <00:18:36.965>of, <00:18:37.105>uh,

464
00:18:39.285 --> 00:18:42.325
<00:18:39.285>snippets <00:18:39.460>of, <00:18:39.635>uh, <00:18:39.810>GPU <00:18:39.985>kernels, <00:18:40.160>which, <00:18:40.335>uh, <00:18:40.510>perform <00:18:40.685>very,

465
00:18:42.325 --> 00:18:45.925
<00:18:42.325>very <00:18:42.558>high, <00:18:42.791>uh, <00:18:43.025>high, <00:18:43.258>uh, <00:18:43.491>performance, <00:18:43.725>um,

466
00:18:46.935 --> 00:18:48.885
<00:18:46.935>aimed <00:18:47.090>at <00:18:47.246>C <00:18:47.401>plus <00:18:47.557>plus <00:18:47.712>program <00:18:47.868>is <00:18:48.023>we've <00:18:48.179>now <00:18:48.335>released

467
00:18:48.885 --> 00:18:49.925
<00:18:48.885>those <00:18:49.119>for <00:18:49.353>Python <00:18:49.587>as <00:18:49.821>well.

468
00:18:50.185 --> 00:18:51.725
<00:18:50.185>Um, <00:18:50.416>so <00:18:50.647>that <00:18:50.878>was <00:18:51.109>announced <00:18:51.340>last <00:18:51.571>night.

469
00:18:51.745 --> 00:18:54.045
<00:18:51.745>If <00:18:51.900>you <00:18:52.056>followed <00:18:52.211>me <00:18:52.367>on <00:18:52.522>LinkedIn, <00:18:52.678>I've <00:18:52.833>shared <00:18:52.989>that <00:18:53.145>post

470
00:18:54.345 --> 00:18:55.565
<00:18:54.345>so <00:18:54.501>you <00:18:54.658>can <00:18:54.815>find <00:18:54.972>out <00:18:55.129>more <00:18:55.286>about <00:18:55.443>that.

471
00:18:55.585 --> 00:18:57.485
<00:18:55.585>So <00:18:55.760>I'm <00:18:55.935>sorry, <00:18:56.110>there's <00:18:56.285>not <00:18:56.460>a <00:18:56.635>ly <00:18:56.810>about <00:18:56.985>it,

472
00:18:57.785 --> 00:18:59.085
<00:18:57.785>but <00:18:58.019>that's <00:18:58.253>the <00:18:58.487>speed <00:18:58.721>of <00:18:58.955>light.

473
00:18:59.085 --> 00:19:00.325
<00:18:59.085>That's <00:18:59.244>the <00:18:59.403>way <00:18:59.563>we <00:18:59.722>do <00:18:59.882>things <00:19:00.041>in <00:19:00.201>Nvidia.

474
00:19:00.325 --> 00:19:02.725
<00:19:00.325>Things <00:19:00.500>are <00:19:00.675>happening <00:19:00.850>very <00:19:01.025>quickly, <00:19:01.200>but <00:19:01.375>it <00:19:01.550>shows <00:19:01.725>you

475
00:19:02.845 --> 00:19:04.765
<00:19:02.845>that <00:19:03.078>we're <00:19:03.311>constantly <00:19:03.545>trying <00:19:03.778>to <00:19:04.011>improve <00:19:04.245>things

476
00:19:04.765 --> 00:19:07.245
<00:19:04.765>and <00:19:04.940>make <00:19:05.115>things <00:19:05.290>better <00:19:05.465>and <00:19:05.640>easier, <00:19:05.815>uh, <00:19:05.990>for <00:19:06.165>people

477
00:19:07.245 --> 00:19:08.805
<00:19:07.245>to <00:19:07.524>make <00:19:07.804>use <00:19:08.084>of, <00:19:08.364>um, <00:19:08.645>GPUs.

478
00:19:10.895 --> 00:19:13.475
<00:19:10.895>It <00:19:11.050>would <00:19:11.206>be <00:19:11.361>remiss <00:19:11.517>of <00:19:11.672>me <00:19:11.828>not <00:19:11.983>to <00:19:12.139>mention <00:19:12.295>going

479
00:19:13.495 --> 00:19:14.595
<00:19:13.495>to <00:19:13.990>multiple <00:19:14.485>GPUs.

480
00:19:15.255 --> 00:19:17.315
<00:19:15.255>Um, <00:19:15.455>so <00:19:15.655>your <00:19:15.855>journey <00:19:16.055>was <00:19:16.255>probably, <00:19:16.455>so <00:19:16.655>look,

481
00:19:17.315 --> 00:19:20.595
<00:19:17.315>something <00:19:17.455>like <00:19:17.595>this, <00:19:17.735>you <00:19:17.875>start <00:19:18.015>off <00:19:18.155>on <00:19:18.295>a, <00:19:18.435>your, <00:19:18.575>your <00:19:18.715>laptop

482
00:19:20.655 --> 00:19:21.955
<00:19:20.655>or <00:19:20.889>on <00:19:21.123>your <00:19:21.357>desktop, <00:19:21.591>which <00:19:21.824>doesn't,

483
00:19:21.995 --> 00:19:23.635
<00:19:21.995>you're <00:19:22.169>not <00:19:22.344>making <00:19:22.520>use <00:19:22.695>the <00:19:22.870>GPU, <00:19:23.044>then <00:19:23.219>you <00:19:23.395>move

484
00:19:23.635 --> 00:19:26.355
<00:19:23.635>to <00:19:23.835>a <00:19:24.035>GPU <00:19:24.235>based <00:19:24.435>system, <00:19:24.635>perhaps <00:19:24.835>using <00:19:25.035>qpi.

485
00:19:26.615 --> 00:19:27.755
<00:19:26.615>But <00:19:26.820>then <00:19:27.025>what's <00:19:27.230>the <00:19:27.435>next <00:19:27.641>step?

486
00:19:27.755 --> 00:19:30.715
<00:19:27.755>You <00:19:27.882>want <00:19:28.009>to <00:19:28.136>start <00:19:28.264>using <00:19:28.391>all <00:19:28.518>the <00:19:28.645>GPUs <00:19:28.773>in <00:19:28.900>a <00:19:29.027>server <00:19:29.155>or,

487
00:19:30.735 --> 00:19:32.355
<00:19:30.735>or <00:19:31.201>several <00:19:31.668>servers <00:19:32.135>altogether.

488
00:19:32.775 --> 00:19:34.875
<00:19:32.775>And <00:19:32.950>there's, <00:19:33.125>uh, <00:19:33.300>lots <00:19:33.475>of <00:19:33.650>different <00:19:33.825>strategies <00:19:34.000>for <00:19:34.175>this.

489
00:19:34.885 --> 00:19:37.435
<00:19:34.885>Again, <00:19:35.025>um, <00:19:35.165>uh, <00:19:35.305>some <00:19:35.445>of <00:19:35.585>them <00:19:35.725>make <00:19:35.865>it <00:19:36.004>very, <00:19:36.145>very <00:19:36.285>easy.

490
00:19:37.435 --> 00:19:39.315
<00:19:37.435>Some <00:19:37.610>of <00:19:37.784>it <00:19:37.960>require <00:19:38.135>you <00:19:38.310>to <00:19:38.485>do <00:19:38.659>the <00:19:38.835>work.

491
00:19:40.245 --> 00:19:41.745
<00:19:40.245>So <00:19:40.437>just <00:19:40.630>looking <00:19:40.823>at <00:19:41.016>a <00:19:41.209>few <00:19:41.402>of <00:19:41.594>these.

492
00:19:41.925 --> 00:19:45.065
<00:19:41.925>Um, <00:19:42.080>now <00:19:42.236>there's <00:19:42.391>three <00:19:42.547>talks <00:19:42.702>which <00:19:42.858>I've <00:19:43.013>linked <00:19:43.169>to <00:19:43.325>here.

493
00:19:45.065 --> 00:19:47.945
<00:19:45.065>Again, <00:19:45.220>uh, <00:19:45.376>if <00:19:45.531>you <00:19:45.687>click <00:19:45.842>on <00:19:45.998>these, <00:19:46.153>um, <00:19:46.309>these <00:19:46.465>links,

494
00:19:47.975 --> 00:19:49.945
<00:19:47.975>they'll <00:19:48.175>take <00:19:48.375>you <00:19:48.574>to <00:19:48.774>YouTube <00:19:48.975>videos <00:19:49.175>on <00:19:49.375>talks.

495
00:19:49.945 --> 00:19:52.505
<00:19:49.945>Looking <00:19:50.120>at <00:19:50.294>all <00:19:50.470>these <00:19:50.645>different <00:19:50.820>areas, <00:19:50.995>we, <00:19:51.169>we've <00:19:51.345>tried

496
00:19:52.505 --> 00:19:55.945
<00:19:52.505>to <00:19:52.680>categorize <00:19:52.855>these <00:19:53.030>based <00:19:53.205>on, <00:19:53.380>uh, <00:19:53.555>ease <00:19:53.730>of <00:19:53.905>use

497
00:19:56.365 --> 00:19:57.625
<00:19:56.365>and <00:19:56.648>how <00:19:56.932>general <00:19:57.215>they <00:19:57.499>are.

498
00:19:58.005 --> 00:19:59.905
<00:19:58.005>Um, <00:19:58.205>so <00:19:58.405>ease <00:19:58.605>of <00:19:58.805>use <00:19:59.005>on <00:19:59.205>the <00:19:59.405>left.

499
00:20:00.325 --> 00:20:01.585
<00:20:00.325>So, <00:20:00.514>uh, <00:20:00.703>we'll <00:20:00.892>start <00:20:01.081>at <00:20:01.270>the <00:20:01.459>top

500
00:20:01.585 --> 00:20:03.465
<00:20:01.585>with <00:20:01.818>QPI <00:20:02.051>numeric, <00:20:02.285>which <00:20:02.518>I <00:20:02.751>mentioned <00:20:02.985>earlier.

501
00:20:03.465 --> 00:20:04.985
<00:20:03.465>It <00:20:03.738>looks <00:20:04.012>very <00:20:04.285>much <00:20:04.559>like <00:20:04.832>NumPy.

502
00:20:05.325 --> 00:20:06.905
<00:20:05.325>You <00:20:05.525>can <00:20:05.725>use <00:20:05.925>that <00:20:06.125>to <00:20:06.325>drop <00:20:06.525>that <00:20:06.725>in,

503
00:20:06.905 --> 00:20:08.905
<00:20:06.905>and <00:20:07.080>it <00:20:07.254>will <00:20:07.430>actually <00:20:07.605>allow <00:20:07.780>you <00:20:07.955>to <00:20:08.129>distribute <00:20:08.305>across,

504
00:20:08.905 --> 00:20:10.465
<00:20:08.905>across <00:20:09.254>many, <00:20:09.605>many <00:20:09.955>different <00:20:10.305>GPUs.

505
00:20:11.245 --> 00:20:13.545
<00:20:11.245>Um, <00:20:11.400>and <00:20:11.556>of <00:20:11.711>course, <00:20:11.867>we <00:20:12.022>have <00:20:12.178>things <00:20:12.333>like <00:20:12.489>dask, <00:20:12.645>QDF,

506
00:20:13.545 --> 00:20:14.705
<00:20:13.545>which <00:20:13.806>works <00:20:14.067>for <00:20:14.328>the <00:20:14.589>rapids.

507
00:20:15.005 --> 00:20:17.185
<00:20:15.005>Uh, <00:20:15.205>JAKs, <00:20:15.405>you'll <00:20:15.605>be <00:20:15.805>familiar <00:20:16.005>with <00:20:16.205>PI <00:20:16.405>Torch.

508
00:20:17.245 --> 00:20:20.425
<00:20:17.245>All <00:20:17.400>of <00:20:17.556>these <00:20:17.711>have <00:20:17.867>have <00:20:18.022>their <00:20:18.178>own, <00:20:18.333>um, <00:20:18.489>parallelism, <00:20:18.645>uh,

509
00:20:20.425 --> 00:20:22.145
<00:20:20.425>built <00:20:20.774>in <00:20:21.125>for <00:20:21.475>multiple <00:20:21.825>GPUs.

510
00:20:22.965 --> 00:20:24.625
<00:20:22.965>So <00:20:23.245>intermediate <00:20:23.524>level, <00:20:23.804>we've <00:20:24.084>got <00:20:24.365>layer,

511
00:20:24.635 --> 00:20:27.145
<00:20:24.635>we've <00:20:24.835>got <00:20:25.035>things <00:20:25.235>like <00:20:25.435>dask, <00:20:25.635>uh, <00:20:25.835>leggate <00:20:26.035>is

512
00:20:27.145 --> 00:20:29.305
<00:20:27.145>what <00:20:27.378>coupon <00:20:27.611>numeric <00:20:27.845>actually <00:20:28.078>makes <00:20:28.311>use <00:20:28.545>of.

513
00:20:29.365 --> 00:20:31.345
<00:20:29.365>So <00:20:29.645>that's <00:20:29.925>for <00:20:30.205>doing <00:20:30.485>task-based <00:20:30.765>parallelism.

514
00:20:31.765 --> 00:20:33.945
<00:20:31.765>And <00:20:31.920>then <00:20:32.076>the <00:20:32.231>bottom <00:20:32.387>right, <00:20:32.542>this <00:20:32.698>is <00:20:32.853>for <00:20:33.009>really <00:20:33.165>high,

515
00:20:34.005 --> 00:20:37.385
<00:20:34.005>you <00:20:34.180>know, <00:20:34.355>doing <00:20:34.530>your <00:20:34.705>own <00:20:34.880>sort <00:20:35.055>of, <00:20:35.230>um, <00:20:35.405>implementation

516
00:20:37.405 --> 00:20:38.465
<00:20:37.405>of <00:20:37.723>a <00:20:38.041>parallel <00:20:38.359>library.

517
00:20:38.685 --> 00:20:41.225
<00:20:38.685>We <00:20:38.885>have <00:20:39.085>things <00:20:39.284>like <00:20:39.485>the <00:20:39.685>Nvidia <00:20:39.885>Collective <00:20:40.085>Communications

518
00:20:41.225 --> 00:20:44.505
<00:20:41.225>Library, <00:20:41.458>which <00:20:41.691>is <00:20:41.925>topology <00:20:42.158>aware, <00:20:42.391>it <00:20:42.625>understands

519
00:20:44.505 --> 00:20:46.505
<00:20:44.505>how <00:20:44.785>your <00:20:45.065>GPUs <00:20:45.345>are <00:20:45.625>connected <00:20:45.905>together

520
00:20:46.845 --> 00:20:48.805
<00:20:46.845>and <00:20:47.078>will <00:20:47.311>decide, <00:20:47.545>uh, <00:20:47.778>on <00:20:48.011>the <00:20:48.245>strategy

521
00:20:48.865 --> 00:20:50.445
<00:20:48.865>to <00:20:49.065>make <00:20:49.265>the <00:20:49.465>best <00:20:49.665>use <00:20:49.865>of <00:20:50.065>that <00:20:50.265>knowledge.

522
00:20:50.825 --> 00:20:53.645
<00:20:50.825>Uh, <00:20:50.965>MPI, <00:20:51.105>which <00:20:51.245>many <00:20:51.385>of <00:20:51.525>you <00:20:51.665>we <00:20:51.805>might, <00:20:51.945>well, <00:20:52.085>so, <00:20:52.225>so

523
00:20:53.645 --> 00:20:54.845
<00:20:53.645>of <00:20:53.780>you <00:20:53.915>might <00:20:54.050>be <00:20:54.185>familiar <00:20:54.320>with <00:20:54.455>from <00:20:54.590>the <00:20:54.725>world

524
00:20:54.845 --> 00:20:56.365
<00:20:54.845>of <00:20:55.187>high <00:20:55.529>Performance <00:20:55.871>Computing, <00:20:56.213>uh,

525
00:20:57.045 --> 00:21:00.445
<00:20:57.045>which <00:20:57.185>is <00:20:57.325>a <00:20:57.465>PGAs <00:20:57.605>based <00:20:57.745>model, <00:20:57.885>which <00:20:58.025>allows <00:20:58.165>you <00:20:58.305>to, <00:20:58.445>uh,

526
00:21:00.445 --> 00:21:03.165
<00:21:00.445>present <00:21:00.620>your <00:21:00.794>data <00:21:00.970>as <00:21:01.145>a <00:21:01.320>partition <00:21:01.495>global <00:21:01.669>address <00:21:01.845>space,

527
00:21:03.165 --> 00:21:05.445
<00:21:03.165>which <00:21:03.365>again, <00:21:03.565>makes <00:21:03.764>programming <00:21:03.965>for <00:21:04.165>a <00:21:04.365>lot <00:21:04.565>easier.

528
00:21:06.235 --> 00:21:09.005
<00:21:06.235>Nice <00:21:06.435>thing <00:21:06.635>about <00:21:06.834>MVM <00:21:07.034>is <00:21:07.235>you <00:21:07.435>can, <00:21:07.635>uh,

529
00:21:09.435 --> 00:21:12.485
<00:21:09.435>instigate <00:21:09.668>the <00:21:09.901>communications <00:21:10.135>from <00:21:10.368>the <00:21:10.601>GPU <00:21:10.835>side.

530
00:21:12.635 --> 00:21:14.445
<00:21:12.635>Most <00:21:12.915>of <00:21:13.195>the <00:21:13.475>other <00:21:13.754>approaches <00:21:14.035>require

531
00:21:14.445 --> 00:21:16.685
<00:21:14.445>to <00:21:14.620>you <00:21:14.794>set <00:21:14.970>off <00:21:15.145>communications <00:21:15.320>from <00:21:15.495>the <00:21:15.669>CPU <00:21:15.845>side.

532
00:21:17.025 --> 00:21:19.725
<00:21:17.025>Uh, <00:21:17.152>m <00:21:17.279>Vmm <00:21:17.406>allows <00:21:17.534>you <00:21:17.661>to <00:21:17.788>instigate <00:21:17.915>it <00:21:18.043>from <00:21:18.170>the <00:21:18.297>GPU <00:21:18.425>side,

533
00:21:19.725 --> 00:21:22.445
<00:21:19.725>which <00:21:19.880>fits <00:21:20.036>in <00:21:20.191>quite <00:21:20.347>nicely <00:21:20.502>with <00:21:20.658>the <00:21:20.813>GPU <00:21:20.969>programming <00:21:21.125>model.

534
00:21:22.945 --> 00:21:25.645
<00:21:22.945>So, <00:21:23.100>again, <00:21:23.256>some <00:21:23.411>links <00:21:23.567>there <00:21:23.722>to <00:21:23.878>find <00:21:24.033>out <00:21:24.189>more <00:21:24.345>information.

535
00:21:25.665 --> 00:21:26.565
<00:21:25.665>Uh, <00:21:25.935>as <00:21:26.205>and <00:21:26.475>when

536
00:21:30.205 --> 00:21:32.695
<00:21:30.205>developer <00:21:30.485>tools, <00:21:30.764>um, <00:21:31.044>you <00:21:31.324>can't <00:21:31.605>program

537
00:21:32.915 --> 00:21:35.255
<00:21:32.915>for <00:21:33.090>GPUs <00:21:33.264>without <00:21:33.440>trying <00:21:33.615>making <00:21:33.790>use <00:21:33.965>of <00:21:34.139>developer <00:21:34.315>tools.

538
00:21:35.495 --> 00:21:38.175
<00:21:35.495>I <00:21:35.622>would <00:21:35.749>say <00:21:35.876>the <00:21:36.004>most <00:21:36.131>important <00:21:36.258>tool <00:21:36.385>you <00:21:36.513>have <00:21:36.640>in <00:21:36.767>your <00:21:36.895>toolkit

539
00:21:38.315 --> 00:21:39.975
<00:21:38.315>for <00:21:38.665>GPUs <00:21:39.015>is <00:21:39.365>the <00:21:39.715>profiler.

540
00:21:40.515 --> 00:21:43.175
<00:21:40.515>Um, <00:21:40.642>there's <00:21:40.769>lots <00:21:40.896>of <00:21:41.024>ways <00:21:41.151>of <00:21:41.278>getting <00:21:41.405>things <00:21:41.533>to <00:21:41.660>run <00:21:41.787>on <00:21:41.915>GPUs.

541
00:21:43.285 --> 00:21:44.855
<00:21:43.285>There's <00:21:43.485>also <00:21:43.685>lots <00:21:43.885>of <00:21:44.085>ways <00:21:44.285>to <00:21:44.485>get <00:21:44.685>things

542
00:21:44.855 --> 00:21:46.455
<00:21:44.855>to <00:21:45.205>run <00:21:45.555>inefficiently <00:21:45.905>on <00:21:46.255>GPUs.

543
00:21:46.955 --> 00:21:49.855
<00:21:46.955>So <00:21:47.082>if <00:21:47.209>you <00:21:47.336>make <00:21:47.464>use <00:21:47.591>of <00:21:47.718>the <00:21:47.845>profiling <00:21:47.973>tools <00:21:48.100>available <00:21:48.227>to <00:21:48.355>you,

544
00:21:50.075 --> 00:21:51.175
<00:21:50.075>uh, <00:21:50.273>they <00:21:50.471>will <00:21:50.669>really <00:21:50.867>help <00:21:51.065>you.

545
00:21:51.175 --> 00:21:53.015
<00:21:51.175>And <00:21:51.408>all <00:21:51.641>our <00:21:51.875>tools <00:21:52.108>are <00:21:52.341>Python <00:21:52.575>enabled.

546
00:21:53.635 --> 00:21:56.975
<00:21:53.635>Um, <00:21:53.775>so <00:21:53.915>a <00:21:54.055>couple <00:21:54.195>of <00:21:54.335>ones <00:21:54.475>I'll <00:21:54.615>highlight, <00:21:54.754>uh, <00:21:54.895>insight <00:21:55.035>Systems.

547
00:21:57.355 --> 00:21:59.055
<00:21:57.355>That's <00:21:57.705>the <00:21:58.055>high <00:21:58.405>level <00:21:58.755>profilers

548
00:21:59.055 --> 00:22:01.935
<00:21:59.055>that <00:21:59.230>looks <00:21:59.405>at <00:21:59.580>the <00:21:59.755>interaction <00:21:59.930>of <00:22:00.105>the <00:22:00.280>whole <00:22:00.455>application,

549
00:22:02.205 --> 00:22:05.095
<00:22:02.205>even <00:22:02.332>if <00:22:02.459>it's <00:22:02.586>on <00:22:02.714>multiple <00:22:02.841>GPUs, <00:22:02.968>it'll <00:22:03.095>look <00:22:03.223>at <00:22:03.350>how <00:22:03.477>the <00:22:03.605>CPU

550
00:22:05.095 --> 00:22:06.215
<00:22:05.095>and <00:22:05.431>the <00:22:05.767>GP <00:22:06.102>interacting

551
00:22:06.265 --> 00:22:08.575
<00:22:06.265>where <00:22:06.465>there's <00:22:06.665>data <00:22:06.865>transfer <00:22:07.065>happening <00:22:07.265>and <00:22:07.465>so <00:22:07.665>on.

552
00:22:09.165 --> 00:22:12.055
<00:22:09.165>Then <00:22:09.305>n <00:22:09.445>Insight <00:22:09.585>compute <00:22:09.725>n <00:22:09.865>insight <00:22:10.004>compute <00:22:10.145>gives <00:22:10.284>you <00:22:10.425>a <00:22:10.565>real

553
00:22:12.055 --> 00:22:14.615
<00:22:12.055>deep <00:22:12.230>dive <00:22:12.405>into <00:22:12.580>what <00:22:12.755>the <00:22:12.930>GP <00:22:13.105>itself <00:22:13.280>is <00:22:13.455>doing.

554
00:22:15.075 --> 00:22:16.895
<00:22:15.075>Um, <00:22:15.425>it's <00:22:15.775>a <00:22:16.125>powerful <00:22:16.475>tool

555
00:22:16.895 --> 00:22:18.775
<00:22:16.895>and <00:22:17.070>I, <00:22:17.245>I <00:22:17.420>warn <00:22:17.595>you, <00:22:17.770>there'd <00:22:17.945>be <00:22:18.120>dragons, <00:22:18.295>right?

556
00:22:18.985 --> 00:22:21.375
<00:22:18.985>Don't <00:22:19.125>go <00:22:19.264>into <00:22:19.405>it <00:22:19.544>with, <00:22:19.685>uh, <00:22:19.824>thinking, <00:22:19.965>oh, <00:22:20.104>this'll <00:22:20.245>be <00:22:20.385>easy,

557
00:22:21.755 --> 00:22:23.215
<00:22:21.755>but <00:22:22.193>it's <00:22:22.631>incredibly <00:22:23.069>powerful

558
00:22:23.215 --> 00:22:26.015
<00:22:23.215>and <00:22:23.370>it <00:22:23.526>actually <00:22:23.681>ties <00:22:23.837>all <00:22:23.992>the <00:22:24.148>performances <00:22:24.303>that <00:22:24.459>you're <00:22:24.615>seeing

559
00:22:26.075 --> 00:22:28.175
<00:22:26.075>to <00:22:26.308>what's <00:22:26.541>actually <00:22:26.775>happening <00:22:27.008>on <00:22:27.241>the <00:22:27.475>hardware.

560
00:22:28.435 --> 00:22:30.015
<00:22:28.435>So <00:22:28.635>it's <00:22:28.835>a <00:22:29.034>really <00:22:29.235>useful <00:22:29.435>tool <00:22:29.635>for <00:22:29.835>that.

561
00:22:30.475 --> 00:22:34.175
<00:22:30.475>And <00:22:30.615>of <00:22:30.754>course, <00:22:30.895>in <00:22:31.034>terms <00:22:31.175>of, <00:22:31.314>uh, <00:22:31.455>your <00:22:31.594>favorite, <00:22:31.735>um, <00:22:31.875>uh,

562
00:22:35.395 --> 00:22:39.535
<00:22:35.395>uh, <00:22:35.550>IDE <00:22:35.706>integrations, <00:22:35.861>uh, <00:22:36.017>you <00:22:36.172>know, <00:22:36.328>we <00:22:36.483>support, <00:22:36.639>uh, <00:22:36.795>uh,

563
00:22:39.535 --> 00:22:40.975
<00:22:39.535>visual <00:22:39.859>Studio <00:22:40.183>and <00:22:40.507>so <00:22:40.831>on,

564
00:22:40.975 --> 00:22:43.135
<00:22:40.975>and <00:22:41.130>you <00:22:41.286>can <00:22:41.441>incorporate <00:22:41.597>the <00:22:41.752>NVIDIA <00:22:41.908>tools <00:22:42.063>as <00:22:42.219>part <00:22:42.375>of

565
00:22:43.135 --> 00:22:44.255
<00:22:43.135>that <00:22:43.471>ecosystem <00:22:43.807>as <00:22:44.143>well.

566
00:22:44.755 --> 00:22:46.375
<00:22:44.755>We <00:22:44.988>have <00:22:45.221>our <00:22:45.455>debugging <00:22:45.688>tools <00:22:45.921>as <00:22:46.155>well.

567
00:22:46.375 --> 00:22:50.395
<00:22:46.375>We <00:22:46.608>have <00:22:46.841>our, <00:22:47.075>uh, <00:22:47.308>insight, <00:22:47.541>um, <00:22:47.775>um,

568
00:22:51.185 --> 00:22:53.635
<00:22:51.185>sanitizer <00:22:51.360>tools <00:22:51.534>as <00:22:51.710>well, <00:22:51.885>which <00:22:52.060>allow <00:22:52.235>you <00:22:52.409>to <00:22:52.585>check

569
00:22:53.635 --> 00:22:55.235
<00:22:53.635>for <00:22:53.915>things <00:22:54.195>like <00:22:54.475>array <00:22:54.754>out <00:22:55.035>bounds,

570
00:22:55.425 --> 00:22:57.395
<00:22:55.425>data <00:22:55.600>raise <00:22:55.774>conditions <00:22:55.950>and <00:22:56.125>all <00:22:56.300>that <00:22:56.475>sort <00:22:56.649>of <00:22:56.825>thing.

571
00:22:57.535 --> 00:22:59.435
<00:22:57.535>And <00:22:57.710>all <00:22:57.885>of <00:22:58.060>these <00:22:58.235>work <00:22:58.410>with <00:22:58.585>the <00:22:58.760>Python <00:22:58.935>ecosystem.

572
00:22:59.535 --> 00:23:01.475
<00:22:59.535>So, <00:22:59.735>uh, <00:22:59.935>I <00:23:00.135>just <00:23:00.335>wanted <00:23:00.535>to <00:23:00.735>highlight <00:23:00.935>some

573
00:23:01.475 --> 00:23:02.795
<00:23:01.475>of <00:23:01.673>these <00:23:01.870>which <00:23:02.069>are <00:23:02.267>available <00:23:02.465>to <00:23:02.663>you.

574
00:23:04.855 --> 00:23:07.155
<00:23:04.855>Now, <00:23:05.030>you <00:23:05.205>may <00:23:05.380>be <00:23:05.555>thinking, <00:23:05.730>this <00:23:05.905>sounds <00:23:06.080>very <00:23:06.255>interesting,

575
00:23:07.155 --> 00:23:08.515
<00:23:07.155>Paul, <00:23:07.359>can <00:23:07.563>we <00:23:07.767>try <00:23:07.971>these <00:23:08.175>things <00:23:08.379>out?

576
00:23:08.515 --> 00:23:09.795
<00:23:08.515>Well, <00:23:08.803>yes <00:23:09.091>you <00:23:09.379>can. <00:23:09.667>Um,

577
00:23:09.855 --> 00:23:11.795
<00:23:09.855>so <00:23:10.088>we <00:23:10.321>have <00:23:10.555>our <00:23:10.788>accelerated <00:23:11.021>compute <00:23:11.255>hub.

578
00:23:12.255 --> 00:23:14.595
<00:23:12.255>Um, <00:23:12.455>it's <00:23:12.655>got <00:23:12.855>lots <00:23:13.055>of <00:23:13.255>examples, <00:23:13.455>uh, <00:23:13.655>and

579
00:23:14.795 --> 00:23:16.595
<00:23:14.795>whenever <00:23:14.995>anything <00:23:15.195>new <00:23:15.395>comes <00:23:15.595>out <00:23:15.795>there, <00:23:15.995>we <00:23:16.195>try

580
00:23:16.595 --> 00:23:19.115
<00:23:16.595>and <00:23:16.735>have <00:23:16.875>a, <00:23:17.015>an <00:23:17.155>example <00:23:17.295>there <00:23:17.435>for <00:23:17.575>you <00:23:17.715>to <00:23:17.855>try <00:23:17.995>out.

581
00:23:20.175 --> 00:23:21.915
<00:23:20.175>And <00:23:20.408>again, <00:23:20.641>uh, <00:23:20.875>QR <00:23:21.108>code <00:23:21.341>for <00:23:21.575>you,

582
00:23:21.915 --> 00:23:23.715
<00:23:21.915>but <00:23:22.042>I've <00:23:22.169>put <00:23:22.296>it <00:23:22.424>at <00:23:22.551>the <00:23:22.678>end <00:23:22.805>of <00:23:22.933>the <00:23:23.060>slides <00:23:23.187>as <00:23:23.315>well.

583
00:23:24.295 --> 00:23:27.075
<00:23:24.295>Um, <00:23:24.422>and <00:23:24.549>so <00:23:24.676>there's <00:23:24.804>lots <00:23:24.931>of <00:23:25.058>examples <00:23:25.185>there <00:23:25.313>for <00:23:25.440>you <00:23:25.567>to <00:23:25.695>work

584
00:23:27.075 --> 00:23:28.875
<00:23:27.075>through, <00:23:27.230>and <00:23:27.386>also <00:23:27.541>some <00:23:27.697>labs <00:23:27.852>that <00:23:28.008>you <00:23:28.163>can <00:23:28.319>try <00:23:28.475>out,

585
00:23:28.875 --> 00:23:30.835
<00:23:28.875>which <00:23:29.050>will <00:23:29.225>take <00:23:29.400>you <00:23:29.575>step <00:23:29.750>by <00:23:29.925>step <00:23:30.100>through <00:23:30.275>some

586
00:23:30.835 --> 00:23:32.675
<00:23:30.835>of <00:23:31.035>the <00:23:31.235>different <00:23:31.435>ways <00:23:31.635>of <00:23:31.835>programming <00:23:32.035>for <00:23:32.235>GPUs.

587
00:23:33.495 --> 00:23:35.595
<00:23:33.495>So <00:23:33.728>that's <00:23:33.961>a <00:23:34.195>really, <00:23:34.428>really <00:23:34.661>useful <00:23:34.895>resource.

588
00:23:36.335 --> 00:23:39.235
<00:23:36.335>Um, <00:23:36.535>also, <00:23:36.735>we're <00:23:36.935>giving <00:23:37.135>away <00:23:37.335>some <00:23:37.535>free <00:23:37.735>courses.

589
00:23:39.535 --> 00:23:41.875
<00:23:39.535>So <00:23:39.690>if <00:23:39.846>you, <00:23:40.001>uh, <00:23:40.157>sign <00:23:40.312>up <00:23:40.468>to <00:23:40.623>our <00:23:40.779>developer <00:23:40.935>program,

590
00:23:42.255 --> 00:23:43.795
<00:23:42.255>you <00:23:42.486>get <00:23:42.717>access <00:23:42.948>to <00:23:43.179>a <00:23:43.410>free <00:23:43.641>course.

591
00:23:44.255 --> 00:23:47.085
<00:23:44.255>Um, <00:23:44.395>these <00:23:44.535>are, <00:23:44.675>some <00:23:44.815>of <00:23:44.955>them <00:23:45.095>are <00:23:45.235>eight <00:23:45.375>hour <00:23:45.515>long <00:23:45.655>courses.

592
00:23:47.085 --> 00:23:48.685
<00:23:47.085>They're <00:23:47.435>all <00:23:47.785>Jupyter <00:23:48.135>Notebook <00:23:48.485>based.

593
00:23:48.905 --> 00:23:52.045
<00:23:48.905>You <00:23:49.045>get <00:23:49.185>access <00:23:49.325>to <00:23:49.465>cloud <00:23:49.605>resources <00:23:49.745>to <00:23:49.885>run <00:23:50.024>them <00:23:50.165>on, <00:23:50.305>uh,

594
00:23:52.045 --> 00:23:53.645
<00:23:52.045>and <00:23:52.200>allows <00:23:52.356>you <00:23:52.511>to <00:23:52.667>try <00:23:52.822>some <00:23:52.978>of <00:23:53.133>the <00:23:53.289>things <00:23:53.445>out.

595
00:23:53.645 --> 00:23:55.445
<00:23:53.645>I've <00:23:53.878>to <00:23:54.111>spoke <00:23:54.345>today. <00:23:54.578>So, <00:23:54.811>uh, <00:23:55.045>one

596
00:23:55.445 --> 00:23:58.005
<00:23:55.445>of <00:23:55.572>the <00:23:55.699>key <00:23:55.826>ones <00:23:55.954>in <00:23:56.081>there <00:23:56.208>is <00:23:56.335>the, <00:23:56.463>uh, <00:23:56.590>qda <00:23:56.717>Python <00:23:56.845>course,

597
00:23:58.005 --> 00:23:59.005
<00:23:58.005>which <00:23:58.230>looks <00:23:58.455>at <00:23:58.680>using <00:23:58.905>number.

598
00:23:59.265 --> 00:24:01.445
<00:23:59.265>And <00:23:59.440>again, <00:23:59.615>I've <00:23:59.790>not <00:23:59.965>mentioned <00:24:00.140>number <00:24:00.315>a <00:24:00.490>lot <00:24:00.665>today

599
00:24:01.605 --> 00:24:02.885
<00:24:01.605>'cause <00:24:01.797>I <00:24:01.989>spoke <00:24:02.181>about <00:24:02.373>it <00:24:02.565>last <00:24:02.757>year.

600
00:24:03.345 --> 00:24:04.485
<00:24:03.345>Uh, <00:24:03.601>but <00:24:03.858>that, <00:24:04.114>that's <00:24:04.370>one

601
00:24:04.485 --> 00:24:06.045
<00:24:04.485>of <00:24:04.718>the <00:24:04.951>courses <00:24:05.185>available <00:24:05.418>to <00:24:05.651>you <00:24:05.885>there.

602
00:24:07.535 --> 00:24:10.595
<00:24:07.535>Um, <00:24:07.662>we <00:24:07.789>also <00:24:07.916>have <00:24:08.044>a <00:24:08.171>booth, <00:24:08.298>uh, <00:24:08.425>down, <00:24:08.553>down <00:24:08.680>in <00:24:08.807>the, <00:24:08.935>uh,

603
00:24:10.595 --> 00:24:12.755
<00:24:10.595>the <00:24:10.795>other <00:24:10.995>room, <00:24:11.195>uh, <00:24:11.395>a <00:24:11.595>corner <00:24:11.795>booth <00:24:11.995>there.

604
00:24:12.775 --> 00:24:14.915
<00:24:12.775>So <00:24:12.902>please, <00:24:13.029>if <00:24:13.156>there's <00:24:13.284>anything <00:24:13.411>you <00:24:13.538>want <00:24:13.665>to <00:24:13.793>chat <00:24:13.920>to <00:24:14.047>me <00:24:14.175>about,

605
00:24:14.985 --> 00:24:17.475
<00:24:14.985>I'll <00:24:15.112>be <00:24:15.239>around <00:24:15.366>that <00:24:15.494>booth <00:24:15.621>for <00:24:15.748>the <00:24:15.875>next <00:24:16.003>day <00:24:16.130>and <00:24:16.257>a <00:24:16.385>half.

606
00:24:17.775 --> 00:24:19.395
<00:24:17.775>Um, <00:24:18.008>I <00:24:18.241>can <00:24:18.475>go <00:24:18.708>into <00:24:18.941>more <00:24:19.175>detail

607
00:24:19.495 --> 00:24:21.595
<00:24:19.495>or <00:24:19.728>I <00:24:19.961>can <00:24:20.195>answer <00:24:20.428>high <00:24:20.661>performance <00:24:20.895>computing

608
00:24:21.595 --> 00:24:22.915
<00:24:21.595>related <00:24:21.832>questions <00:24:22.070>and <00:24:22.307>things <00:24:22.545>like <00:24:22.783>that.

609
00:24:23.115 --> 00:24:24.755
<00:24:23.115>'cause <00:24:23.315>that's <00:24:23.515>my <00:24:23.715>thing. <00:24:23.915>Also, <00:24:24.115>we've <00:24:24.315>got <00:24:24.515>lots

610
00:24:24.755 --> 00:24:26.835
<00:24:24.755>of <00:24:25.035>other <00:24:25.315>talks <00:24:25.595>happening, <00:24:25.875>uh, <00:24:26.155>throughout,

611
00:24:26.975 --> 00:24:28.235
<00:24:26.975>uh, <00:24:27.352>uh, <00:24:27.731>this <00:24:28.109>event.

612
00:24:28.735 --> 00:24:31.975
<00:24:28.735>Um, <00:24:28.909>and <00:24:29.084>it <00:24:29.260>just <00:24:29.435>remains <00:24:29.610>to <00:24:29.784>say <00:24:29.959>thank <00:24:30.135>you

613
00:24:32.275 --> 00:24:33.375
<00:24:32.275>and, <00:24:32.605>uh, <00:24:32.935>any <00:24:33.265>questions.