cell_dependencies7$1732b3e0-e2de-4b27-b29f-fb62ff38ba56precedence_heuristic cell_id$1732b3e0-e2de-4b27-b29f-fb62ff38ba56downstream_cells_mapupstream_cells_map@md_strgetindex$04e552e5-e1b4-4dc4-b6f0-634ccab49039precedence_heuristic cell_id$04e552e5-e1b4-4dc4-b6f0-634ccab49039downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$68b25c38-7c43-42fd-89ec-a6aede2e467aprecedence_heuristic cell_id$68b25c38-7c43-42fd-89ec-a6aede2e467adownstream_cells_mapupstream_cells_map@md_strgetindex$6ebb3eae-c7c6-469c-9710-a98d18b349dcprecedence_heuristic cell_id$6ebb3eae-c7c6-469c-9710-a98d18b349dcdownstream_cells_mapupstream_cells_map@md_strgetindex$e626343e-44ec-48cc-8a4a-2ada0fe05cf6precedence_heuristic cell_id$e626343e-44ec-48cc-8a4a-2ada0fe05cf6downstream_cells_mapcpu$ab04cd81-8dab-4dca-a77d-e1da369bce1d$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bupstream_cells_mapCSV$4d557e55-abaa-4526-9a80-1d32fd656633Downloads$4d557e55-abaa-4526-9a80-1d32fd656633!Float64DataFrameCSV.readisnothingtryparse:Downloads.downloadsort!$127a5424-c2ad-4157-baf3-ceacc53fcc63precedence_heuristic cell_id$127a5424-c2ad-4157-baf3-ceacc53fcc63downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$4d557e55-abaa-4526-9a80-1d32fd656633precedence_heuristiccell_id$4d557e55-abaa-4526-9a80-1d32fd656633downstream_cells_mapDownloads$e626343e-44ec-48cc-8a4a-2ada0fe05cf6$5e0febd2-3f0d-4643-8401-4abd553ff14eCSV$e626343e-44ec-48cc-8a4a-2ada0fe05cf6$5e0febd2-3f0d-4643-8401-4abd553ff14eUnitfulPlutoUI$3136760a-2be1-11f0-082c-73210e038b56$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cDataFramesHypertextLiteral$3136760a-2be1-11f0-082c-73210e038b56$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cExperimentalLayoutBenchmarkToolsLuxorPlutoTeachingTools$3136760a-2be1-11f0-082c-73210e038b56$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cupstream_cells_map$6b34f98b-83df-4ddf-a736-1e76f3670e4eprecedence_heuristic cell_id$6b34f98b-83df-4ddf-a736-1e76f3670e4edownstream_cells_mapupstream_cells_map@md_strgetindex$0a08cba4-cfb8-46a5-b85e-a826e4637af8precedence_heuristic cell_id$0a08cba4-cfb8-46a5-b85e-a826e4637af8downstream_cells_mapupstream_cells_map@md_strasidegetindex$a48b8239-ff4c-4b14-8f6e-88d240bd29acprecedence_heuristic cell_id$a48b8239-ff4c-4b14-8f6e-88d240bd29acdownstream_cells_mapupstream_cells_map@md_strgetindex$7471cb12-234e-4b4e-83bc-8ebca7493647precedence_heuristic cell_id$7471cb12-234e-4b4e-83bc-8ebca7493647downstream_cells_mapShortCodes$9d2ab913-28f8-443b-a60f-74a6d9e083e8PlotlyBase$ab04cd81-8dab-4dca-a77d-e1da369bce1d$23007175-ffd5-4cb3-9b8c-344eb5d7cce1PlutoPlotly$ab04cd81-8dab-4dca-a77d-e1da369bce1d$23007175-ffd5-4cb3-9b8c-344eb5d7cce1upstream_cells_map$23007175-ffd5-4cb3-9b8c-344eb5d7cce1precedence_heuristic cell_id$23007175-ffd5-4cb3-9b8c-344eb5d7cce1downstream_cells_mapupstream_cells_map:PlotlyBase.histogramgpu$5e0febd2-3f0d-4643-8401-4abd553ff14ePlotlyBase$7471cb12-234e-4b4e-83bc-8ebca7493647PlutoPlotly$7471cb12-234e-4b4e-83bc-8ebca7493647PlutoPlotly.plotPlotlyBase.LayoutVector$1d05bb8f-466f-4b48-9c31-d92605282663precedence_heuristic cell_id$1d05bb8f-466f-4b48-9c31-d92605282663downstream_cells_mapupstream_cells_map@md_strgetindex$f1482d26-4aaf-44a9-b2cc-c672581bea36precedence_heuristic cell_id$f1482d26-4aaf-44a9-b2cc-c672581bea36downstream_cells_mapupstream_cells_map@md_strgetindex$e01ddf29-9dd4-426c-aa44-65253dfc17bcprecedence_heuristic cell_id$e01ddf29-9dd4-426c-aa44-65253dfc17bcdownstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$2ee9c7b0-b647-4f8a-be9f-92ab421176e0precedence_heuristic cell_id$2ee9c7b0-b647-4f8a-be9f-92ab421176e0downstream_cells_mapupstream_cells_map@md_strgetindex$6ee903bb-66ab-496c-baf9-0c39f5dadda8precedence_heuristic cell_id$6ee903bb-66ab-496c-baf9-0c39f5dadda8downstream_cells_mapupstream_cells_mapgpu$5e0febd2-3f0d-4643-8401-4abd553ff14e$af7cb311-594a-4f87-b75d-f982bf81da61precedence_heuristic cell_id$af7cb311-594a-4f87-b75d-f982bf81da61downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$9d2ab913-28f8-443b-a60f-74a6d9e083e8precedence_heuristic cell_id$9d2ab913-28f8-443b-a60f-74a6d9e083e8downstream_cells_mapupstream_cells_mapShortCodes$7471cb12-234e-4b4e-83bc-8ebca7493647ShortCodes.DOI$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9precedence_heuristic cell_id$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9downstream_cells_mapupstream_cells_map@md_strcitezeus$dee22937-fb28-4c25-8948-e8c3d6e86604getindex$02303063-676b-4a82-b15a-676120838a21precedence_heuristic cell_id$02303063-676b-4a82-b15a-676120838a21downstream_cells_mapupstream_cells_map@md_strgetindex$3fbdadde-05a3-4737-899b-3f4e352be7eeprecedence_heuristic cell_id$3fbdadde-05a3-4737-899b-3f4e352be7eedownstream_cells_mapupstream_cells_map@md_strFoldablegetindex$0adbb198-25a5-42ef-8fe0-9d725b671c3aprecedence_heuristic cell_id$0adbb198-25a5-42ef-8fe0-9d725b671c3adownstream_cells_mapupstream_cells_map@md_strgetindex$e1867b63-647e-4cd3-be2b-3af5bb18f709precedence_heuristic cell_id$e1867b63-647e-4cd3-be2b-3af5bb18f709downstream_cells_mapupstream_cells_map@md_strgetindex$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88cprecedence_heuristic cell_id$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88cdownstream_cells_mapupstream_cells_map@md_strgetindex$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bprecedence_heuristic cell_id$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bdownstream_cells_mapupstream_cells_mapcpu$e626343e-44ec-48cc-8a4a-2ada0fe05cf6$04ec5e72-71b8-4a63-b73f-b1851664445cprecedence_heuristic cell_id$04ec5e72-71b8-4a63-b73f-b1851664445cdownstream_cells_mapupstream_cells_map:/@u_str*DataFramerounduconvert$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4precedence_heuristic cell_id$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4downstream_cells_mapupstream_cells_map@md_strgetindex$91a1971d-1e70-489d-9026-d9312207c112precedence_heuristic cell_id$91a1971d-1e70-489d-9026-d9312207c112downstream_cells_mapupstream_cells_map@md_strgetindex$3136760a-2be1-11f0-082c-73210e038b56precedence_heuristic cell_id$3136760a-2be1-11f0-082c-73210e038b56downstream_cells_mapupstream_cells_mapPlutoUI.TableOfContentsHypertextLiteral.BypassHypertextLiteral.ResultHypertextLiteral$4d557e55-abaa-4526-9a80-1d32fd656633PlutoUI$4d557e55-abaa-4526-9a80-1d32fd656633HypertextLiteral.content$PlutoTeachingTools.ChooseDisplayModePlutoTeachingTools$4d557e55-abaa-4526-9a80-1d32fd656633@htl$86c3ecfb-cffc-492b-8f15-3105608a9203precedence_heuristic cell_id$86c3ecfb-cffc-492b-8f15-3105608a9203downstream_cells_mapupstream_cells_map@md_strgetindex$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63precedence_heuristic cell_id$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63downstream_cells_mapupstream_cells_map@md_strgetindex$fc2b703d-d692-470c-a503-335426b50f1aprecedence_heuristic cell_id$fc2b703d-d692-470c-a503-335426b50f1adownstream_cells_mapupstream_cells_map@md_strgetindex$417c20b5-9ec3-48d7-96c6-6d86401dab86precedence_heuristic cell_id$417c20b5-9ec3-48d7-96c6-6d86401dab86downstream_cells_mapupstream_cells_map@md_strgetindex$14bf7b19-2cf7-4f41-960b-de5bafa398b9precedence_heuristic cell_id$14bf7b19-2cf7-4f41-960b-de5bafa398b9downstream_cells_mapupstream_cells_map@md_strgetindex$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03precedence_heuristic cell_id$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$09382a24-7e35-45ac-bfbc-46ea15a40590precedence_heuristic cell_id$09382a24-7e35-45ac-bfbc-46ea15a40590downstream_cells_mapupstream_cells_map@md_strgetindex$e31d6a8c-942e-4a65-a073-96ef250163fbprecedence_heuristic cell_id$e31d6a8c-942e-4a65-a073-96ef250163fbdownstream_cells_mapupstream_cells_map@md_strgetindex$ab04cd81-8dab-4dca-a77d-e1da369bce1dprecedence_heuristic cell_id$ab04cd81-8dab-4dca-a77d-e1da369bce1ddownstream_cells_mapupstream_cells_map:PlotlyBase.histogramcpu$e626343e-44ec-48cc-8a4a-2ada0fe05cf6PlotlyBase$7471cb12-234e-4b4e-83bc-8ebca7493647PlutoPlotly$7471cb12-234e-4b4e-83bc-8ebca7493647PlutoPlotly.plotPlotlyBase.LayoutVector$362631aa-fc47-4f12-b1c4-b687575738e8precedence_heuristic cell_id$362631aa-fc47-4f12-b1c4-b687575738e8downstream_cells_mapupstream_cells_map@md_strgetindex$78220d6a-012c-400b-9a02-34772264dc31precedence_heuristic cell_id$78220d6a-012c-400b-9a02-34772264dc31downstream_cells_mapupstream_cells_map@md_strgetindex$de0ac9cc-4664-4068-ba5f-fc4d36d479e5precedence_heuristic cell_id$de0ac9cc-4664-4068-ba5f-fc4d36d479e5downstream_cells_mapupstream_cells_mapimg$f8bbe15a-30be-4e5f-9c88-4c46b1d0307c$a23fc565-360b-4528-91eb-588a218bedb0precedence_heuristic cell_id$a23fc565-360b-4528-91eb-588a218bedb0downstream_cells_mapupstream_cells_map@md_strgetindex$d76e68a9-2925-4602-86ed-5fe9d1d82ce0precedence_heuristic cell_id$d76e68a9-2925-4602-86ed-5fe9d1d82ce0downstream_cells_mapupstream_cells_map@md_strasidegetindex$584168f4-facb-4ab8-88af-c2e6e46f981eprecedence_heuristic cell_id$584168f4-facb-4ab8-88af-c2e6e46f981edownstream_cells_mapupstream_cells_map@md_strgetindex$dee22937-fb28-4c25-8948-e8c3d6e86604precedence_heuristic cell_id$dee22937-fb28-4c25-8948-e8c3d6e86604downstream_cells_mapcitezeus$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9upstream_cells_map$5e0febd2-3f0d-4643-8401-4abd553ff14eprecedence_heuristic cell_id$5e0febd2-3f0d-4643-8401-4abd553ff14edownstream_cells_mapgpu$23007175-ffd5-4cb3-9b8c-344eb5d7cce1$6ee903bb-66ab-496c-baf9-0c39f5dadda8upstream_cells_mapDownloads$4d557e55-abaa-4526-9a80-1d32fd656633CSV$4d557e55-abaa-4526-9a80-1d32fd656633missingDownloads.downloadpush!sort!DataFrameCSV.read$9ee51ff3-73c7-45eb-a4f2-29b191abbf3aprecedence_heuristic cell_id$9ee51ff3-73c7-45eb-a4f2-29b191abbf3adownstream_cells_mapupstream_cells_map@md_strgetindex$eb328609-d0a0-4984-aba5-00ab7e90c763precedence_heuristic cell_id$eb328609-d0a0-4984-aba5-00ab7e90c763downstream_cells_mapupstream_cells_map@md_strgetindex$64c9a463-7109-4ef0-9789-4fc885e98be9precedence_heuristic cell_id$64c9a463-7109-4ef0-9789-4fc885e98be9downstream_cells_mapupstream_cells_map@md_strgetindex$483e6ccc-114f-4be2-8606-0b6a35b8e513precedence_heuristic cell_id$483e6ccc-114f-4be2-8606-0b6a35b8e513downstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$22e59d9d-6abc-42eb-86a8-5b3462f7529eprecedence_heuristic cell_id$22e59d9d-6abc-42eb-86a8-5b3462f7529edownstream_cells_mapupstream_cells_mapBaseBase.Docs.HTML@html_str$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cprecedence_heuristic cell_id$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cdownstream_cells_mapsave_imagePath$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cimgpathURL$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cimg$de0ac9cc-4664-4068-ba5f-fc4d36d479e5upstream_cells_map!PlutoUI$4d557e55-abaa-4526-9a80-1d32fd656633joinpathStringstartswith@htlPlutoTeachingTools$4d557e55-abaa-4526-9a80-1d32fd656633HypertextLiteral.ResultinsplitHypertextLiteral.BypassPlutoUI.LocalResourceHypertextLiteral.contentendHypertextLiteral.attribute_pair&PlutoTeachingTools.RobustLocalResourcePath$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cURL$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cHypertextLiteral$4d557e55-abaa-4526-9a80-1d32fd656633*@__DIR__$d95d4506-0517-4460-a555-3a7767fb5c71precedence_heuristic cell_id$d95d4506-0517-4460-a555-3a7767fb5c71downstream_cells_mapupstream_cells_map@md_strFoldablegetindex$23999906-85bc-4c5f-9b42-2c9f4a63b9b8precedence_heuristic cell_id$23999906-85bc-4c5f-9b42-2c9f4a63b9b8downstream_cells_mapupstream_cells_map@md_strgetindexcell_execution_order7$4d557e55-abaa-4526-9a80-1d32fd656633$3136760a-2be1-11f0-082c-73210e038b56$f1482d26-4aaf-44a9-b2cc-c672581bea36$9ee51ff3-73c7-45eb-a4f2-29b191abbf3a$483e6ccc-114f-4be2-8606-0b6a35b8e513$68b25c38-7c43-42fd-89ec-a6aede2e467a$417c20b5-9ec3-48d7-96c6-6d86401dab86$a23fc565-360b-4528-91eb-588a218bedb0$04e552e5-e1b4-4dc4-b6f0-634ccab49039$362631aa-fc47-4f12-b1c4-b687575738e8$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63$6ebb3eae-c7c6-469c-9710-a98d18b349dc$e31d6a8c-942e-4a65-a073-96ef250163fb$d76e68a9-2925-4602-86ed-5fe9d1d82ce0$91a1971d-1e70-489d-9026-d9312207c112$af7cb311-594a-4f87-b75d-f982bf81da61$1732b3e0-e2de-4b27-b29f-fb62ff38ba56$e01ddf29-9dd4-426c-aa44-65253dfc17bc$e1867b63-647e-4cd3-be2b-3af5bb18f709$127a5424-c2ad-4157-baf3-ceacc53fcc63$86c3ecfb-cffc-492b-8f15-3105608a9203$78220d6a-012c-400b-9a02-34772264dc31$2ee9c7b0-b647-4f8a-be9f-92ab421176e0$1d05bb8f-466f-4b48-9c31-d92605282663$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88c$14bf7b19-2cf7-4f41-960b-de5bafa398b9$e626343e-44ec-48cc-8a4a-2ada0fe05cf6$43d03970-8f6e-4ec5-81b4-e2d2ce332a7b$09382a24-7e35-45ac-bfbc-46ea15a40590$5e0febd2-3f0d-4643-8401-4abd553ff14e$6ee903bb-66ab-496c-baf9-0c39f5dadda8$a48b8239-ff4c-4b14-8f6e-88d240bd29ac$64c9a463-7109-4ef0-9789-4fc885e98be9$04ec5e72-71b8-4a63-b73f-b1851664445c$0a08cba4-cfb8-46a5-b85e-a826e4637af8$eb328609-d0a0-4984-aba5-00ab7e90c763$584168f4-facb-4ab8-88af-c2e6e46f981e$02303063-676b-4a82-b15a-676120838a21$0adbb198-25a5-42ef-8fe0-9d725b671c3a$d95d4506-0517-4460-a555-3a7767fb5c71$6b34f98b-83df-4ddf-a736-1e76f3670e4e$dee22937-fb28-4c25-8948-e8c3d6e86604$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4$23999906-85bc-4c5f-9b42-2c9f4a63b9b8$fc2b703d-d692-470c-a503-335426b50f1a$3fbdadde-05a3-4737-899b-3f4e352be7ee$22e59d9d-6abc-42eb-86a8-5b3462f7529e$7471cb12-234e-4b4e-83bc-8ebca7493647$ab04cd81-8dab-4dca-a77d-e1da369bce1d$23007175-ffd5-4cb3-9b8c-344eb5d7cce1$9d2ab913-28f8-443b-a60f-74a6d9e083e8$f8bbe15a-30be-4e5f-9c88-4c46b1d0307c$de0ac9cc-4664-4068-ba5f-fc4d36d479e5last_hot_reload_timeprocess_statusreadypath9/home/runner/work/LINMA2710/LINMA2710/Lectures/5_power.jlpluto_versionv0.20.28cell_order7$3136760a-2be1-11f0-082c-73210e038b56$f1482d26-4aaf-44a9-b2cc-c672581bea36$9ee51ff3-73c7-45eb-a4f2-29b191abbf3a$483e6ccc-114f-4be2-8606-0b6a35b8e513$68b25c38-7c43-42fd-89ec-a6aede2e467a$417c20b5-9ec3-48d7-96c6-6d86401dab86$de0ac9cc-4664-4068-ba5f-fc4d36d479e5$a23fc565-360b-4528-91eb-588a218bedb0$04e552e5-e1b4-4dc4-b6f0-634ccab49039$362631aa-fc47-4f12-b1c4-b687575738e8$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63$6ebb3eae-c7c6-469c-9710-a98d18b349dc$e31d6a8c-942e-4a65-a073-96ef250163fb$d76e68a9-2925-4602-86ed-5fe9d1d82ce0$91a1971d-1e70-489d-9026-d9312207c112$af7cb311-594a-4f87-b75d-f982bf81da61$1732b3e0-e2de-4b27-b29f-fb62ff38ba56$e01ddf29-9dd4-426c-aa44-65253dfc17bc$e1867b63-647e-4cd3-be2b-3af5bb18f709$127a5424-c2ad-4157-baf3-ceacc53fcc63$86c3ecfb-cffc-492b-8f15-3105608a9203$78220d6a-012c-400b-9a02-34772264dc31$2ee9c7b0-b647-4f8a-be9f-92ab421176e0$1d05bb8f-466f-4b48-9c31-d92605282663$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88c$14bf7b19-2cf7-4f41-960b-de5bafa398b9$ab04cd81-8dab-4dca-a77d-e1da369bce1d$43d03970-8f6e-4ec5-81b4-e2d2ce332a7b$e626343e-44ec-48cc-8a4a-2ada0fe05cf6$09382a24-7e35-45ac-bfbc-46ea15a40590$23007175-ffd5-4cb3-9b8c-344eb5d7cce1$6ee903bb-66ab-496c-baf9-0c39f5dadda8$5e0febd2-3f0d-4643-8401-4abd553ff14e$a48b8239-ff4c-4b14-8f6e-88d240bd29ac$64c9a463-7109-4ef0-9789-4fc885e98be9$04ec5e72-71b8-4a63-b73f-b1851664445c$0a08cba4-cfb8-46a5-b85e-a826e4637af8$eb328609-d0a0-4984-aba5-00ab7e90c763$584168f4-facb-4ab8-88af-c2e6e46f981e$02303063-676b-4a82-b15a-676120838a21$0adbb198-25a5-42ef-8fe0-9d725b671c3a$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9$d95d4506-0517-4460-a555-3a7767fb5c71$6b34f98b-83df-4ddf-a736-1e76f3670e4e$dee22937-fb28-4c25-8948-e8c3d6e86604$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4$23999906-85bc-4c5f-9b42-2c9f4a63b9b8$9d2ab913-28f8-443b-a60f-74a6d9e083e8$fc2b703d-d692-470c-a503-335426b50f1a$3fbdadde-05a3-4737-899b-3f4e352be7ee$22e59d9d-6abc-42eb-86a8-5b3462f7529e$4d557e55-abaa-4526-9a80-1d32fd656633$7471cb12-234e-4b4e-83bc-8ebca7493647$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cjulia_versionv1.12.6published_objects597f9bbee-5920-11f1-b5b7-d122522cc66f/aa7f8f717988c4edframesconfigshowLinkªscrollZoomèeditableªresponsiveêstaticPlot¤datax#CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCzCuCuCuCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCpCkCkCkCkCkCkCfCfCfCfCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaC\C\C\C\C\CWCWCWCWCRCRCRCRCRCRCRCRCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCMCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCHCCCCCCCCCCCCCCCCCCCCCCC>C>C>C>C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C/C/C-C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C*C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C%C C C C C C C C C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB33B33BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB~B|B|B|BzffBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBtBtBtBtBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBpBo33BlBlBlBlBlBi33BhBhBhBhBhBhBhBhBhBhBhBhBhBhBhBhBhBdffBdBdBdBdBdBdB`B^B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\B\BXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBTBTBTBTBTBTBTBTBTBTBTBTBTBTBTBTBTBS33BPBPBPBPBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBLBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHBHB@B@B@B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B<B:B8B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B0B0B0B0B0B0B,B,B(B(B$B$B B B B B B B B B B B B B B B B B B B B B B B33BffBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAffAAAAAAAAAAAAAAAAAAAAAAAAAAAAffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA͙A͙A33AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAffAAAAAAAAffAAAAAAAAAAAAAAAAffAAAAAAAAAAAAAAAAAAAA33AAAAAAAAA AffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAffAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAA|A{33AxApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApApAiAhAaA`A`A\AQAQAQAPAPAPAPAPAPAPAPALA@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A@A"""metadatashow_logsèdisabled®skip_as_script«code_folded$68b25c38-7c43-42fd-89ec-a6aede2e467acell_id$68b25c38-7c43-42fd-89ec-a6aede2e467acode7md"## The emisson from the power sector not negligible"metadatashow_logsèdisabled®skip_as_script«code_folded$6ebb3eae-c7c6-469c-9710-a98d18b349dccell_id$6ebb3eae-c7c6-469c-9710-a98d18b349dccodemd"## Intensity per source"metadatashow_logsèdisabled®skip_as_script«code_folded$e626343e-44ec-48cc-8a4a-2ada0fe05cf6cell_id$e626343e-44ec-48cc-8a4a-2ada0fe05cf6codecpu = let f = Downloads.download("https://raw.githubusercontent.com/mlco2/codecarbon/refs/heads/master/codecarbon/data/hardware/cpu_power.csv") df = CSV.read(f, DataFrame) # It contains a weird `Intel Celeron 1000A,27.29.5` so I need # `tryparse` instead of `parse` df[!, :TDP] = tryparse.(Float64, df[:, :TDP]) df = df[(!isnothing).(df[:, :TDP]), :] sort!(df, :TDP, rev = true) df end;metadatashow_logsèdisabled®skip_as_script«code_folded$127a5424-c2ad-4157-baf3-ceacc53fcc63cell_id$127a5424-c2ad-4157-baf3-ceacc53fcc63codehtml""" """metadatashow_logsèdisabled®skip_as_script«code_folded$4d557e55-abaa-4526-9a80-1d32fd656633cell_id$4d557e55-abaa-4526-9a80-1d32fd656633codeيusing PlutoUI, PlutoUI.ExperimentalLayout, HypertextLiteral,Luxor, BenchmarkTools, PlutoTeachingTools, DataFrames, CSV, Downloads, Unitfulmetadatashow_logsèdisabled®skip_as_script«code_folded$6b34f98b-83df-4ddf-a736-1e76f3670e4ecell_id$6b34f98b-83df-4ddf-a736-1e76f3670e4ecode#md"[YCC23] J. You, J.-W. Chung and M. Chowdhury. [Zeus: Understanding and Optimizing GPU Energy Consumption of DNN Training](https://www.usenix.org/conference/nsdi23/presentation/you). In: 20th USENIX Symposium on Networked Systems Design and Implementation (NSDI 23) (2023); pp. 119–139."metadatashow_logsèdisabled®skip_as_script«code_folded$0a08cba4-cfb8-46a5-b85e-a826e4637af8cell_id$0a08cba4-cfb8-46a5-b85e-a826e4637af8codeـaside(md"[Source](https://www.energy.gov/ne/articles/infographic-how-much-power-does-nuclear-reactor-produce)", v_offset = -120)metadatashow_logsèdisabled®skip_as_script«code_folded$a48b8239-ff4c-4b14-8f6e-88d240bd29accell_id$a48b8239-ff4c-4b14-8f6e-88d240bd29accode%md"## Power consumption of a cluster"metadatashow_logsèdisabled®skip_as_script«code_folded$7471cb12-234e-4b4e-83bc-8ebca7493647cell_id$7471cb12-234e-4b4e-83bc-8ebca7493647code*import PlutoPlotly, PlotlyBase, ShortCodesmetadatashow_logsèdisabled®skip_as_script«code_folded$23007175-ffd5-4cb3-9b8c-344eb5d7cce1cell_id$23007175-ffd5-4cb3-9b8c-344eb5d7cce1codeـlet PlutoPlotly.plot( PlotlyBase.histogram(x=Vector(gpu[:, :tdp_watts])), PlotlyBase.Layout(; xaxis_title="TDP [W]") ) endmetadatashow_logsèdisabled®skip_as_script«code_folded$1d05bb8f-466f-4b48-9c31-d92605282663cell_id$1d05bb8f-466f-4b48-9c31-d92605282663code-md"## CPU consumption : Thermal Design Power"metadatashow_logsèdisabled®skip_as_script«code_folded$f1482d26-4aaf-44a9-b2cc-c672581bea36cell_id$f1482d26-4aaf-44a9-b2cc-c672581bea36codemd"# Energy consumption"metadatashow_logsèdisabled®skip_as_script«code_folded$e01ddf29-9dd4-426c-aa44-65253dfc17bccell_id$e01ddf29-9dd4-426c-aa44-65253dfc17bccodehtml""""""metadatashow_logsèdisabled®skip_as_script«code_folded$2ee9c7b0-b647-4f8a-be9f-92ab421176e0cell_id$2ee9c7b0-b647-4f8a-be9f-92ab421176e0codecmd""" * 2-5 W per slot when the computer is on * Drops to around 1 W when in sleep mode * This is the reason your computer still consumes while sleeping. * To turn the computer off, you need to loose all data in the RAM. * Hibernation consists on copying the RAM to disk so that the RAM can be completely shut-off and copy it back when you turn it on. """metadatashow_logsèdisabled®skip_as_script«code_folded$6ee903bb-66ab-496c-baf9-0c39f5dadda8cell_id$6ee903bb-66ab-496c-baf9-0c39f5dadda8codegpumetadatashow_logsèdisabled®skip_as_script«code_folded$af7cb311-594a-4f87-b75d-f982bf81da61cell_id$af7cb311-594a-4f87-b75d-f982bf81da61codehtml""""""metadatashow_logsèdisabled®skip_as_script«code_folded$9d2ab913-28f8-443b-a60f-74a6d9e083e8cell_id$9d2ab913-28f8-443b-a60f-74a6d9e083e8code)ShortCodes.DOI("10.1145/2019608.2019612")metadatashow_logsèdisabled®skip_as_script«code_folded$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9cell_id$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9codemd""" The higher the voltage is, the higher are the leakage currents hence the power consumption but the voltage cannot be lowered without lowering the frequency hence the two are often done together → DVFS. Example of application in $(citezeus()). """metadatashow_logsèdisabled®skip_as_script«code_folded$02303063-676b-4a82-b15a-676120838a21cell_id$02303063-676b-4a82-b15a-676120838a21codemd""" The power consumption of a chip is the sum of two sources: * *Static power* : primarily due to leakage currents, which become more important as the transistor size decreases. Increases with ``V``. * *Dynamic power* : Switching power given by ``CV^2Af`` where - ``C`` : Capacitance being switched - ``V`` : Voltage - ``A`` : *Activity factor*, i.e., number of switches of transistors per clock cycle. - ``f`` : Clock frequency """metadatashow_logsèdisabled®skip_as_script«code_folded$3fbdadde-05a3-4737-899b-3f4e352be7eecell_id$3fbdadde-05a3-4737-899b-3f4e352be7eecodeFoldable(md""" DVFS and gating are automatically handled. So what actions can be taken in the design of your code or GPU kernels to allow these optimizations ? """, md""" * Don't use more threads than necessary. If it is bandwidth-bound, you may be using too many threads. * Use of shared memory in kernels to reduce global memory accesses, improving both time and power efficiency. * Decrease the number of active warps in GPU kernels (cfr. part 4). * Decrease interleaving count (cfr. part 1) which needs high frequency but may render the program bandwidth-bound hence the gain in time efficiency is not worth it for high interleave. """ )metadatashow_logsèdisabled®skip_as_script«code_folded$0adbb198-25a5-42ef-8fe0-9d725b671c3acell_id$0adbb198-25a5-42ef-8fe0-9d725b671c3acode3md"## Dynamic voltage and frequency scaling (DVFS)"metadatashow_logsèdisabled®skip_as_script«code_folded$e1867b63-647e-4cd3-be2b-3af5bb18f709cell_id$e1867b63-647e-4cd3-be2b-3af5bb18f709code#md"## Carbon Intensity per country"metadatashow_logsèdisabled®skip_as_script«code_folded$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88ccell_id$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88ccodetmd""" Thermal Design Power (TDP) : Maximum amount of heat a CPU is designed to generate (important for cooling). """metadatashow_logsèdisabled®skip_as_script«code_folded$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bcell_id$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bcodecpumetadatashow_logsèdisabled®skip_as_script«code_folded$04ec5e72-71b8-4a63-b73f-b1851664445ccell_id$04ec5e72-71b8-4a63-b73f-b1851664445ccodelet gen = DataFrame( Source = ["Nuclear plant", "Gas turbine", "Wind turbine", "1000 PV panels"], Power = uconvert.(u"MW", [1.0u"GW", 150u"MW", 3u"MW", 320u"kW"]), ) gen[:, "xAI need"] = round.(150u"MW" ./ gen[:, :Power], sigdigits=4) gen endmetadatashow_logsèdisabled®skip_as_script«code_folded$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4cell_id$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4codemd"## Gating"metadatashow_logsèdisabled®skip_as_script«code_folded$91a1971d-1e70-489d-9026-d9312207c112cell_id$91a1971d-1e70-489d-9026-d9312207c112code%md"## Share of production by sources"metadatashow_logsèdisabled®skip_as_script«code_folded$3136760a-2be1-11f0-082c-73210e038b56cell_id$3136760a-2be1-11f0-082c-73210e038b56code@htl("""

LINMA2710 - Scientific Computing Power Consumption

P.-A. Absil and B. Legat

$(PlutoTeachingTools.ChooseDisplayMode()) $(PlutoUI.TableOfContents(depth=1)) """)metadatashow_logsèdisabled®skip_as_script«code_folded$86c3ecfb-cffc-492b-8f15-3105608a9203cell_id$86c3ecfb-cffc-492b-8f15-3105608a9203code$md"# Power consumption of computing"metadatashow_logsèdisabled®skip_as_script«code_folded$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63cell_id$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63codemd"# Carbon intensity"metadatashow_logsèdisabled®skip_as_script«code_folded$fc2b703d-d692-470c-a503-335426b50f1acell_id$fc2b703d-d692-470c-a503-335426b50f1acode2md"## Reducing the power consumption of your code"metadatashow_logsèdisabled®skip_as_script«code_folded$417c20b5-9ec3-48d7-96c6-6d86401dab86cell_id$417c20b5-9ec3-48d7-96c6-6d86401dab86codeنmd"[Total U.S. Greenhouse Gas Emissions by Economic Sector in 2022](https://www.epa.gov/ghgemissions/electric-power-sector-emissions)"metadatashow_logsèdisabled®skip_as_script«code_folded$14bf7b19-2cf7-4f41-960b-de5bafa398b9cell_id$14bf7b19-2cf7-4f41-960b-de5bafa398b9code$md""" Power of CPU is approx. proportional to its utilization/load until below 10% ```math \texttt{power} = \texttt{TDP} \times \max(0.1, \text{load}) ``` [Source](https://github.com/mlco2/codecarbon/blob/018cc95937d1ffea07f03d3711d145321bab5266/codecarbon/external/hardware.py#L187-L188) """metadatashow_logsèdisabled®skip_as_script«code_folded$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03cell_id$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03codehtml""""""metadatashow_logsèdisabled®skip_as_script«code_folded$09382a24-7e35-45ac-bfbc-46ea15a40590cell_id$09382a24-7e35-45ac-bfbc-46ea15a40590code md"## Power consumption of GPUs"metadatashow_logsèdisabled®skip_as_script«code_folded$e31d6a8c-942e-4a65-a073-96ef250163fbcell_id$e31d6a8c-942e-4a65-a073-96ef250163fbcodemd""" | Energy Source Carbon | Intensity (kg/MWh) | |----------------------|--------------------| | Coal | 995 | | Petroleum | 816 | | Natural Gas | 743 | | Solar | 48 | | Geothermal | 38 | | Nuclear | 29 | | Hydroelectricity | 26 | | Wind | 26 | """metadatashow_logsèdisabled®skip_as_script«code_folded$ab04cd81-8dab-4dca-a77d-e1da369bce1dcell_id$ab04cd81-8dab-4dca-a77d-e1da369bce1dcodezlet PlutoPlotly.plot( PlotlyBase.histogram(x=Vector(cpu[:, :TDP])), PlotlyBase.Layout(; xaxis_title="TDP [W]") ) endmetadatashow_logsèdisabled®skip_as_script«code_folded$362631aa-fc47-4f12-b1c4-b687575738e8cell_id$362631aa-fc47-4f12-b1c4-b687575738e8code(md"## Electricity generation per capita"metadatashow_logsèdisabled®skip_as_script«code_folded$78220d6a-012c-400b-9a02-34772264dc31cell_id$78220d6a-012c-400b-9a02-34772264dc31codemd"## RAM consumption"metadatashow_logsèdisabled®skip_as_script«code_folded$de0ac9cc-4664-4068-ba5f-fc4d36d479e5cell_id$de0ac9cc-4664-4068-ba5f-fc4d36d479e5codeximg("https://www.epa.gov/system/files/styles/large/private/images/2024-04/electricity-ghg-2024-chart.png?itok=Is4AR6wp")metadatashow_logsèdisabled®skip_as_script«code_folded$a23fc565-360b-4528-91eb-588a218bedb0cell_id$a23fc565-360b-4528-91eb-588a218bedb0code)md"## Electricity generation per country"metadatashow_logsèdisabled®skip_as_script«code_folded$d76e68a9-2925-4602-86ed-5fe9d1d82ce0cell_id$d76e68a9-2925-4602-86ed-5fe9d1d82ce0codejaside(md"[Source](https://mlco2.github.io/codecarbon/methodology.html#carbon-intensity)", v_offset = -130)metadatashow_logsèdisabled®skip_as_script«code_folded$584168f4-facb-4ab8-88af-c2e6e46f981ecell_id$584168f4-facb-4ab8-88af-c2e6e46f981ecodemd"## Break down"metadatashow_logsèdisabled®skip_as_script«code_folded$dee22937-fb28-4c25-8948-e8c3d6e86604cell_id$dee22937-fb28-4c25-8948-e8c3d6e86604codecitezeus() = "[YCC23]";metadatashow_logsèdisabled®skip_as_script«code_folded$5e0febd2-3f0d-4643-8401-4abd553ff14ecell_id$5e0febd2-3f0d-4643-8401-4abd553ff14ecodegpu = let f = Downloads.download("https://raw.githubusercontent.com/mlco2/impact/a7f24ac0802cd6c0b1b1f7f9769acb1d09290d41/data/gpus.csv") df = CSV.read(f, DataFrame) src = "https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Tegra_GPU" push!(df, ["Tesla H100-PCIE", "gpu", 350, missing, missing, missing, missing, 80, src]) push!(df, ["Tesla H100-PCIE-80GB", "gpu", 700, missing, missing, missing, missing, 80, src]) push!(df, ["Tesla H200-PCIE", "gpu", 600, missing, missing, missing, missing, 141, src]) push!(df, ["Tesla H200-SXM", "gpu", 700, missing, missing, missing, missing, 141, src]) sort!(df, :tdp_watts, rev = true) df end;metadatashow_logsèdisabled®skip_as_script«code_folded$9ee51ff3-73c7-45eb-a4f2-29b191abbf3acell_id$9ee51ff3-73c7-45eb-a4f2-29b191abbf3acode!md"## Primary energy consumption"metadatashow_logsèdisabled®skip_as_script«code_folded$eb328609-d0a0-4984-aba5-00ab7e90c763cell_id$eb328609-d0a0-4984-aba5-00ab7e90c763code md"# Reducing power consumption"metadatashow_logsèdisabled®skip_as_script«code_folded$64c9a463-7109-4ef0-9789-4fc885e98be9cell_id$64c9a463-7109-4ef0-9789-4fc885e98be9codemd""" xAI Colossus will be the largest cluster being built (not counting mega-clusters made of several ones connected by optic fibers). Made of 100k H100 GPUs and 100k H200 GPUs so a total of 150 MW. This will need [a whole new Gas turbine just to power it](https://www.tomshardware.com/tech-industry/artificial-intelligence/elon-musks-xai-allegedly-powers-colossus-supercomputer-facility-using-illegal-generators): """metadatashow_logsèdisabled®skip_as_script«code_folded$483e6ccc-114f-4be2-8606-0b6a35b8e513cell_id$483e6ccc-114f-4be2-8606-0b6a35b8e513codehtml""""""metadatashow_logsèdisabled®skip_as_script«code_folded$22e59d9d-6abc-42eb-86a8-5b3462f7529ecell_id$22e59d9d-6abc-42eb-86a8-5b3462f7529ecodeahtml"

The End

"metadatashow_logsèdisabled®skip_as_script«code_folded$f8bbe15a-30be-4e5f-9c88-4c46b1d0307ccell_id$f8bbe15a-30be-4e5f-9c88-4c46b1d0307ccodesbegin struct Path path::String end function imgpath(path::Path) file = path.path if !('.' in file) file = file * ".png" end return joinpath(joinpath(@__DIR__, "images", file)) end function img(path::Path, args...; kws...) return PlutoUI.LocalResource(imgpath(path), args...) end struct URL url::String end function save_image(url::URL, html_attributes...; name = split(url.url, '/')[end], kws...) path = joinpath("cache", name) return PlutoTeachingTools.RobustLocalResource(url.url, path, html_attributes...), path end function img(url::URL, args...; kws...) r, _ = save_image(url, args...; kws...) return @htl("$r") end function img(file::String, args...; kws...) if startswith(file, "http") img(URL(file), args...; kws...) else img(Path(file), args...; kws...) end end endmetadatashow_logsèdisabled®skip_as_script«code_folded$d95d4506-0517-4460-a555-3a7767fb5c71cell_id$d95d4506-0517-4460-a555-3a7767fb5c71codeFoldable(md"If the clock frequency is decreased, does the time performance always get worse ?", md"It gets worse if the program is compute-bound but not if it is bandwidth-bound (cfr. *roofline model* of part 2)", )metadatashow_logsèdisabled®skip_as_script«code_folded$23999906-85bc-4c5f-9b42-2c9f4a63b9b8cell_id$23999906-85bc-4c5f-9b42-2c9f4a63b9b8codemd""" When a core is idle, it may first be * *clock-gated* : part of the circuit stops switching. [Corresponds to states C1-C3 in intel CPUs](https://www.intel.com/content/www/us/en/support/articles/000006619/processors/intel-core-processors.html). If it continues being idle, it may then * Reduces the voltage as the clock frequency is now zero. This will reduce the leakage currents. [Corresponds to state C4 in intel CPUs](https://www.intel.com/content/www/us/en/support/articles/000006619/processors/intel-core-processors.html). If it continues being idle, it may even be * *power-gated* : turn off circuit blocks. Which eliminates the leakage currents. It has a fixed power cost but is worth it if it is unused for a long time [Wang et al.]. Corresponds to states C6-C10 in intel CPUs. You can inspect the states of your cores on your laptop with * Intel Power Gadget (Windows/macOS) * [powertop](https://github.com/fenrus75/powertop) (Linux) * [HWInfo](https://www.hwinfo.com/) or [Throttlestop](https://throttlestop.net/) (Windows) """metadatashow_logsèdisabled®skip_as_script«code_foldedënotebook_id$97f9bbee-5920-11f1-b5b7-d122522cc66fbondscell_results7$1732b3e0-e2de-4b27-b29f-fb62ff38ba56queued¤logsrunning¦outputbody^

Share production by group

persist_js_state¤mimetext/htmllast_run_timestampAڅrԶphas_pluto_hook_features¬rootassigneecell_id$1732b3e0-e2de-4b27-b29f-fb62ff38ba56depends_on_disabled_cells§runtime]published_object_keysdepends_on_skipped_cells§errored$04e552e5-e1b4-4dc4-b6f0-634ccab49039queued¤logsrunning¦outputbodypersist_js_state¤mimetext/htmllast_run_timestampAڅr԰IMhas_pluto_hook_features¬rootassigneecell_id$04e552e5-e1b4-4dc4-b6f0-634ccab49039depends_on_disabled_cells§runtime0published_object_keysdepends_on_skipped_cells§errored$68b25c38-7c43-42fd-89ec-a6aede2e467aqueued¤logsrunning¦outputbodyٌ

The emisson from the power sector not negligible

persist_js_state¤mimetext/htmllast_run_timestampAڅrԭⰷhas_pluto_hook_features¬rootassigneecell_id$68b25c38-7c43-42fd-89ec-a6aede2e467adepends_on_disabled_cells§runtimexǵpublished_object_keysdepends_on_skipped_cells§errored$6ebb3eae-c7c6-469c-9710-a98d18b349dcqueued¤logsrunning¦outputbodyT

Intensity per source

persist_js_state¤mimetext/htmllast_run_timestampAڅr԰has_pluto_hook_features¬rootassigneecell_id$6ebb3eae-c7c6-469c-9710-a98d18b349dcdepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$e626343e-44ec-48cc-8a4a-2ada0fe05cf6queued¤logsrunning¦outputbodypersist_js_state¤mimetext/plainlast_run_timestampAڅrhas_pluto_hook_features¬rootassigneecell_id$e626343e-44ec-48cc-8a4a-2ada0fe05cf6depends_on_disabled_cells§runtime!published_object_keysdepends_on_skipped_cells§errored$127a5424-c2ad-4157-baf3-ceacc53fcc63queued¤logsrunning¦outputbody persist_js_state¤mimetext/htmllast_run_timestampAڅrԷGhas_pluto_hook_features¬rootassigneecell_id$127a5424-c2ad-4157-baf3-ceacc53fcc63depends_on_disabled_cells§runtimeVpublished_object_keysdepends_on_skipped_cells§errored$4d557e55-abaa-4526-9a80-1d32fd656633queued¤logsrunning¦outputbodypersist_js_state¤mimetext/plainlast_run_timestampAڅrWdhas_pluto_hook_features¬rootassigneecell_id$4d557e55-abaa-4526-9a80-1d32fd656633depends_on_disabled_cells§runtime=ߵpublished_object_keysdepends_on_skipped_cells§errored$6b34f98b-83df-4ddf-a736-1e76f3670e4equeued¤logsrunning¦outputbodyf

[YCC23] J. You, J.-W. Chung and M. Chowdhury. Zeus: Understanding and Optimizing GPU Energy Consumption of DNN Training. In: 20th USENIX Symposium on Networked Systems Design and Implementation (NSDI 23) (2023); pp. 119–139.

persist_js_state¤mimetext/htmllast_run_timestampAڅrhas_pluto_hook_features¬rootassigneecell_id$6b34f98b-83df-4ddf-a736-1e76f3670e4edepends_on_disabled_cells§runtimeBTpublished_object_keysdepends_on_skipped_cells§errored$0a08cba4-cfb8-46a5-b85e-a826e4637af8queued¤logsrunning¦outputbody persist_js_state¤mimetext/htmllast_run_timestampAڅr'has_pluto_hook_features¬rootassigneecell_id$0a08cba4-cfb8-46a5-b85e-a826e4637af8depends_on_disabled_cells§runtime~published_object_keysdepends_on_skipped_cells§errored$a48b8239-ff4c-4b14-8f6e-88d240bd29acqueued¤logsrunning¦outputbodyh

Power consumption of a cluster

persist_js_state¤mimetext/htmllast_run_timestampAڅrSmhas_pluto_hook_features¬rootassigneecell_id$a48b8239-ff4c-4b14-8f6e-88d240bd29acdepends_on_disabled_cells§runtimexYpublished_object_keysdepends_on_skipped_cells§errored$7471cb12-234e-4b4e-83bc-8ebca7493647queued¤logsrunning¦outputbodypersist_js_state¤mimetext/plainlast_run_timestampAڅrihas_pluto_hook_features¬rootassigneecell_id$7471cb12-234e-4b4e-83bc-8ebca7493647depends_on_disabled_cells§runtime3?published_object_keysdepends_on_skipped_cells§errored$23007175-ffd5-4cb3-9b8c-344eb5d7cce1queued¤logsrunning¦outputbodyj} persist_js_state¤mimetext/htmllast_run_timestampAڅrhas_pluto_hook_features¬rootassigneecell_id$23007175-ffd5-4cb3-9b8c-344eb5d7cce1depends_on_disabled_cells§runtimespublished_object_keys597f9bbee-5920-11f1-b5b7-d122522cc66f/86ba1c3e4b1aa5afdepends_on_skipped_cells§errored$1d05bb8f-466f-4b48-9c31-d92605282663queued¤logsrunning¦outputbodyx

CPU consumption : Thermal Design Power

persist_js_state¤mimetext/htmllast_run_timestampAڅrԼ has_pluto_hook_features¬rootassigneecell_id$1d05bb8f-466f-4b48-9c31-d92605282663depends_on_disabled_cells§runtime published_object_keysdepends_on_skipped_cells§errored$f1482d26-4aaf-44a9-b2cc-c672581bea36queued¤logsrunning¦outputbodyP

Energy consumption

persist_js_state¤mimetext/htmllast_run_timestampAڅrԡ·has_pluto_hook_features¬rootassigneecell_id$f1482d26-4aaf-44a9-b2cc-c672581bea36depends_on_disabled_cells§runtime)published_object_keysdepends_on_skipped_cells§errored$e01ddf29-9dd4-426c-aa44-65253dfc17bcqueued¤logsrunning¦outputbodypersist_js_state¤mimetext/htmllast_run_timestampAڅrԶ簷has_pluto_hook_features¬rootassigneecell_id$e01ddf29-9dd4-426c-aa44-65253dfc17bcdepends_on_disabled_cells§runtime ]published_object_keysdepends_on_skipped_cells§errored$2ee9c7b0-b647-4f8a-be9f-92ab421176e0queued¤logsrunning¦outputbody
persist_js_state¤mimetext/htmllast_run_timestampAڅrԼhas_pluto_hook_features¬rootassigneecell_id$2ee9c7b0-b647-4f8a-be9f-92ab421176e0depends_on_disabled_cells§runtime $published_object_keysdepends_on_skipped_cells§errored$6ee903bb-66ab-496c-baf9-0c39f5dadda8queued¤logsrunning¦outputbodyrows"Tesla H100-PCIE-80GB"text/plain"gpu"text/plain700text/plainmissingtext/plainmissingtext/plainmissingtext/plainmissingtext/plain80.0text/plainR"https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Tegra_GPU"text/plain"Tesla H200-SXM"text/plain"gpu"text/plain700text/plainmissingtext/plainmissingtext/plainmissingtext/plainmissingtext/plain141.0text/plainR"https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Tegra_GPU"text/plain"Tesla H200-PCIE"text/plain"gpu"text/plain600text/plainmissingtext/plainmissingtext/plainmissingtext/plainmissingtext/plain141.0text/plainR"https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Tegra_GPU"text/plain"A100 SXM4 80 GB"text/plain"gpu"text/plain400text/plainmissingtext/plain312.0text/plainmissingtext/plainmissingtext/plain80.0text/plain|"https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/a100/pdf/nvidia-a100-datasheet-us-nvidia-1758950-r4-web.pdf"text/plain"RTX 3080 TI"text/plain"gpu"text/plain350text/plain34.1text/plain34.1text/plain"NaN"text/plain"NaN"text/plain12.0text/plainA"https://www.techpowerup.com/gpu-specs/geforce-rtx-3080-ti.c3735"text/plain"RTX 3090"text/plain"gpu"text/plain350text/plain35.58text/plain35.58text/plain"NaN"text/plain"NaN"text/plain24.0text/plain>"https://www.techpowerup.com/gpu-specs/geforce-rtx-3090.c3622"text/plain"L40S"text/plain"gpu"text/plain350text/plain183.0text/plain362.05text/plain"unk"text/plain"unk"text/plain48.0text/plain>"https://resources.nvidia.com/en-us-l40s/l40s-datasheet-28413"text/plain"Tesla H100-PCIE"text/plain"gpu"text/plain350text/plainmissingtext/plainmissingtext/plainmissingtext/plainmissingtext/plain80.0text/plainR"https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units#Tegra_GPU"text/plain "RTX 3080"text/plain"gpu"text/plain320text/plain29.77text/plain29.77text/plain"NaN"text/plain"NaN"text/plain10.0text/plain>"https://www.techpowerup.com/gpu-specs/geforce-rtx-3080.c3621"text/plain "Tesla K80"text/plain"gpu"text/plain300text/plain4.113text/plainmissingtext/plain"13.71"text/plainmissingtext/plain12.0text/plain"techpowerup.com"text/plainmore2"AGX Xavier"text/plain"gpu"text/plain30text/plain16.0text/plain32.0text/plain"533.33"text/plain"1066.67"text/plainmissingtext/plain&"https://elinux.org/Jetson_AGX_Xavier"text/plainobjectid537e2f11f450db13schemanamesnametypetdp_wattsTFLOPS32 TFLOPS16GFLOPS32/WGFLOPS16/WmemorysourcetypesString31String3Int64Float64?Float64?String31?String7?Float64?Stringpersist_js_state¤mime"application/vnd.pluto.table+objectlast_run_timestampAڅr/+has_pluto_hook_features¬rootassigneecell_id$6ee903bb-66ab-496c-baf9-0c39f5dadda8depends_on_disabled_cells§runtime'published_object_keysdepends_on_skipped_cells§errored$af7cb311-594a-4f87-b75d-f982bf81da61queued¤logsrunning¦outputbodypersist_js_state¤mimetext/htmllast_run_timestampAڅrԶhas_pluto_hook_features¬rootassigneecell_id$af7cb311-594a-4f87-b75d-f982bf81da61depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$9d2ab913-28f8-443b-a60f-74a6d9e083e8queued¤logsrunning¦outputbody
Wang, Po-Han, Yang, Chia-Lin, Chen, Yen-Ming and Cheng, Yu-Jung Power Gating Strategies On GPUs, ACM Transactions On Architecture And Code Optimization (2011) 10/drfp46, cited by 32
persist_js_state¤mimetext/htmllast_run_timestampAڅrD&has_pluto_hook_features¬rootassigneecell_id$9d2ab913-28f8-443b-a60f-74a6d9e083e8depends_on_disabled_cells§runtime4published_object_keysdepends_on_skipped_cells§errored$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9queued¤logsrunning¦outputbody

The higher the voltage is, the higher are the leakage currents hence the power consumption but the voltage cannot be lowered without lowering the frequency hence the two are often done together → DVFS. Example of application in [YCC23].

persist_js_state¤mimetext/htmllast_run_timestampAڅr\bзhas_pluto_hook_features¬rootassigneecell_id$e7ae324e-4a0d-4199-8673-6bdb23ff4ae9depends_on_disabled_cells§runtime;n published_object_keysdepends_on_skipped_cells§errored$02303063-676b-4a82-b15a-676120838a21queued¤logsrunning¦outputbody

The power consumption of a chip is the sum of two sources:

persist_js_state¤mimetext/htmllast_run_timestampAڅr ŷhas_pluto_hook_features¬rootassigneecell_id$02303063-676b-4a82-b15a-676120838a21depends_on_disabled_cells§runtime Võpublished_object_keysdepends_on_skipped_cells§errored$3fbdadde-05a3-4737-899b-3f4e352be7eequeued¤logslinemsgىPlutoRunner.embed_display(x) is deprecated and will be removed in a future release. Use AbstractPlutoDingetjes.Display.@embed(x) instead.text/plaincell_id$3fbdadde-05a3-4737-899b-3f4e352be7eekwargsidPlutoRunner_20adc16cfile\/home/runner/.julia/packages/Pluto/d9Dpv/src/runner/PlutoRunner/src/display/embed_display.jlgroupembed_displaylevelWarnrunning¦outputbodyk

DVFS and gating are automatically handled. So what actions can be taken in the design of your code or GPU kernels to allow these optimizations ?

  • Don't use more threads than necessary. If it is bandwidth-bound, you may be using too many threads.

  • Use of shared memory in kernels to reduce global memory accesses, improving both time and power efficiency.

  • Decrease the number of active warps in GPU kernels (cfr. part 4).

  • Decrease interleaving count (cfr. part 1) which needs high frequency but may render the program bandwidth-bound hence the gain in time efficiency is not worth it for high interleave.

persist_js_state¤mimetext/htmllast_run_timestampAڅr`ohas_pluto_hook_features¬rootassigneecell_id$3fbdadde-05a3-4737-899b-3f4e352be7eedepends_on_disabled_cells§runtime Cpublished_object_keysdepends_on_skipped_cells§errored$0adbb198-25a5-42ef-8fe0-9d725b671c3aqueued¤logsrunning¦outputbodyٔ

Dynamic voltage and frequency scaling (DVFS)

persist_js_state¤mimetext/htmllast_run_timestampAڅrY)has_pluto_hook_features¬rootassigneecell_id$0adbb198-25a5-42ef-8fe0-9d725b671c3adepends_on_disabled_cells§runtimeڵpublished_object_keysdepends_on_skipped_cells§errored$e1867b63-647e-4cd3-be2b-3af5bb18f709queued¤logsrunning¦outputbodyd

Carbon Intensity per country

persist_js_state¤mimetext/htmllast_run_timestampAڅrԷhas_pluto_hook_features¬rootassigneecell_id$e1867b63-647e-4cd3-be2b-3af5bb18f709depends_on_disabled_cells§runtimeJ published_object_keysdepends_on_skipped_cells§errored$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88cqueued¤logsrunning¦outputbodyٞ

Thermal Design Power (TDP) : Maximum amount of heat a CPU is designed to generate (important for cooling).

persist_js_state¤mimetext/htmllast_run_timestampAڅrԼ!has_pluto_hook_features¬rootassigneecell_id$1e7dc6ea-1b80-4bf2-8a33-c8719bd2c88cdepends_on_disabled_cells§runtime4published_object_keysdepends_on_skipped_cells§errored$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bqueued¤logsrunning¦outputbodyrows"AMD EPYC 9755"text/plain500.0text/plain"AMD EPYC 9965"text/plain500.0text/plain"Intel Xeon 6960P"text/plain500.0text/plain"Intel Xeon 6972P"text/plain500.0text/plain"Intel Xeon 6979P"text/plain500.0text/plain"Intel Xeon 6980P"text/plain500.0text/plain"AMD EPYC 9475F"text/plain400.0text/plain"AMD EPYC 9565"text/plain400.0text/plain "AMD EPYC 9575F"text/plain400.0text/plain "AMD EPYC 9655"text/plain400.0text/plainmore##"Intel Quark Microcontroller D1000"text/plain0.0text/plainobjectid872ec0d6d896cb8schemanamesNameTDPtypesStringpersist_js_state¤mime"application/vnd.pluto.table+objectlast_run_timestampAڅr8;has_pluto_hook_features¬rootassigneecell_id$43d03970-8f6e-4ec5-81b4-e2d2ce332a7bdepends_on_disabled_cells§runtime#published_object_keysdepends_on_skipped_cells§errored$04ec5e72-71b8-4a63-b73f-b1851664445cqueued¤logsrunning¦outputbodyrows"Nuclear plant"text/plain1000.0 MWtext/plain0.15text/plain"Gas turbine"text/plain150.0 MWtext/plain1.0text/plain"Wind turbine"text/plain3.0 MWtext/plain50.0text/plain"1000 PV panels"text/plain0.32 MWtext/plain468.8text/plainobjectidac6fe7431805d4e4schemanamesSourcePowerxAI needtypesStringQuantityFloat64persist_js_state¤mime"application/vnd.pluto.table+objectlast_run_timestampAڅr'@has_pluto_hook_features¬rootassigneecell_id$04ec5e72-71b8-4a63-b73f-b1851664445cdepends_on_disabled_cells§runtime6Wĵpublished_object_keysdepends_on_skipped_cells§errored$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4queued¤logsrunning¦outputbody8

Gating

persist_js_state¤mimetext/htmllast_run_timestampAڅr Khas_pluto_hook_features¬rootassigneecell_id$7bbf3989-cd27-4fc4-9b3c-246e2ae8f7d4depends_on_disabled_cells§runtime7published_object_keysdepends_on_skipped_cells§errored$91a1971d-1e70-489d-9026-d9312207c112queued¤logsrunning¦outputbodyh

Share of production by sources

persist_js_state¤mimetext/htmllast_run_timestampAڅrԶhas_pluto_hook_features¬rootassigneecell_id$91a1971d-1e70-489d-9026-d9312207c112depends_on_disabled_cells§runtime%published_object_keysdepends_on_skipped_cells§errored$3136760a-2be1-11f0-082c-73210e038b56queued¤logsrunning¦outputbodyVQ

LINMA2710 - Scientific Computing Power Consumption

P.-A. Absil and B. Legat

      persist_js_state¤mimetext/htmllast_run_timestampAڅrF1has_pluto_hook_features¬rootassigneecell_id$3136760a-2be1-11f0-082c-73210e038b56depends_on_disabled_cells§runtime&published_object_keysdepends_on_skipped_cells§errored$86c3ecfb-cffc-492b-8f15-3105608a9203queued¤logsrunning¦outputbodyh

Power consumption of computing

persist_js_state¤mimetext/htmllast_run_timestampAڅrԷ7has_pluto_hook_features¬rootassigneecell_id$86c3ecfb-cffc-492b-8f15-3105608a9203depends_on_disabled_cells§runtimezpublished_object_keysdepends_on_skipped_cells§errored$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63queued¤logsrunning¦outputbodyL

Carbon intensity

persist_js_state¤mimetext/htmllast_run_timestampAڅr԰=has_pluto_hook_features¬rootassigneecell_id$5d31609d-0b7c-41ec-ba83-67a7b1ce5e63depends_on_disabled_cells§runtimem۵published_object_keysdepends_on_skipped_cells§errored$fc2b703d-d692-470c-a503-335426b50f1aqueued¤logsrunning¦outputbodyق

Reducing the power consumption of your code

persist_js_state¤mimetext/htmllast_run_timestampAڅr e has_pluto_hook_features¬rootassigneecell_id$fc2b703d-d692-470c-a503-335426b50f1adepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$417c20b5-9ec3-48d7-96c6-6d86401dab86queued¤logsrunning¦outputbodyٱ

Total U.S. Greenhouse Gas Emissions by Economic Sector in 2022

persist_js_state¤mimetext/htmllast_run_timestampAڅr԰ has_pluto_hook_features¬rootassigneecell_id$417c20b5-9ec3-48d7-96c6-6d86401dab86depends_on_disabled_cells§runtimeqpublished_object_keysdepends_on_skipped_cells§errored$14bf7b19-2cf7-4f41-960b-de5bafa398b9queued¤logsrunning¦outputbody

Power of CPU is approx. proportional to its utilization/load until below 10%

$$\texttt{power} = \texttt{TDP} \times \max(0.1, \text{load})$$

Source

persist_js_state¤mimetext/htmllast_run_timestampAڅrԾPhas_pluto_hook_features¬rootassigneecell_id$14bf7b19-2cf7-4f41-960b-de5bafa398b9depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03queued¤logsrunning¦outputbodypersist_js_state¤mimetext/htmllast_run_timestampAڅr԰|has_pluto_hook_features¬rootassigneecell_id$eb1bdc8e-54c4-4bb4-ac32-d3d3c5a8fb03depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$09382a24-7e35-45ac-bfbc-46ea15a40590queued¤logsrunning¦outputbody^

Power consumption of GPUs

persist_js_state¤mimetext/htmllast_run_timestampAڅr׺has_pluto_hook_features¬rootassigneecell_id$09382a24-7e35-45ac-bfbc-46ea15a40590depends_on_disabled_cells§runtimePpublished_object_keysdepends_on_skipped_cells§errored$e31d6a8c-942e-4a65-a073-96ef250163fbqueued¤logsrunning¦outputbody
Energy Source CarbonIntensity (kg/MWh)
Coal995
Petroleum816
Natural Gas743
Solar48
Geothermal38
Nuclear29
Hydroelectricity26
Wind26
persist_js_state¤mimetext/htmllast_run_timestampAڅrԶkhas_pluto_hook_features¬rootassigneecell_id$e31d6a8c-942e-4a65-a073-96ef250163fbdepends_on_disabled_cells§runtimeϵpublished_object_keysdepends_on_skipped_cells§errored$ab04cd81-8dab-4dca-a77d-e1da369bce1dqueued¤logsrunning¦outputbodyj} persist_js_state¤mimetext/htmllast_run_timestampAڅrӷhas_pluto_hook_features¬rootassigneecell_id$ab04cd81-8dab-4dca-a77d-e1da369bce1ddepends_on_disabled_cells§runtimeiFDpublished_object_keys597f9bbee-5920-11f1-b5b7-d122522cc66f/aa7f8f717988c4eddepends_on_skipped_cells§errored$362631aa-fc47-4f12-b1c4-b687575738e8queued¤logsrunning¦outputbodyn

Electricity generation per capita

persist_js_state¤mimetext/htmllast_run_timestampAڅr԰eghas_pluto_hook_features¬rootassigneecell_id$362631aa-fc47-4f12-b1c4-b687575738e8depends_on_disabled_cells§runtime!Ypublished_object_keysdepends_on_skipped_cells§errored$78220d6a-012c-400b-9a02-34772264dc31queued¤logsrunning¦outputbodyJ

RAM consumption

persist_js_state¤mimetext/htmllast_run_timestampAڅrԷRƷhas_pluto_hook_features¬rootassigneecell_id$78220d6a-012c-400b-9a02-34772264dc31depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$de0ac9cc-4664-4068-ba5f-fc4d36d479e5queued¤logsrunning¦outputbody4Qpersist_js_state¤mimetext/htmllast_run_timestampAڅrx has_pluto_hook_features¬rootassigneecell_id$de0ac9cc-4664-4068-ba5f-fc4d36d479e5depends_on_disabled_cells§runtime=published_object_keysdepends_on_skipped_cells§errored$a23fc565-360b-4528-91eb-588a218bedb0queued¤logsrunning¦outputbodyp

Electricity generation per country

persist_js_state¤mimetext/htmllast_run_timestampAڅr԰0nhas_pluto_hook_features¬rootassigneecell_id$a23fc565-360b-4528-91eb-588a218bedb0depends_on_disabled_cells§runtimexpublished_object_keysdepends_on_skipped_cells§errored$d76e68a9-2925-4602-86ed-5fe9d1d82ce0queued¤logsrunning¦outputbody persist_js_state¤mimetext/htmllast_run_timestampAڅroݷhas_pluto_hook_features¬rootassigneecell_id$d76e68a9-2925-4602-86ed-5fe9d1d82ce0depends_on_disabled_cells§runtimeܵpublished_object_keysdepends_on_skipped_cells§errored$584168f4-facb-4ab8-88af-c2e6e46f981equeued¤logsrunning¦outputbody@

Break down

persist_js_state¤mimetext/htmllast_run_timestampAڅrhas_pluto_hook_features¬rootassigneecell_id$584168f4-facb-4ab8-88af-c2e6e46f981edepends_on_disabled_cells§runtime1published_object_keysdepends_on_skipped_cells§errored$dee22937-fb28-4c25-8948-e8c3d6e86604queued¤logsrunning¦outputbodypersist_js_state¤mimetext/plainlast_run_timestampAڅrPohas_pluto_hook_features¬rootassigneecell_id$dee22937-fb28-4c25-8948-e8c3d6e86604depends_on_disabled_cells§runtime!Ppublished_object_keysdepends_on_skipped_cells§errored$5e0febd2-3f0d-4643-8401-4abd553ff14equeued¤logsrunning¦outputbodypersist_js_state¤mimetext/plainlast_run_timestampAڅrޠ!has_pluto_hook_features¬rootassigneecell_id$5e0febd2-3f0d-4643-8401-4abd553ff14edepends_on_disabled_cells§runtimeZpublished_object_keysdepends_on_skipped_cells§errored$9ee51ff3-73c7-45eb-a4f2-29b191abbf3aqueued¤logsrunning¦outputbody`

Primary energy consumption

persist_js_state¤mimetext/htmllast_run_timestampAڅrԣ0@has_pluto_hook_features¬rootassigneecell_id$9ee51ff3-73c7-45eb-a4f2-29b191abbf3adepends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$eb328609-d0a0-4984-aba5-00ab7e90c763queued¤logsrunning¦outputbody`

Reducing power consumption

persist_js_state¤mimetext/htmllast_run_timestampAڅrUhas_pluto_hook_features¬rootassigneecell_id$eb328609-d0a0-4984-aba5-00ab7e90c763depends_on_disabled_cells§runtimepublished_object_keysdepends_on_skipped_cells§errored$64c9a463-7109-4ef0-9789-4fc885e98be9queued¤logsrunning¦outputbody

xAI Colossus will be the largest cluster being built (not counting mega-clusters made of several ones connected by optic fibers). Made of 100k H100 GPUs and 100k H200 GPUs so a total of 150 MW. This will need a whole new Gas turbine just to power it:

persist_js_state¤mimetext/htmllast_run_timestampAڅrGhas_pluto_hook_features¬rootassigneecell_id$64c9a463-7109-4ef0-9789-4fc885e98be9depends_on_disabled_cells§runtime,}published_object_keysdepends_on_skipped_cells§errored$483e6ccc-114f-4be2-8606-0b6a35b8e513queued¤logsrunning¦outputbodypersist_js_state¤mimetext/htmllast_run_timestampAڅrԭhas_pluto_hook_features¬rootassigneecell_id$483e6ccc-114f-4be2-8606-0b6a35b8e513depends_on_disabled_cells§runtimegPpublished_object_keysdepends_on_skipped_cells§errored$22e59d9d-6abc-42eb-86a8-5b3462f7529equeued¤logsrunning¦outputbodyY

The End

persist_js_state¤mimetext/htmllast_run_timestampAڅr has_pluto_hook_features¬rootassigneecell_id$22e59d9d-6abc-42eb-86a8-5b3462f7529edepends_on_disabled_cells§runtimeJpublished_object_keysdepends_on_skipped_cells§errored$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cqueued¤logsrunning¦outputbody%img (generic function with 3 methods)persist_js_state¤mimetext/plainlast_run_timestampAڅrPhas_pluto_hook_features¬rootassigneecell_id$f8bbe15a-30be-4e5f-9c88-4c46b1d0307cdepends_on_disabled_cells§runtime+published_object_keysdepends_on_skipped_cells§errored$d95d4506-0517-4460-a555-3a7767fb5c71queued¤logslinemsgىPlutoRunner.embed_display(x) is deprecated and will be removed in a future release. Use AbstractPlutoDingetjes.Display.@embed(x) instead.text/plaincell_id$d95d4506-0517-4460-a555-3a7767fb5c71kwargsidPlutoRunner_20adc16cfile\/home/runner/.julia/packages/Pluto/d9Dpv/src/runner/PlutoRunner/src/display/embed_display.jlgroupembed_displaylevelWarnrunning¦outputbody

If the clock frequency is decreased, does the time performance always get worse ?

It gets worse if the program is compute-bound but not if it is bandwidth-bound (cfr. roofline model of part 2)

persist_js_state¤mimetext/htmllast_run_timestampAڅrKhas_pluto_hook_features¬rootassigneecell_id$d95d4506-0517-4460-a555-3a7767fb5c71depends_on_disabled_cells§runtime/apublished_object_keysdepends_on_skipped_cells§errored$23999906-85bc-4c5f-9b42-2c9f4a63b9b8queued¤logsrunning¦outputbody,

When a core is idle, it may first be

If it continues being idle, it may then

If it continues being idle, it may even be

You can inspect the states of your cores on your laptop with

persist_js_state¤mimetext/htmllast_run_timestampAڅr .fhas_pluto_hook_features¬rootassigneecell_id$23999906-85bc-4c5f-9b42-2c9f4a63b9b8depends_on_disabled_cells§runtime|published_object_keysdepends_on_skipped_cells§errored©shortpath5_power.jllast_save_timeAڅrein_temp_dir¨metadata