در چپل یک زبان برنامه نویسی جدید موازی که توسط کری شرکت به عنوان بخشی از DARPA به رهبری برنامه بهره وری سیستم های رایانه بالا (HPCS) توسعه یافته است. چپل طراحی شده است برای بهبود بهره وری از بالا پایان کاربران کامپیوتر نیز در حالی که به عنوان یک مدل برنامه نویسی موازی قابل حمل است که می تواند بر روی خوشه کالا و یا سیستم های چند هسته رومیزی استفاده می شود در خدمت. چپل تلاش برای بهبود برنامه ریزی بسیار از کامپیوتر های موازی در مقیاس بزرگ با جور و یا ضرب و شتم عملکرد و قابلیت حمل مدل های برنامه نویسی در حال حاضر مانند MPI.
برنامه چپل پشتیبانی از مدل اعدام چند رشته از طریق انتزاع سطح بالا برای موازی داده ها، کار موازی، همزمانی، و موازی تو در تو و nbsp؛ نوع محل نمازخانه را به کاربران امکان مشخص و عقل در مورد قرار دادن داده ها و وظایف در معماری هدف به منظور به لحن برای محل. چپل پشتیبانی جهانی-مشخصات سنگدانه داده ها با پیاده سازی تعریف شده توسط کاربر، امکان عملیات بر روی سازه های توزیع شده داده ها به صورت طبیعی در یک بیان شود. در مقابل بسیاری از زبان های قبلی در سطح بالاتر موازی، چپل در اطراف یک فلسفه multiresolution طراحی شده است، اجازه به کاربران برای ارسال ابتدا کد بسیار انتزاعی و بعد کم اضافه جزئیات بیشتر تا زمانی که به عنوان نزدیک به دستگاه به نیازهای خود نیاز دارد. چپل پشتیبانی استفاده مجدد از کد و نمونه سازی سریع از طریق طراحی شی گرا، نوع استنباط و امکانات را برای برنامه نویسی جنریک.
چپل از اصول اولیه به جای گسترش زبان های موجود طراحی شده است. این بلوک ساختار زبان ضروری، طراحی شده است که آسان برای کاربران از C، C ++، فرترن، جاوا، پرل، نرم افزار Matlab، و دیگر زبان های محبوب یادگیری است. / کری XMT و تجارت، در حالی که چپل بر اساس مفاهیم و نحو از بسیاری از زبان های قبلی، ویژگی های موازی آن به طور مستقیم توسط ZPL، کارایی بالا فرترن (HPF) و کری MTA و تجارت را تحت تاثیر قرار. پسوند به C و فرترن
در چه در این نسخه جدید است.
نکات برجسته (پایین را ببینید برای جزئیات بیشتر)
تقسیم 'دف' کلمه کلیدی را به 'مجموعه مقالات () نمونه و ITER (برای تکرارکننده)
(نگاه کنید به '$ CHPL_HOME / زمانی / تبدیل-defs --help را برای کمک در به روز رسانی کدهای موجود)
اضافه 'مضاعف' توزیع و بهبود توزیع بلوک چرخهای '
(به & quot؛ استاندارد توزیع و & quot؛ در تنظیمات و نمونه / آغازگر / distributions.chpl)
تک لایه محلی کار اضافه برای Nanos ++ (BSC) و Qthreads (ساندیا)
(نگاه کنید به توضیحات / README.tasks)
بازسازی های عمده ای از معانی محدوده و پیاده سازی
(به & quot؛ تغییرات معنایی / تغییرات در چپل زبان ها & quot؛ زیر برای جزئیات)
حمایت اولیه برای انواع فرار: بولی، متوسط، UINT، واقعی، IMAG
(نگاه کنید به توضیحات / technotes / README.volatile)
پشتیبانی از consts در خارج و کلاس (اشاره گر به ساختمانها)
(DOC / technotes / README.extern مراجعه کنید)
پشتیبانی بهبود یافته برای موازی داده ها در کری XMT
بهبود گسترده به کد نمونه در نمونه / دایرکتوری
('کدهای مثال' زیر و نمونه / README مراجعه کنید)
از تنظیمات به نمونه جدید / دایرکتوری اضافه ترین نمونه کد
(نمونه ببینید / تنظیمات / *)
اضافه توجه داشته باشید فنی توصیف رابط و نقشه دامنه تعریف شده توسط کاربر
(نگاه کنید به توضیحات / technotes / README.dsi)
به روز رسانی گسترده به خصوصیات زبان
(پایین را ببینید 'اسناد')
پیشرفت های مختلف به آماده سازی زمان اجرا و لایه ارتباطات
(نگاه کنید به & quot؛ را در زمان اجرا کتابخانه تغییرهای & quot؛ را در زیر)
نحوی / تغییرهای نامگذاری
تقسیم 'دف' کلمه کلیدی را به 'مجموعه مقالات () نمونه و ITER (برای تکرارکننده)
(نگاه کنید به '$ CHPL_HOME / زمانی / تبدیل-defs --help را برای کمک در به روز رسانی کدهای موجود)
تغییر نام "حساب" حوزه / آرایه ها به مستطیل شکل 'دامنه / آرایه ها
پشتیبانی از الفاظ نقطه از شکل شناور اضافه کردیم '1.e ...
(پیش از این، تنها 1E ... 'و' 1.0E ... از آن پشتیبانی می شد)
تغییرات معنایی / تغییرات در چپل زبان
پیشرفت های مختلف به محدوده (نگاه کنید به "محدوده" فصل در تنظیمات زبان):
اضافه مفهومی از این بازی نشان می دهد پیمانه ترازی | گام |
اپراتور و پرس و جو "چین" به محدوده را مشخص / این بازی به پرس و جو اضافه
(به عنوان مثال، '1..10 3 چین 2' = & gt؛ به '2، 5، 8' از 2 == == 5 8، وزارت دفاع 3)
== در محدوده تعریف شده در نظر توالی صحیح آنها را تولید
ident تعریف (R1، R2) می گویند که آیا R1 و R2 معنایی یکسان هستند
'# K' تعریف شده برای K به & lt؛ 0 معنای & quot؛ را به حساب از پایان محدوده ها & quot؛
اضافه 'اولین'، 'آخرین'، 'alignedLow،' روش alignedHigh به محدوده
(به عنوان مثال، '1..10 توسط -2' = & gt؛ به اولین == 10، آخرین == 2، alignedLow = 2، alignedHigh = 10)
پشتیبانی از انواع توابع پرس و جو سری جدید اضافه شده
(به عنوان مثال، alignLow ()، hasFirst ()، hasLowBound ()، isAligned ()، boundsCheck () ...)
اضافه شدن پشتیبانی برای بولی فرار، متوسط، UINT، واقعی، و انواع IMAG
(نگاه کنید به توضیحات / technotes / README.volatile)
چک پایان فایل به نوع فایل اضافه شده
(به عنوان مثال، 'در حالی که! infile.eof ...')
پشتیبانی حذف برای درمان «بازگشت» در تکرارکننده به عنوان یک عملکرد '
(به عنوان مثال، تغییر "تولی ITER () {X بازگشت؛} 'به' تولی ITER () {عملکرد X؛ بازگشت؛})
حمایت از ماژول ارجاع اضافه بدون 'use' نشستند آنها
(به عنوان مثال، ماژول M1 {var به X ...} {... ماژول M2 M1.x ...} در حال حاضر قانونی)
یک پرس و جو callStackSize به نوع محلی اضافه شده
(به عنوان مثال، 'here.callStackSize' اندازه پشته تماس در محل فعلی را برمی گرداند)
حذف نقطه و ویرگول قبلا مورد نیاز از پایان اظهارات شمارشی
(؛ قبلا مورد نیاز به عنوان مثال، "رنگ شمارشی {قرمز، آبی، سبز} در حال حاضر قانونی است '؛')
پشتیبانی از کاما عقبی تنها در پایان لیست شمارشی اضافه
(به عنوان مثال، 'رنگ شمارشی {قرمز، آبی، سبز،} در حال حاضر قانونی)
پشتیبانی حذف برای +/- اپراتورها در حوزه مستطیل شکل. استفاده از ترجمه ()
ویژگی های جدید پیاده سازی
== اجرا /! = برای مستطیل شکل، انجمنی، و حوزه های پراکنده
توزیع استاندارد
برای ذخیره داده ها زیادی اضافه شده است برای اولین بار پیش نویس توزیع مضاعف '
(نگاه کنید به نمونه / آغازگر / distributions.chpl)
بهبود 'بلوک چرخهای، به درستی پیاده سازی HPCC PTRANS و HPL کافی
(نگاه کنید به نمونه / HPCC / ptrans.chpl، hpl.chpl؛ نمونه / آغازگر / distributions.chpl)
افزونگی حذف در مشخصات تکرارکننده رهبر بین دامنه / آرایه ها
ماژول استاندارد
INFINITY و NAN ثابت اضافه شده به ماژول Math.chpl
(نگاه کنید به "ریاضی" زیر & quot؛ ماژولهای استاندارد و & quot؛ در تنظیمات زبان)
اضافه isinf () و isfinite () روال آزمون به ماژول Math.chpl
(نگاه کنید به "ریاضی" زیر & quot؛ ماژولهای استاندارد و & quot؛ در تنظیمات زبان)
روال نیم دوجین بیشتر به ماژول GMP.chpl اضافه
مستندات
اضافه توجه داشته باشید فنی جدید توصیف رابط و نقشه دامنه تعریف شده توسط کاربر
(نگاه کنید به توضیحات / technotes / README.dsi)
ساخته شده بسیاری از پیشرفت های به خصوصیات زبان
تجدید نظر عمده در فصل دامنه برای بهبود وضوح / دقت
ساختار بهبود یافته و یکپارچه از سوابق و کلاس های فصل
تجدید نظر عمده در فصل نقشه دامنه برای بهبود وضوح / دقت
نام کد به عنوان مثال به ارائه ارجاع به نمونه / تنظیمات / برنامه
روشن قانونی بودن برچسب / استراحت / ادامه در حلقه های موازی
به روز شده در شرح خواندن / ارسال [LN] [LN]
ثابت برخی از مشکلات در زمینه فایل سفارش
مشخصات به عنوان یک کتاب لاتک مجدد
رفع مختلف جزئی از غلط املایی / اشتباهات
بهبود تعاریف / شرح چند نظر
اسناد و مدارک افزوده locale.name
و بسیاری از تغییرات دیگر ...
به روز شده سند مرجع سریع به شامل GT def- و. مجموعه مقالات / تغییر ITER، OP چین.
بازنویسی / دوباره سازمان دهی README.extern برای روشن توضیحات و آورد تا به روز
اضافه README توصیف بیانیه "محلی" (DOC / technotes / README.local)
اضافه README توصیف انواع فرار (DOC / 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)
اضافه نسخه پاک کننده از HPL HPCC به HPCC / دایرکتوری (hpl.chpl)
اضافه انواع / دایرکتوری فرعی به نمونه / HPCC به نمایشگاه روش های دیگر
اضافه جریان-promoted.chpl برای نشان دادن استفاده از ارتقاء در جهانی STREAM تایی
اضافه RA-cleanloop.chpl برای نشان دادن پاک کن (اما در حال حاضر کندتر) هسته RA
بهبود مثال سطح بالا:
تغییر نام موجود و & quot؛ سلام، جهان و & quot؛ نمونه نشان می دهد یک نظم منطقی خواندن
(نگاه کنید به مثال / سلام * * * * .chpl)
اطلاعات اضافه شده به موازات داده ها و توزیع موازی سلام، نمونه های جهان
(نمونه / hello3-datapar.chpl، نمونه / hello4-datapar-dist.chpl مراجعه کنید)
نظرات اضافه شده به مختلف سلام، نمونه های جهان (نمونه / سلام * * * * .chpl)
تمام نمونه های به روز شده برای معناشناسی زبان جاری
استفاده از 'مجموعه مقالات' / 'ITER "و نه" دف "
به روز رسانی به منعکس معناشناسی سری جدید
یادداشت پلت فرم خاص
برای کری XT / کری XE، بهبود aprun و پرتاب PBS-aprun
(به & quot؛ یادداشت ها & quot پرتاب خاص، در زیر)
برای کری XMT، پشتیبانی از حلقه های موازی بیش از محدوده اضافه شده
برای کری XMT، نسل noalias pragmas به forall متغیر حلقه اضافه شده
پشتیبانی از MareNostrum BSC از جمله اسناد و پرتاب ویژه اضافه شده
(نگاه کنید به توضیحات / سیستم عامل / README.marenostrum)
یادداشت-پرتاب خاص
اضافه گزینه-پرتاب خاص به --help قابلیت
بهبود انتشار کدهای وضعیت خروج از پرتاب
پرتاب تغییر برای حمایت از دستورات EXEC مبتنی بر (به جای سیستم مبتنی بر)
پرتاب ساخته شده استفاده از 'لغو پیوند' به جای سیستم ('RM) برای حذف فایل های موقت
برای MareNostrum BSC اضافه پرتاب
کاهش تعداد فایل های موقت مورد استفاده قرار را به تصرف خروجی سیستم "دستورات
بهبود پرتاب aprun:
اضافه پرچم --cc را مشخص انتساب CPU W / در یک گره
اضافه پرچم -q برای اجرای پرتاب در حالت آرام
قابلیت اشکال زدایی اضافه طریق CHPL_LAUNCHER_DEBUG به نگه داشتن فایل های TMP اطراف
PBS-aprun بهبود پرتاب:
اضافه پرچم --cc را مشخص انتساب CPU W / در یک گره
قابلیت اشکال زدایی اضافه طریق CHPL_LAUNCHER_DEBUG به نگه داشتن فایل های TMP اطراف
تمیز کردن خروجی می توانید از برخی از چاپ های اضافی خلاص شدن از شر
پرتاب ساخته شده پشتیبانی از سیستم تست ما
اضافه --walltime و پرچم --queue به عنوان جایگزین به ENV راهانداز. به اعضای.
تغییرهای کامپایلر
ساخته شده کامپایلر چاپ 'درست' / 'غلط' در نوع امضا به جای 1/0
اضافه پرم پیکربندی 'noRefCount' را غیرفعال شمارش مرجع (ممکن است نشت حافظه)
پرچم کامپایلر
اضافه-callstack بر روی خطا --print پرچم برای نشان دادن آنچه منجر به یک تماس بد
اضافه پرچم-وجود ندارد codegen به جست و خیز کد نسل و فاز ارتباط
قابلیت همکاری تغییرهای
کلاس ها & quot؛ پشتیبانی از خارج C و & quot اضافه شده است؛ (اشاره گر به ساختار انواع)
اضافه شدن پشتیبانی برای consts در خارج (README.extern مراجعه کنید)
ارتقاء پیام خطا
اضافه هشدار یتیم 'استفاده' اظهارات خارج از ماژول های اعلام
(به عنوان مثال، 'استفاده M1، M2 ماژول {} باید به طور معمول می شود' ماژول M2 {استفاده M1؛} ')
ساخته شده پارسه زمان پیغام خطا با استفاده از استاندارد "نام فایل: lineno: تصویربردار
تولید یک پیغام خطا برای اشاره به نام کلاس در یک روش اولیه
(به عنوان مثال، 'کلاس C {دف سانتی متر () {...}} در حال حاضر یک پیغام خطا تولید)
رفع اشکال / چک های جدید معنایی (برای معانی قدیمی)
مانع از تنظیم با استفاده از زمان اجرای پرچم خط فرمان انواع پیکربندی
توانایی کامپایلر که مسئولیت رسیدگی به اتحادیه های بدون زمینه های ثابت
ثابت کاهش minloc / maxloc که مسئولیت رسیدگی به محدوده خالی / subranges از ارزش ها
رفع اشکالی که در آن در «مسیر 'آرگومان به سازنده فایل نادیده گرفته شد
اتحادیه های خالی ساخته شده به درستی کار
موضوع سرریز را در chunking تا محدوده برای توزیع / موازی ثابت
یک اشکال مربوط به پشتیبانی از انواع رکورد در خارج خالی ثابت
یک اشکال مربوط به توابع در خارج که پرونده بازگشت ثابت
ثابت اشکال مربوط به کپی کردن سوابق خارجی
اجرای ثابت +/- اپراتورها در انجمنی / حوزه پراکنده
یک اشکال مربوط به نام ماژول مبتنی بر نام فایل حاوی متعدد ثابت شده است. در
پیام های خطا محصولی برای گسترش / بیرونی / داخلی در حوزه های نامنظم
یک خطا برای سازنده / مخرب با یک نوع بازگشت مشخص اضافه
ثابت یک جفت از اشکالات مربوط به "سریع در 'بهینه سازی
بدون تعیین زمینه های عمومی اضافه شده است یک چک در برابر ساخت کلاس
تغییرهای بسته بندی
اضافه نحو کد برجستهنگار برای GNU منبع برجسته
(نگاه کنید به و غیره / منبع برجسته / README)
ایمکس بهبود رنگ آمیزی پشتیبانی برای نسخه 22.x
(نگاه کنید به و غیره / ایمکس / README)
به روز رسانی به VIM رنگ آمیزی نحو به منعکس کننده "مجموعه مقالات" جدید / کلمات کلیدی 'ITER'
(نگاه کنید به و غیره / VIM / README)
یک اسکریپت برای تبدیل 'استفاده از' کدهای موجود دف "را به" ITER '/' مجموعه مقالات 'اضافه
($ ببینید CHPL_HOME / زمانی / تبدیل-defs)
نمونه برداشته multirealm و اسناد و مدارک برای هم بودن
شخص ثالث نرم افزار تغییرهای
به روز شده GASNet به نسخه 1.16.1
نسخه افزوده Nanos BSC در ++ و Qthreads ساندیا
(شخص ثالث / README مراجعه کنید)
ساخته شده پس از نصب به قدم برای GASNet که تغییر مسیرهای مطلق به نسبی
PVM حذف برای هم بودن با توجه به بی ثباتی
در زمان اجرا کتابخانه تغییرهای
تک لایه محلی کار اضافه برای Nanos ++ (BSC) و Qthreads (ساندیا)
پیشرفت های مختلف به لایه آماده سازی زمان اجرا:
اضافه یک رابط جدید برای داشتن chpl_main لایه آماده سازی تماس ()
تابع Init آماده سازی تغییر را به استدلال maxThreadsPerLocale / callStackSize
قابلیت عملکرد کار به لایه رابط آماده سازی اضافه شده
بهبود کد در زمان اجرا برای جلوگیری از استفاده همگام به اعضای قبل از مقدار دهی اولیه آماده سازی
حذف فرم کلان درگیرمی از آماده سازی رابط؛ با استفاده از نام به جای استاندارد
نامگذاری واحد از تمام روال کار به لایه chpl_sync _ * () و chpl_task _ * ()
حذف نیاز به پیاده سازی رابط متغیر
ختم نقل مکان کرد از موضوعات از FIFO لایه آماده سازی به pthreads نخ
اجرای ساده از متغیرهای همگام در لایه نخ pthread
مسئولیت شمارش موضوع از آماده سازی FIFO به pthread نخ نقل مکان کرد
پیشرفت های مختلف به لایه های ارتباطی زمان اجرا:
بازسازی رابط های ارتباطی برای حمایت از طول / نوع استدلال
برای غیر مسدود اضافه یک رابط دریافت عملیات به COMM. رابط
واحد تمام عملیات دریافت از راه دور به استفاده از CHPL_COMM_GET () ماکرو
refactored / تغییر نام داد هدر رابط های ارتباطی
سیستم تست
بسیار بهبود تست و نموداری عملکرد قابلیت های
(نگاه کنید به نظرات در مقابل start_test و مدارک)
بهبود پشتیبانی از سیستم تست برای تمیز کردن پس از خود را
توانایی اضافه شده به جلوگیری از استفاده از هر گونه بیراهه از STDIN
اضافه گزینه ای را برای ارائه یک گزینه prediff سیستم گسترده
توانایی اضافه شده به استفاده از ویژگی ایست مادری پرتاب به جای پیتون
بهبود چگونه سیستم تست می کشد یک آزمون که بار از
یک اشکال که در آن فایل های .preexec تنها در صورتی کار می کرد ثابت '.' در مسیر خود را بود
داخلی
اضافه --break-در-ID پرچم کامپایلر برای توسعه دهندگان به کردهاید گره AST ایجاد
بهبود سازمان از زمانی / محتویات پوشه
راه شماره نسخه ها محاسبه / نمایش داده شده برای کاربران بر اساس SVN-تغییر
اضافه شدن پشتیبانی برای task- / موضوع خاص کد ماژول
اضافه قابلیت چاپ شمارش AST اختصاص داده بین هر پاس
اضافه مستعار GDB جدید به کامپایلر --gdb: 'LOC' چاپ محل گره AST در
اجرای حد زیادی بهبود یافته از pragmas / پرچم برای جلوگیری از موارد خطا
موارد چند حذف از مقایسه رشته های غیر ضروری در کامپایلر
حذف استفاده مستعد خطا از CHPL_TASKS و CHPL_THREADS به عنوان علامت پیش پردازنده
اضافه مستندات bestPractices برای توسعه دهندگان (در آزادی شامل نمی شود)
munging داخلی تغییر '=' و '==' به 'اختصاص' و 'برابر' به ترتیب
اضافه --print-ID-در-خطا پرچم توسعه برای چاپ ID AST در اشتباهات
سخت از C ++ چک کردن نمونه بهبود یافته
اضافه موافقت نامه های عامل خارجی به درخت SVN (و نه در آزادی)
اضافه مفهوم انواع داخلی استفاده شده توسط کامپایلر اما کاربر
نظر یافت نشد