{"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\/ro\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","title":{"rendered":"Proiectul de ad\u0103ugare a suportului pentru paralelizarea procesului de compilare \u00een GCC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00cen cadrul unui proiect de cercetare <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/ParallelGcc\">GCC Paralel<\/a><\/noindex> a \u00eenceput implementarea unei func\u021bionalit\u0103\u021bi \u00een GCC care permite \u00eemp\u0103r\u021birea procesului de compilare \u00een mai multe fire de execu\u021bie care ruleaz\u0103 \u00een paralel. \u00cen prezent, pentru a spori viteza de compilare pe sisteme multicore, la nivelul utilitarului make se lanseaz\u0103 procese separate ale compilatorului, fiecare dintre ele compil\u00e2nd un fi\u0219ier de cod separatat. Noua ini\u021biativ\u0103 experimenteaz\u0103 cu asigurarea paralelismului la nivelul compilatorului, ceea ce ar putea permite cre\u0219terea eficien\u021bei pe sisteme multicore. <\/p>\n<p>Pentru testare <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/flusp\/gcc\/tree\/giulianob_parallel\">a fost preg\u0103tit\u0103<\/a><\/noindex> o ramur\u0103 separat paralel\u0103 GCC, pentru setarea num\u0103rului de fire de execu\u021bie la care este propus un nou parametru &#171;&#8212;param=num-threads=N&#187;. \u00cen etapa ini\u021bial\u0103, s-au implementat optimiz\u0103rile interprocedurale \u00een fire de execu\u021bie separate, care sunt apelate ciclic pentru fiecare func\u021bie \u0219i se preteaz\u0103 bine la paralelizare. Opera\u021biile GIMPLE, responsabile pentru optimiz\u0103rile independente de hardware, care evalueaz\u0103 interac\u021biunea dintre func\u021bii, au fost muta\u021bi \u00een fire separate.<\/p>\n<p>\u00cen etapa urm\u0103toare, se planific\u0103 scoaterea optimiz\u0103rilor interprocedurale RTL \u00een fire separate, av\u00e2nd \u00een vedere caracteristicile platformei hardware. Ulterior, se dore\u0219te implementarea paralelismului optimiz\u0103rilor intraprocedurale (IPA) aplicate codului din interiorul func\u021biei, indiferent de particularit\u0103\u021bile apelurilor. Punctul limitativ r\u0103m\u00e2ne momentan colectorul de gunoi, \u00een care a fost ad\u0103ugat\u0103 o blocare global\u0103 care dezactiveaz\u0103 opera\u021biile de colectare a gunoiului \u00een timpul execu\u021biei \u00een modul multithreading (\u00een viitor, colectorul de gunoi va fi adaptat pentru execu\u021bie multithreading \u00een GCC).<\/p>\n<p>Pentru a evalua modific\u0103rile de performan\u021b\u0103, a fost preg\u0103tit un set de teste care compileaz\u0103 fi\u0219ierul gimple-match.c, con\u021bin\u00e2nd peste 100.000 de linii de cod \u0219i 1.700 de func\u021bii. Testele efectuate pe un sistem cu CPU Intel Core i5-8250U cu 4 nuclee fizice \u0219i 8 nucleu virtuale (Hyperthreading) au ar\u0103tat o reducere a timpului de execu\u021bie pentru optimiz\u0103rile Intra Procedural GIMPLE de la 7 la 4 secunde c\u00e2nd se ruleaz\u0103 2 fire \u0219i p\u00e2n\u0103 la 3 secunde c\u00e2nd se ruleaz\u0103 4 fire, deci s-a ob\u021binut o cre\u0219tere a vitezei pentru etapa de compilare analizat\u0103 de 1.72 \u0219i 2.52 ori, respectiv. Testele au ar\u0103tat de asemenea c\u0103 utilizarea nucleelor virtuale \u00een mod Hyperthreading nu duce la o cre\u0219tere a performan\u021bei. <\/p>\n<p><center><img decoding=\"async\" alt=\"Proiectul de ad\u0103ugare a suportului pentru paralelizarea procesului de compilare \u00een GCC\" src=\"\/wp-content\/uploads\/2019\/09\/c2d0ed085f0247e497e671c13cb06505.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>Timpul total de compilare a fost redus cu aproximativ 10%, \u00eens\u0103 previziunile arat\u0103 c\u0103 paralelizarea optimiz\u0103rilor RTL va permite ob\u021binerea unor rezultate \u0219i mai semnificative, deoarece aceast\u0103 etap\u0103 dureaz\u0103 semnificativ mai mult la compilare. Estimativ, dup\u0103 paralelizarea RTL, timpul total de compilare se va reduce de 1.61 ori. Dup\u0103 aceasta, timpul de compilare poate fi redus cu \u00eenc\u0103 5-10% prin paralelizarea optimiz\u0103rilor IPA.<\/p>\n<p><center><img decoding=\"async\" alt=\"Proiectul de ad\u0103ugare a suportului pentru paralelizarea procesului de compilare \u00een 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>Sursa: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=51491\">opennet.ro<\/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.2.1 - 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\/ro\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Proiect pentru ad\u0103ugarea \u00een GCC a suportului pentru paralelizarea procesului de compilare | ProHoster","description":"\u00cen cadrul proiectului de cercetare Parallel GCC a \u00eenceput lucrul la ad\u0103ugarea \u00een GCC a unei func\u021bionalit\u0103\u021bi care permite \u00eemp\u0103r\u021birea procesului.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/38137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=38137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/38137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/28626"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=38137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=38137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=38137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}