Каплиця нову мову паралельного програмування, що розробляється Cray Inc. як частина DARPA чолі програми Висока продуктивність обчислювальних систем (HPCS). Каплиця призначений для підвищення продуктивності користувачів високопродуктивних комп'ютерних, а також страви в якості портативного моделі паралельного програмування, які можуть бути використані на кластерах на товари або настільних багатоядерних систем. Каплиця прагне значно поліпшити програмування великомасштабних паралельних комп'ютерів, підбираючи чи побиття продуктивність і портативність поточних моделей програмування, таких як MPI.
Каплиця додаток підтримує багатопоточну модель виконання через абстракцій високого рівня для паралелізму даних, паралелізм завдань, паралелізм і вкладений паралелізм і NBSP ;. Каплиця Тип мовної дозволяє користувачам вказати і міркувати про розміщення даних і завдань на цільовий архітектури в порядку налаштуватися на місцевості. Каплиця підтримує агрегати даних глобального вид з одними реалізаціями, що дозволяє операції з розподілених структур даних, які будуть висловлені в природним чином. На відміну від багатьох попередніх паралельних мов високого рівня, каплиця будується навколо філософії кратномасштабного, дозволяючи користувачам спочатку пишуть дуже абстрактний код, а потім поступово додати більше деталей, поки вони не як близько до машини, як того вимагають їхні потреби. Каплиця підтримує повторне використання коду і швидкого прототипування за допомогою об'єктно-орієнтованого проектування, типу виводу і функцій для узагальненого програмування.
Каплиця була розроблена з перших принципів, а не шляхом розширення існуючого мови. Це важливо з блочною структурою мови, розроблений, щоб бути легко дізнатися для користувачів C, C ++, Fortran, Java, Perl, Matlab, та інших популярних мовах. У той час як Церква спирається на поняття і синтаксис з багатьох попередніх мов, його паралельні функції найбільш безпосередньо впливають БФЛ, високопродуктивний Фортран (HPF), і Cray MTA & торгівля; / Cray ПРД і торгівлі; Розширення С і Fortran
Що нового У цьому випуску :.
- Основні (див нижче) літій >
- розкол "Def" ключове слово в "Proc" (для процедур) і «ІТЕР» (для ітераторів)
- (див '$ CHPL_HOME / Util / перетворити-DEFS --help' для допомоги оновлення існуючих кодів)
- додав "Replicated" розподіл і поліпшення "Блок-Циклічна" Розподіл
- (див & Quot; Стандартний розподілу та Quot; в специфікації і приклади / праймерів / distributions.chpl)
- додаткові шари завдань одного регіональні для Nanos ++ (BSC) і об'єктів QThread (Sandia)
- (див DOC / README.tasks)
- з основних переробка семантики та реалізації дальності
- (див & Quot; семантичні зміни / Зміни в Чапел мови і Quot; нижче для деталей)
- початкова підтримка летючих типів: BOOL, INT, UINT, реальний, ємк
- (див DOC / TechNotes / README.volatile)
- підтримка Екстерн consts і класів (покажчики, к-структури)
- (див DOC / TechNotes / README.extern)
- покращена підтримка паралелізму даних на Cray ПРД
- широкі поліпшення кодів вибірок в прикладах / каталог
- (див "приклад" коди нижче і приклади / README)
- додав більшість прикладів коду із специфікації на нові приклади каталозі /
- (див приклади / SPEC / *)
- додав технічну записку опису користувальницьке зіставлення домену інтерфейс
- (див DOC / TechNotes / README.dsi)
- широкі поновлення специфікації мови
- (див '' Документація нижче)
- кілька поліпшень дорученням виконання і зв'язку шари
- (див & Quot; Runtime бібліотеки Зміни та Quot; нижче)
- Синтаксична / Неймінг змін
- розкол "Def" ключове слово в "Proc" (для процедур) і «ІТЕР» (для ітераторів)
- (див '$ CHPL_HOME / Util / перетворити-DEFS --help' для допомоги оновлення існуючих кодів)
- перейменовані '' арифметичні доменів / масиви "прямокутні" домени / масиви
- додана підтримка для літерали з плаваючою комою в формі '1.e ...
- (раніше тільки "1е ...» і «... 1.0e" були підтримані)
- семантичні зміни / Зміни в Чапел мови
- кілька поліпшень в діапазонах (див 'Діапазон' глава в специфікації мови):
- додав концепцію вирівнювання, щоб вказати вирівнювання по модулю | крок |
- додали 'Вирівняти' оператора і запит на діапазонах вказати вирівнювання / запиту
- (наприклад, «1..10 на 3 Зіставте 2 = & GT; '2, 5, 8' з 2 == == 5 8, мод 3)
- визначається == на полігонах в термінах цілочисельних послідовностей, які вони виробляють
- визначається розпізнавання (R1, R2), щоб сказати чи R1 і R2 є семантично ідентичні
- визначається '# К' при до & LT; 0 в сенсі & Quot; відлік від кінця діапазону і Quot;
- додав "перший", "останній", "alignedLow« Методи alignedHigh 'в діапазонах
- (наприклад, «1..10 по -2» = & GT-перше == 10, минулого == 2, alignedLow = 2, alignedHigh = 10)
- додана підтримка для різних нових функцій Діапазон запитів
- (наприклад, alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
- додана підтримка для летючих BOOL, INT, UINT, реальна і типи Імаго
- (див DOC / TechNotes / README.volatile)
- додав кінця-файла перевірку на тип файлу
- (наприклад., "В той час! Infile.eof ... ')
- прибрана підтримка для лікування "повернення" в якості ітератора '' вихід
- (наприклад, зміна "ІТЕР Foo () {повернення х;} 'на' ІТЕР Foo () {вихід х; повернення;})
- додана підтримка для посилаються модулів без першого 'use'-ки їх
- (наприклад, модуль М1 {VAR х ...} модуль М2 {... M1.x ...} тепер юридична)
- додав callStackSize запит типу локалі
- (наприклад, «here.callStackSize" повертає розмір стека викликів від поточної локалі)
- видалили раніше необхідну коми з кінця декларацій перерахування
- (наприклад, «перерахування кольору {червоний, синій, зелений} 'тепер правовий; раніше було потрібно'; ')
- додана підтримка для одного Кома в кінці списків перерахувань
- (наприклад, «перерахування кольору {червоний, синій, зелений,} 'тепер юридична)
- видалені підтримку +/- операторів на прямокутних областей; використовувати переводити ()
- Нещодавно Реалізовані функції
- реалізовані == /! = Для прямокутних, асоціативно і рідкісними доменів
- Стандартні Розподіл
- додав перший проект '' REPLICATED розподіл для зберігання даних з надмірністю
- (див приклади / праймерів / distributions.chpl)
- покращене "Блок-Циклічна", достатньо, щоб правильно здійснити HPCC PTRANS і HPL
- (див приклади / HPCC / ptrans.chpl, hpl.chpl; приклади / грунтовки / distributions.chpl)
- видалити надмірність в описі лідер ітераторів між доменами / масивів
- Стандартні модулі
- додав нескінченності і NaN константи модуля Math.chpl
- (див '' Math під & Quot; стандартні модулі & Quot; в специфікації мови)
- додав isinf () і () isfinite тестові процедури в модулі Math.chpl
- (див '' Math під & Quot; стандартні модулі & Quot; в специфікації мови)
- додав півдюжини більш процедур в модулі GMP.chpl
- Документація
- доданий новий технічну записку опису користувальницьке зіставлення домену інтерфейс
- (див DOC / TechNotes / README.dsi)
- зроблено безліч поліпшень в специфікації мови
- основні зміни до глави Domains, щоб поліпшити чіткість / точність
- покращився, і єдина структура рекордів і класи глави
- основні зміни до глави Доменні Карти для поліпшення чіткості / точність
- імені приклад коди для забезпечення крос-посилання на приклади / SPEC / програми
- уточнити законність етикетки / перерви / продовжити в паралельних циклів
- оновлюються опису читати [LN] / написати [LN]
- Виправлені деякі проблеми в областях файлів замовлення
- переформатований специфікацію як «книги» в LaTeX
- різні дрібні виправлення друкарських помилок / помилок
- поліпшені визначення / опису декількох термінах
- додав документації locale.name
- і багато інших змін ...
- оновлюються короткий довідник документ повинен включати просоч & GT; Proc / ІТЕР зміна, сумістите оп .
- переписав / реорганізовано README.extern уточнити роз'яснення та виховувати сучасних
- додав README, що описує 'місцевий' про (Doc / TechNotes / README.local)
- додав README, що описує летючі види (док / TechNotes / README.volatile)
- оновлення README.comm-діагностика кажучи швидкі вилки статистику
- оновлюються різні файли README
- Приклад коди
- поміщається більшість прикладів коду із специфікації мови. до нової специфікації / підкаталог
- покращилася грунтовки / Каталог:
- доданий новий грунт для використання процедури (праймери / procedures.chpl)
- додав основну ґрунтовку для доменів (праймери / domains.chpl)
- перейменований локалі грунтовка locales.chpl і поліпшили його
- покращилася ґрунтовку розподілів і додав Блок-Циклічні і реплицируемой використання
- оновлюються діапазон праймер (праймери / range.chpl)
- покращилася ґрунтовку ітератори (праймери / iterators.chpl)
- покращилася ґрунтовку скорочень (праймери / reductions.chpl)
- додані GetCurrentTime () для грунтовки (праймери таймерів / timers.chpl)
- додав опису псевдонімів типу і типів конфігураційних змінних в ґрунтовкою
- (див праймерів / variables.chpl)
- покращилася каталог HPCC / тести
- додав перший варіант HPCC PTRANS в HPCC / каталогу (ptrans.chpl)
- додав чистий варіант HPCC HPL для HPCC / каталогу (hpl.chpl)
- додав варіантів / підкаталог з прикладами / HPCC виставляти інші підходи
- додав потік-promoted.chpl показати використання просування в глобальній STREAM Triad
- додав ра-cleanloop.chpl показати очищувач (але в даний час повільніше) ядро РА
- поліпшені зразки верхнього рівня:
- перейменований існуючих і Quot; привіт, мир і Quot; приклади показують, логічний порядок читання
- (див приклади / привіт * .chpl)
- додав дані паралельних і розподілених даних паралельного привіт, приклади світових
- (див приклади / hello3-datapar.chpl, приклади / hello4-datapar-dist.chpl)
- додав коментарі до різних привіт, приклади світу (приклади / привіт * .chpl)
- оновлюються всі приклади до семантики поточної мови
- використовувати "Proc '/' ІТЕР", а не "Def"
- оновлення з урахуванням нових семантику дальності
- конкретної платформи Примітки
- для Cray XT / Cray XE, поліпшили aprun і PBS-aprun пускові
- (див & Quot; Launcher конкретних зауваження та Quot; нижче)
- для Cray ПРД, додана підтримка паралельних циклів по областям
- для Cray ПРД, додав покоління noalias директив для FORALL змінних циклу
- додана підтримка для MareNostrum КСК у тому числі документи та спеціальної пускової
- (див DOC / платформи / README.marenostrum)
- Launcher конкретних замітки
- додав пуску-специфічні опції, щоб --help можливість
- покращилася поширення кодів стану виходу через пускових
- змінилися пускові для підтримки Exec основі (а не на основі системи) команди
- з пускових використовувати "Розірвати зв'язок", а не системи ('') гт, щоб видалити тимчасові файли
- додав запуску для MareNostrum КСК
- зменшується кількість тимчасових файлів, використовуваних для захоплення вихід "системи" команди
- aprun поліпшення пускових
- додав --cc прапор, щоб вказати призначення процесора ж / у вузлі
- додав прапор -q для запуску ракети-носія в автоматичному режимі
- додав налагодження можливість зберегти тимчасові файли близько через CHPL_LAUNCHER_DEBUG
- PBS-aprun поліпшення пускових
- додав --cc прапор, щоб вказати призначення процесора ж / у вузлі
- додав налагодження можливість зберегти тимчасові файли близько через CHPL_LAUNCHER_DEBUG
- очищені вихід, щоб позбутися від якоїсь сторонньої друку
- з пускової підтримка тестовій системі
- додав --walltime і --queue прапори запуску і в якості альтернативи окр. вари.
- Зміни компілятора
- з компілятора друк "істинний" / "помилковий" в підписі типу, а не 1/0
- додав конфігурації парам '' noRefCount відключити підрахунок посилань (може статися витік пам'яті)
- Прапори компілятора
- додав прапор --print-CallStack-на-помилки, щоб показати, що призвело до поганої виклику
- додав прапор --no-Codegen пропустити генерації коду і зв'язує фази
- сумісність Зміни
- додана підтримка для екстерном З & Quot; класи та Quot; (Покажчик на структури типу)
- додана підтримка для Екстерн consts (див README.extern)
- Покращення Повідомлення про помилку
- додав попередження сиротами "використання" заяви за межами заявлених модулів
- (наприклад, «використовувати M1; модуль М2 {} 'має бути, як правило," модуль М2 {використання М1;})
- зроблено повідомлення про помилку розбору часу використовувати стандартний 'ім'я файлу: LINENO: "формат
- генерується повідомлення про помилку для посилання на ім'я класу в якості основного методу
- (наприклад, «клас С {Def Ст () {...}} 'тепер генерує повідомлення про помилку)
- Виправлення / Нові семантичні перевірки (для старих семантики)
- запобігти типів конфігураційних від створюються за допомогою прапорів час виконання командного рядка
- Виправлена можливість компілятора для обробки союзи без будь-яких полів
- фіксованою скорочень MINLOC / MAXLOC обробляти порожні діапазони / піддіапазони значень
- Виправлена помилка, в якій "шлях" аргумент конструкторів файлів був проігнорований
- з порожніх спілки працюють правильно
- Виправлена проблема переповнення в відривів до діапазони для розподілу / розпаралелювання
- Виправлена помилка, пов'язана з підтримкою для порожніх Екстерн типів записів
- Виправлена помилка, пов'язана з Екстерн функції, які повертають записи
- Виправлена помилка, пов'язана з копіюванням зовнішніх записів
- фіксованою реалізація +/- операторів в асоціативних / рідкісні домени
- Виправлена помилка, що відноситься до імені файлу імен модулів на основі містять кратне-х років.
- Повідомлення про помилки додав для розширення / зовнішній / інтер'єр на нерегулярних областях
- додав помилку для конструкторів / деструкторів з вказаним типом возвращаемого
- Виправлена пара помилок, пов'язаних з «швидким на« оптимізації
- додав перевірку щодо побудови класів без визначення специфічних полів
- Тара та упаковка Зміни
- додав підсвічування синтаксису коду для GNU-джерела підсвічування
- (див т.д. / джерела виділення / README)
- поліпшені Emacs розмальовки підтримку версії 22.x
- (див т.д. / Emacs / README)
- Оновлення в VIM забарвлення синтаксису, щоб відбити нову 'прок' / '' ІТЕР ключові слова
- (див т.д. / VIM / README)
- додав скрипт для конвертації "використання" існуючих кодексів DEF 'до' ІТЕР '/' 'прок
- (див $ CHPL_HOME / Util / перетворити-DEFS)
- видалені multirealm приклади та документація в даний час
- Програмне забезпечення сторонніх Зміни
- оновлюються GASNet до версії 1.16.1
- додав копії Nanos КСК ++ і об'єктів QThread Сандиа
- (див сторонніх / README)
- зробив після установки крок за GASNet, що зміни абсолютні шляхи до відносного
- видалені PVM на даний момент через нестабільність
- Runtime бібліотеки Зміни
- додаткові шари завдань одного регіональні для Nanos ++ (BSC) і об'єктів QThread (Sandia)
- кілька поліпшень до виконання постановки завдань шару:
- доданий новий інтерфейс за те, що багатозадачність шар виклику chpl_main ()
- змінилися завданнями функцію ініціалізації, щоб прийняти maxThreadsPerLocale / callStackSize аргументи
- додав можливість плинності завдання інтерфейсу завданнями шару
- Покращено код виконання, щоб уникнути використання синхронізації вари перед ініціалізацією завданнями
- видалити макро-зованих форма завданнями інтерфейс; з використанням стандартних імен, а не
- уніфіковані імен всіх процедур завдання шару, щоб chpl_sync _ * () і chpl_task _ * ()
- видалити вимога для реалізації однієї змінної інтерфейс
- переїхав припинення потоків з FIFO постановки завдань шару Pthreads багатопоточних
- спрощена реалізація змінних синхронізації в ниток різьблення шару
- переїхав на себе відповідальність за пунктами ниток від FIFO завданнями для PTHREAD потокову
- кілька поліпшень в рівні зв'язку виконання:
- реструктуризацію інтерфейс зв'язку для підтримки аргументи довжина / тип
- додав інтерфейс для неблокіру- отримати роботу в кому. Інтерфейс
- уніфіковані всі видалені операції отримати використовувати CHPL_COMM_GET () макрос
- рефакторингу / перейменував заголовки інтерфейс зв'язку
- система тестування
- значно поліпшили тестування продуктивності і графічні можливості
- (див коментарі на передній start_test для документації)
- покращена підтримка тестування системи для очищення після себе
- Додана можливість уникати використання будь-яких непрямого стандартного введення
- додана можливість забезпечити можливість prediff загальносистемного
- Додана можливість використовувати функцію тайм-ауту рідний ракети-носія, а не Пайтона
- покращилася, як система тестування вбиває тест, який раз з
- Виправлена помилка, в якій .preexec тільки файли, якщо працював ". був на вашому шляху
- Внутрішня
- додав прапор --break-на-ID компілятора для розробників, щоб знайти створює АСТ вузол
- вдосконалення організації змісту Util / каталогів
- змінили спосіб номери версій обчислюються / відображаються для користувачів SVN на основі
- додана підтримка для завдання- / Автор-залежний код модуля
- додав можливість друкувати АСТ розраховує розподіляються між кожним проходом
- доданий новий GDB псевдонім компілятора --gdb: «LOC» друкує АСТ вузла місця розташування
- значно покращилася реалізація ПРАГМАС / прапорів, щоб уникнути випадків помилках
- видалити кілька випадків непотрібних порівнянь рядків у компіляторі
- видалені помилок використання CHPL_TASKS і CHPL_THREADS, як символів препроцесора
- додав BestPractices документації для розробників (не входить у випуску)
- змінили внутрішню munging з '=' і '==' до 'ASSIGN "і" рівних »відповідно
- додав прапор --print-ID-на-помилки розробників для друку AST ID про помилки
- покращилася строгість C ++ прототипу перевірки
- додав зовнішні угоди внесок у дереві SVN (не в релізі)
- додав поняття внутрішніх типів, використовуваних компілятором, але не користувач
Коментар не знайдено