-mpmd-delay-inferred-fragments
اجرای قطعات استنباط شده را تا حد امکان به تاخیر می اندازد.
قطعات استنباط شده را تا جایی که ممکن است دیرتر اجرا می کند، یعنی درست قبل از اولین مصرف کننده آنها.
-mpmd-delay-transfers-from-cpu
انتقال از CPU را به تأخیر می اندازد تا تا حد امکان دیر اجرا شود.
عملیات انتقال cpu به دستگاه را درست قبل از اولین مصرف کننده خود منتقل می کند. این به معنای به تعویق انداختن تخصیص حافظه برای بافرهای منتقل شده است که می تواند برای استفاده از HBM مفید باشد.
-mpmd-lower-to-fragment-calls
قطعات MPMD را برای قطعه قطعه کردن فراخوانی ها و توابع کاهش می دهد.
همه قطعات را با فراخوانی قطعات جایگزین می کند.
این پاس یک تابع برای هر گروه از قطعاتی که بدنه و شکل مش یکسانی دارند، با نام اولین قطعه ای که در گروه با آن مواجه شده است به عنوان نام نماد ایجاد می کند و آن را به جدول نماد اضافه می کند.
بدنه هر تابع از بدنه اولین قطعه در گروه مربوطه استخراج می شود و شکل مش از توپولوژی با نام مش آن قطعه گرفته می شود. اگر قطعه دارای ویژگیهای آرگومان در مورد نام مستعار ورودی-خروجی باشد، آنها به ویژگیهای آرگومان تابع کاهش یافته نسبت داده میشوند.
از آنجایی که توابع باید دارای نامهای منحصربهفرد باشند، این پاس به نام همه تابع به جز اولین تابع با همان نام اصلی، فهرستی اضافه میکند، به عنوان مثال، تابع i با نام "some_name" برای i > 0 نام "some_name_i" خواهد داشت.
گزینه ها
-group-across-meshes : Whether to do more aggressive fragment grouping, across meshes. This may not be desirable for heterogeneous systems.
-verbose-logging : Whether to enable verbose logging
-mpmd-mark-aliasing-and-donation
هر قطعه را با اطلاعات نام مستعار یا اهدا علامت گذاری می کند.
زمانی که هر یک از ورودیهای آنها را میتوان با یک خروجی نام مستعار کرد یا اهدا کرد، یک ویژگی arg_attrs
را برای Fragment ops تنظیم میکند. هر ورودی که می توان نام مستعار کرد یک ویژگی tf.aliasing_output
خواهد داشت. در غیر این صورت، یک jax.buffer_donor = true
. به عنوان مثال، {arg_attrs =\[{tf.aliasing_output = 0 : i32}, {jax.buffer_donor = true}, {}\]}
نشان می دهد که ورودی اول را می توان با خروجی 0 مستعار کرد، ورودی دوم را می توان اهدا کرد تا XLA یک خروجی مستعار پیدا کند، و ورودی سوم را نمی توان نام مستعار یا اهدا کرد.
-mpmd-mark-fragment-reserved-memory
هر قطعه را با مقدار حافظه ای که باید برای کامپایل رزرو شود علامت گذاری کنید.
یک ویژگی xla_tpu_user_reserved_hbm_bytes
به هر قطعه اختصاص میدهد که به XLA میگوید در هنگام کامپایل کردن هر قطعه، چند بایت را حفظ کند. با ردیابی تانسورهای زنده روی یک مش، XLA از حداقل میزان واقعی استفاده از حافظه در زمان اجرا مطلع خواهد شد و ما میتوانیم از اعمال بهینهسازیهایی در فایل اجرایی که باعث افزایش مصرف حافظه فراتر از ظرفیت دستگاه میشود، جلوگیری کنیم. توجه: این پاس فرض می کند که قطعات به ترتیب برنامه اجرا می شوند.
-mpmd-mark-input-output-with-layouts
طرحبندیها را از func args/results به fragment args/results منتشر میکند.
ویژگیهای mhlo.layout_mode
را از ورودیهای برنامه به قطعاتی که مصرفکننده ورودی برنامه هستند، و ویژگیهای mhlo.layout_mode
را از خروجیهای برنامه به قطعاتی که تولیدکنندههای خروجی هستند، منتشر میکند. اگر آرگومان برنامه برگردانده شود، mhlo.layout_mode
به/از نتایج برنامه منتشر می شود. برای توضیح مفصل منطق انتشار به نظر PropagateLayoutsForReturnedFuncArgs
مراجعه کنید.
-mpmd-mark-offloaded-input-output
مقادیر ورودی و خروجی بارگذاری شده را علامت گذاری می کند تا کامپایلر بداند که در حافظه میزبان هستند.
آرگها و نتایج را با ویژگیها علامتگذاری میکند تا مشخص کند کدام مقادیر در حافظه میزبان زندگی میکنند، به طوری که این اطلاعات توسط XLA قابل استفاده باشد. همچنین آرگ ها و نتایج ورودی نقطه ورود را علامت گذاری می کند تا Pathways بتواند از این اطلاعات استفاده کند.