~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ B47818620DADFC21B23CD484EF1A0574__1675508520 ✰
Заголовок документа оригинал.:
✰ Ateji PX - Wikipedia ✰
Заголовок документа перевод.:
✰ Атеджи PX — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Ateji_PX ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/b4/74/b47818620dadfc21b23cd484ef1a0574.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/b4/74/b47818620dadfc21b23cd484ef1a0574__translat.html ✰
Дата и время сохранения документа:
✰ 22.06.2024 17:05:49 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 4 February 2023, at 14:02 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Атеджи PX — Википедия Jump to content

Атеджи ПХ

Из Википедии, бесплатной энциклопедии
Атеджи ПХ
Парадигма объектно-ориентированное исчисление Пи
Дисциплина набора текста сильный , статичный
Лицензия коммерческая, бесплатная 30-дневная пробная версия Premium и бесплатная версия
Веб-сайт www.Ateji.com
Под влиянием
Джава

Ateji PX — это объектно-ориентированное расширение языка программирования для Java . Он предназначен для облегчения параллельных вычислений на многоядерных процессорах , графических процессорах , Grid и Cloud.

Ateji PX может быть интегрирован с Eclipse IDE , требует минимального изучения дополнительных параллельных конструкций и не изменяет процесс разработки.

Примеры кода [ править ]

Привет, мир [ править ]

общественный   класс   HelloWorld   { 
   public   static   void   main  (  String  []   args  )   { 
     [ 
       ||    Система  .   вне  .   println  (  "Привет"  ); 
        ||    Система  .   вне  .   println  (  "Мир"  ); 
      ] 
   } 
 } 

Каждый ||символ представляет параллельную ветвь. Запуск этой программы выведет либо

Привет
 Мир
 

или

Мир
 Привет
 

в зависимости от того, как запланированы параллельные ветки.

Параллелизм данных [ править ]

[ 
   ||    (  int   i   :   массив  .  длина  )   массив  [  я  ]++  ; 
  ] 

Количественная оценка (int i : N) создает одну параллельную ветвь для каждого значения i. Эффект этого кода заключается в увеличении всех элементов arrayв параллели. Этот код эквивалентен

[ 
   ||    массив  [  0  ]++  ; 
    ||    массив  [  1  ]++  ; 
    ... 
   ||    массив  [  массив  .   длина  -  1  ]++  ; 
  ] 

Возможны более сложные количественные оценки. В следующем примере выполняется количественная оценка верхнего левого треугольника квадратной матрицы:

[ 
 ||    (  int   i  :  N  ,   int   j  :  N  ,   если   i  +  j  <  N  )   матрица  [  i  ][  j  ]++  ; 
  ] 

Код, который выполняет аналогичную и обычно небольшую операцию с большой коллекцией элементов, называется параллелизмом данных и часто встречается в высокопроизводительных научных приложениях. Типичным представителем языков с параллельными данными для экосистем C/C++ или Fortran является OpenMP .

Функции параллелизма данных также могут быть реализованы библиотеками с использованием специальных структур данных, таких как параллельные массивы .

Параллелизм задач [ править ]

Термин «параллелизм задач» используется, когда работу можно концептуально разложить на ряд логических задач. В этом примере задачи создаются рекурсивно:

int   fib  (  int   n  )   { 
   if   (  n   <=   1  )   return   1  ; 
    интервал   фиб1  ,   фиб2  ; 
    // рекурсивно создаем параллельные ветки 
   [ 
     ||    фиб1   =   фиб  (  n  -  1  ); 
      ||    фиб2   =   фиб  (  n  -  2  ); 
    ] 
   вернуть   фиб1   +   фиб2  ; 
  } 

Параллелизм задач реализован в таких языках, как Cilk , и в библиотеках, подобных fork/join пара системных вызовов Unix.

Передача сообщений [ править ]

Параллельные ветки имеют два способа взаимодействия; либо путем одновременного чтения и записи общих переменных, либо путем отправки явных сообщений. Операторы ! и ? соответственно отправлять и получать сообщения по каналу.

В этом примере две параллельные ветки взаимодействуют посредством явной передачи сообщений:

Чан  <  Строка  >   Чан   =   новый   Чан  <  Строка  >  (); 
  [ 
   // ветвь 1 отправляет значение по каналу 
   ||    чан   !    "Привет"  ; 

    // ветвь 2 получает значение из канала и печатает его 
   ||    чан   ?    с  ;    Система  .   вне  .   Печатьln  (  ы  ); 
  ] 

Поток данных [ править ]

Программу называют потоком данных, когда вычисления инициируются и синхронизируются наличием данных в потоке. Типичным примером является сумматор: он имеет два входа, один выход, и когда два входа готовы, он отправляет их сумму на выход.

void   adder  (  Chan  <  Integer  >   in1  ,   Chan  <  Integer  >   in2  ,   Chan  <  Integer  >   out  )   { 
   for   (;;)   { 
     int   value1  ,   value2  ; 
      [   в 1   ?    значение1  ;    ||    в2   ?    значение2  ;    ]  ; 
      вне   !    значение1   +   значение2  ; 
  }} 

Обратите внимание на параллельное чтение [ in1 ? value1; || in2 ? value2; ]. Это означает, что два входных значения могут идти в любом порядке. Без этого код может зайти в тупик, если значения поступят в неправильном порядке. Это показывает, что параллельные примитивы в языке программирования касаются не только производительности, но и поведения программ.

Сумматор сам по себе ничего не делает, так как реагирует на входные данные. Его необходимо поместить в контекст, в котором другие части передают входные значения и считывают выходные значения. Это можно выразить, объединив все части в большой параллельный блок:

[ 
   ||    источник  (  с1  );    // генерирует значения в c1 
   ||    источник  (  с2  );    // генерирует значения на c2 
   ||    сумматор  (  c1  ,   c2  ,   c3  ); 
    ||    раковина  (  с3  );    // читаем значения из c3 
 ] 

Все, что можно рассматривать как комбинацию логических элементов или электрических схем, можно легко выразить таким образом как программу потока данных.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: B47818620DADFC21B23CD484EF1A0574__1675508520
URL1:https://en.wikipedia.org/wiki/Ateji_PX
Заголовок, (Title) документа по адресу, URL1:
Ateji PX - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)