{"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\/it\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","title":{"rendered":"Progetto per aggiungere il supporto alla parallelizzazione del processo di compilazione in GCC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nell'ambito di un progetto di ricerca <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/wiki\/ParallelGcc\">GCC Parallelo<\/a><\/noindex> \u00e8 iniziato il lavoro per aggiungere a GCC la possibilit\u00e0 di suddividere il processo di compilazione in pi\u00f9 thread eseguiti in parallelo. Attualmente, per aumentare la velocit\u00e0 di compilazione nei sistemi multi-core, viene avviato un processo separato del compilatore per ogni file di codice da compilare a livello dell'utility make. Il nuovo progetto sperimenta con la paralellizzazione a livello del compilatore, il che potrebbe aumentare l'efficienza operativa sui sistemi multi-core. <\/p>\n<p>Per il testing <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/flusp\/gcc\/tree\/giulianob_parallel\">\u00e8 stata preparata<\/a><\/noindex> un ramo di parallelizzazione separato di GCC, per il quale \u00e8 stato proposto un nuovo parametro &#171;&#8212;param=num-threads=N&#187; per impostare il numero di thread. Nella fase iniziale, sono state implementate ottimizzazioni interprocedurali eseguite in thread separati, che vengono chiamate ciclicamente per ogni funzione e si prestano bene al parallelismo. Sono state trasferite in thread separati le operazioni GIMPLE, responsabili delle ottimizzazioni indipendenti dall'hardware, che valutano l'interazione tra le funzioni.<\/p>\n<p>Nella fase successiva si prevede di estrarre in thread separati anche le ottimizzazioni RTL interprocedurali, tenendo conto delle caratteristiche della piattaforma hardware. Dopo ci\u00f2, si intende implementare la paralellizzazione delle ottimizzazioni intra-procedurali (IPA) applicate al codice all'interno della funzione, indipendentemente dalle peculiarit\u00e0 della chiamata. Il collo di bottiglia attuale \u00e8 rappresentato dal garbage collector, al quale \u00e8 stata aggiunta una global lock che disabilita le operazioni di pulizia durante il funzionamento in modalit\u00e0 multi-threading (in futuro il garbage collector sar\u00e0 adattato per l'esecuzione multi-threading di GCC).<\/p>\n<p>Per valutare le variazioni delle prestazioni, \u00e8 stato preparato un set di test che esegue la compilazione del file gimple-match.c, contenente oltre 100.000 righe di codice e 1.700 funzioni. I test su un sistema con CPU Intel Core i5-8250U con 4 core fisici e 8 virtuali (Hyperthreading) hanno mostrato una riduzione del tempo necessario per l'ottimizzazione Intra Procedural GIMPLE da 7 a 4 secondi con l'esecuzione di 2 thread e a 3 secondi con 4 thread, raggiungendo quindi un aumento della velocit\u00e0 di questo stadio di compilazione di 1,72 e 2,52 volte, rispettivamente. I test hanno anche mostrato che l'uso di core virtuali con Hyperthreading non porta a un aumento delle prestazioni. <\/p>\n<p><center><img decoding=\"async\" alt=\"Progetto per aggiungere il supporto alla parallelizzazione del processo di compilazione in GCC\" src=\"\/wp-content\/uploads\/2019\/09\/c2d0ed085f0247e497e671c13cb06505.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/center><\/p>\n<p>Il tempo totale di compilazione \u00e8 stato ridotto di circa il 10%, ma si prevede che il parallelismo delle ottimizzazioni RTL porter\u00e0 risultati pi\u00f9 significativi, poich\u00e9 questa fase richiede sostanzialmente pi\u00f9 tempo durante la compilazione. Si stima che, dopo il parallelismo RTL, il tempo totale di compilazione sar\u00e0 ridotto di 1,61 volte. Successivamente, si potr\u00e0 ridurre ulteriormente il tempo di compilazione del 5-10% grazie al parallelismo delle ottimizzazioni IPA.<\/p>\n<p><center><img decoding=\"async\" alt=\"Progetto per aggiungere il supporto alla parallelizzazione del processo di compilazione in 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>Fonte: <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.1.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\/it\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Progetto per l'aggiunta nel GCC del supporto per il parallelismo del processo di compilazione | ProHoster","description":"Nell'ambito del progetto di ricerca Parallel GCC, \u00e8 iniziato il lavoro per aggiungere a GCC una funzionalit\u00e0 che consente di separare il processo.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/proekt-po-dobavleniyu-v-gcc-podderzhki-rasparallelivaniya-protsessa-kompilyatsii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/38137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=38137"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/38137\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28626"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=38137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=38137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=38137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}