{"id":38137,"date":"2019-10-31T22:21:53","date_gmt":"2019-10-31T19:21:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii\/"},"modified":"2019-10-31T22:21:53","modified_gmt":"2019-10-31T19:21:53","slug":"proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","title":{"rendered":"Projekt pridania podpory na paraleliz\u00e1ciu procesu kompil\u00e1cie do GCC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V r\u00e1mci v\u00fdskumn\u00e9ho projektu <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/ParallelGcc\">Parallel GCC<\/a><\/noindex> sa za\u010dala pr\u00e1ca na prid\u00e1van\u00ed mo\u017enosti do GCC, ktor\u00e1 umo\u017e\u0148uje rozde\u013eova\u0165 proces kompil\u00e1cie na nieko\u013eko paralelne vykon\u00e1van\u00fdch vl\u00e1kien. V s\u00fa\u010dasnosti sa na zv\u00fd\u0161enie r\u00fdchlosti zostavovania na viacjadrov\u00fdch syst\u00e9moch na \u00farovni n\u00e1stroja make pou\u017e\u00edva sp\u00fa\u0161\u0165anie jednotliv\u00fdch procesov kompil\u00e1tora, z ktor\u00fdch ka\u017ed\u00fd vykon\u00e1va zostavovanie samostatn\u00e9ho s\u00faboru s k\u00f3dom. Nov\u00fd projekt experimentuje s poskytovan\u00edm paraleliz\u00e1cie na \u00farovni kompil\u00e1tora, \u010do potenci\u00e1lne umo\u017en\u00ed zv\u00fd\u0161i\u0165 efektivitu pr\u00e1ce na viacjadrov\u00fdch syst\u00e9moch. <\/p>\n<p>Na testovanie <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/flusp\/gcc\/tree\/giulianob_parallel\">pripraven\u00e1<\/a><\/noindex> Samostatn\u00e1 paraleln\u00ed v\u011btev GCC, pro zad\u00e1n\u00ed po\u010dtu vl\u00e1ken, m\u00e1 nov\u00fd parametr &#171;&#8212;param=num-threads=N&#187;. V po\u010d\u00e1te\u010dn\u00ed f\u00e1zi byly realizov\u00e1ny interprocedur\u00e1ln\u00ed optimalizace v samostatn\u00fdch prov\u00e1d\u011bc\u00edch vl\u00e1knech, kter\u00e9 jsou cyklicky vol\u00e1ny pro ka\u017edou funkci a dob\u0159e se paralelizuj\u00ed. Do samostatn\u00fdch vl\u00e1ken byly vy\u010dlen\u011bny operace GIMPLE, kter\u00e9 se zab\u00fdvaj\u00ed optimalizacemi nez\u00e1visl\u00fdmi na hardwaru, hodnot\u00edc\u00edmi interakce funkc\u00ed mezi sebou.<\/p>\n<p>V nasleduj\u00facej f\u00e1ze sa pl\u00e1nuje tie\u017e extrakcia medzi procedur\u00e1lnych RTL-optimaliz\u00e1ci\u00ed do samostatn\u00fdch vl\u00e1kien, ber\u00fac do \u00favahy \u0161pecifik\u00e1 hardv\u00e9rovej platformy. Potom sa pl\u00e1nuje realizova\u0165 paraleliz\u00e1ciu vn\u00fatroprocedur\u00e1lnych optimaliz\u00e1ci\u00ed (IPA), ktor\u00e9 sa aplikuj\u00fa na k\u00f3d vo vn\u00fatri funkcie, nez\u00e1visle od \u0161pecif\u00edk volania. Obmedzuj\u00facim \u010dl\u00e1nkom zatia\u013e zost\u00e1va zberate\u013e odpadu, do ktor\u00e9ho bola pridan\u00e1 glob\u00e1lna blok\u00e1cia, ktor\u00e1 vyp\u00edna oper\u00e1cie zberu odpadu po\u010das pr\u00e1ce v multithreadovom re\u017eime (v bud\u00facnosti bude zberate\u013e odpadu prisp\u00f4soben\u00fd na viacvl\u00e1knov\u00e9 vykon\u00e1vanie GCC).<\/p>\n<p>Na hodnotenie zmien v\u00fdkonu bol pripraven\u00fd testovac\u00ed s\u00fabor, ktor\u00fd zostavuje s\u00fabor gimple-match.c s viac ako 100 000 riadkami k\u00f3du a 1700 funkciami. Testy na syst\u00e9me s CPU Intel Core i5-8250U s 4 fyzick\u00fdmi jadrami a 8 virtu\u00e1lnymi (Hyperthreading) uk\u00e1zali zn\u00ed\u017eenie \u010dasu v\u00fdkonu optimaliz\u00e1ci\u00ed Intra Procedural GIMPLE z 7 na 4 sekundy pri spusten\u00ed 2 vl\u00e1kien a na 3 sekundy pri spusten\u00ed 4 vl\u00e1kien, \u010do predstavuje zv\u00fd\u0161enie r\u00fdchlosti posudzovanej f\u00e1zy zostavy o 1,72 a 2,52-kr\u00e1t, pr\u00edslu\u0161ne. Testy tie\u017e uk\u00e1zali, \u017ee pou\u017e\u00edvanie virtu\u00e1lnych jadier pri Hyperthreading nevedie k n\u00e1rastu v\u00fdkonu. <\/p>\n<p><center><img decoding=\"async\" alt=\"Projekt pridania podpory na paraleliz\u00e1ciu procesu kompil\u00e1cie do GCC\" src=\"\/wp-content\/uploads\/2019\/09\/c2d0ed085f0247e497e671c13cb06505.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>Celkov\u00fd \u010das zostavenia sa skr\u00e1til pribli\u017ene o 10 %, no predpoklady nazna\u010duj\u00fa, \u017ee paraleliz\u00e1cia RTL-optimaliz\u00e1ci\u00ed prinesie podstatnej\u0161ie v\u00fdsledky, ke\u010f\u017ee t\u00e1to f\u00e1za pri kompil\u00e1cii trv\u00e1 podstatne viac \u010dasu. Odhaduje sa, \u017ee po paraleliz\u00e1cii RTL sa celkov\u00fd \u010das zostavenia skr\u00e1ti o 1,61-kr\u00e1t. Po tomto sa e\u0161te o 5-10 % d\u00e1 skr\u00e1ti\u0165 \u010das zostavenia prostredn\u00edctvom paraleliz\u00e1cie optimaliz\u00e1ci\u00ed IPA.<\/p>\n<p><center><img decoding=\"async\" alt=\"Projekt pridania podpory na paraleliz\u00e1ciu procesu kompil\u00e1cie do GCC\" src=\"\/wp-content\/uploads\/2019\/09\/efea1dac269fb10e57a05778e5e1467f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Zdroj: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51491\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Parallel GCC \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b make \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u043a\u043e\u0434\u043e\u043c. \u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0441 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28626,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-38137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Parallel GCC \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Parallel GCC \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:21:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:21:53+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Projekt na pridanie podpory pre paraleliz\u00e1ciu procesu kompil\u00e1cie do GCC | ProHoster","description":"V r\u00e1mci v\u00fdskumn\u00e9ho projektu Parallel GCC sa za\u010dala pr\u00e1ca na pridan\u00ed do GCC mo\u017enosti, ktor\u00e1 umo\u017e\u0148uje rozde\u013eova\u0165 proces.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 | ProHoster","og:description":"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Parallel GCC \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0432 GCC \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441.","og:url":"https:\/\/prohoster.info\/sk\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:21:53+00:00","article:modified_time":"2019-10-31T19:21:53+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38137","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 20:36:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:14:23","updated":"2026-01-23 20:36:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/38137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=38137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/38137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/28626"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=38137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=38137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=38137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}