235
235
< div class ="pytorch-left-menu-search ">
236
236
237
237
< div class ="version ">
238
- < a href ='https://pytorch.org/docs/versions.html '> master (2.1.0a0+gitdda9523 ) ▼</ a >
238
+ < a href ='https://pytorch.org/docs/versions.html '> master (2.1.0a0+git78ad800 ) ▼</ a >
239
239
</ div >
240
240
241
241
@@ -514,7 +514,8 @@ <h1>Source code for torch._dynamo.eval_frame</h1><div class="highlight"><pre>
514
514
< span class ="k "> continue</ span >
515
515
< span class ="nb "> globals</ span > < span class ="p "> ()[</ span > < span class ="n "> name</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> _C</ span > < span class ="o "> .</ span > < span class ="n "> _dynamo</ span > < span class ="o "> .</ span > < span class ="n "> eval_frame</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> )</ span >
516
516
517
- < span class ="kn "> from</ span > < span class ="nn "> .</ span > < span class ="kn "> import</ span > < span class ="n "> config</ span > < span class ="p "> ,</ span > < span class ="n "> convert_frame</ span > < span class ="p "> ,</ span > < span class ="n "> skipfiles</ span > < span class ="p "> ,</ span > < span class ="n "> utils</ span >
517
+ < span class ="kn "> from</ span > < span class ="nn "> .</ span > < span class ="kn "> import</ span > < span class ="n "> convert_frame</ span > < span class ="p "> ,</ span > < span class ="n "> skipfiles</ span > < span class ="p "> ,</ span > < span class ="n "> utils</ span >
518
+ < span class ="kn "> from</ span > < span class ="nn "> .config_utils</ span > < span class ="kn "> import</ span > < span class ="n "> config</ span >
518
519
< span class ="kn "> from</ span > < span class ="nn "> .exc</ span > < span class ="kn "> import</ span > < span class ="n "> ResetRequired</ span >
519
520
< span class ="kn "> from</ span > < span class ="nn "> .mutation_guard</ span > < span class ="kn "> import</ span > < span class ="n "> install_generation_tagging_init</ span >
520
521
< span class ="kn "> from</ span > < span class ="nn "> .types</ span > < span class ="kn "> import</ span > < span class ="n "> DynamoCallback</ span >
@@ -530,6 +531,12 @@ <h1>Source code for torch._dynamo.eval_frame</h1><div class="highlight"><pre>
530
531
< span class ="n "> null_context</ span > < span class ="o "> =</ span > < span class ="n "> contextlib</ span > < span class ="o "> .</ span > < span class ="n "> nullcontext</ span >
531
532
532
533
534
+ < span class ="kn "> import</ span > < span class ="nn "> sympy</ span >
535
+
536
+ < span class ="kn "> from</ span > < span class ="nn "> torch.fx.experimental.symbolic_shapes</ span > < span class ="kn "> import</ span > < span class ="n "> StrictMinMaxConstraint</ span >
537
+ < span class ="kn "> from</ span > < span class ="nn "> torch.utils._sympy.value_ranges</ span > < span class ="kn "> import</ span > < span class ="n "> ValueRanges</ span >
538
+
539
+
533
540
< span class ="c1 "> # See https://github.com/python/typing/pull/240</ span >
534
541
< span class ="k "> class</ span > < span class ="nc "> Unset</ span > < span class ="p "> (</ span > < span class ="n "> Enum</ span > < span class ="p "> ):</ span >
535
542
< span class ="n "> token</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span >
@@ -1071,9 +1078,37 @@ <h1>Source code for torch._dynamo.eval_frame</h1><div class="highlight"><pre>
1071
1078
< span class ="c1 "> # TODO: We don't need t_id; we can get it off of w_tensor</ span >
1072
1079
< span class ="n "> t_id</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span >
1073
1080
< span class ="n "> dim</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span >
1074
- < span class ="n "> constraint_range</ span > < span class ="p "> :</ span > < span class ="n "> Optional</ span > < span class ="p "> [</ span >
1075
- < span class ="n "> torch</ span > < span class ="o "> .</ span > < span class ="n "> fx</ span > < span class ="o "> .</ span > < span class ="n "> experimental</ span > < span class ="o "> .</ span > < span class ="n "> symbolic_shapes</ span > < span class ="o "> .</ span > < span class ="n "> StrictMinMaxConstraint</ span >
1076
- < span class ="p "> ]</ span >
1081
+ < span class ="c1 "> # NOTE(avik): In the future, this could be Union[StrictMinMaxConstraint, <other kinds>]</ span >
1082
+ < span class ="n "> constraint_range</ span > < span class ="p "> :</ span > < span class ="n "> StrictMinMaxConstraint</ span >
1083
+
1084
+ < span class ="k "> def</ span > < span class ="nf "> _clone_with_range</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> lower</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span > < span class ="p "> ,</ span > < span class ="n "> upper</ span > < span class ="o "> =</ span > < span class ="n "> sympy</ span > < span class ="o "> .</ span > < span class ="n "> oo</ span > < span class ="p "> ):</ span >
1085
+ < span class ="n "> constraint_range</ span > < span class ="o "> =</ span > < span class ="n "> StrictMinMaxConstraint</ span > < span class ="p "> (</ span >
1086
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> constraint_range</ span > < span class ="o "> .</ span > < span class ="n "> vr</ span > < span class ="o "> &</ span > < span class ="n "> ValueRanges</ span > < span class ="p "> (</ span > < span class ="n "> lower</ span > < span class ="o "> =</ span > < span class ="n "> lower</ span > < span class ="p "> ,</ span > < span class ="n "> upper</ span > < span class ="o "> =</ span > < span class ="n "> upper</ span > < span class ="p "> )</ span >
1087
+ < span class ="p "> )</ span >
1088
+ < span class ="k "> return</ span > < span class ="n "> Constraint</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> w_tensor</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> t_id</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> dim</ span > < span class ="p "> ,</ span > < span class ="n "> constraint_range</ span > < span class ="p "> )</ span >
1089
+
1090
+ < span class ="k "> def</ span > < span class ="fm "> __ge__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> lower</ span > < span class ="p "> ):</ span >
1091
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _clone_with_range</ span > < span class ="p "> (</ span > < span class ="n "> lower</ span > < span class ="o "> =</ span > < span class ="n "> lower</ span > < span class ="p "> )</ span >
1092
+
1093
+ < span class ="k "> def</ span > < span class ="fm "> __gt__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> lower</ span > < span class ="p "> ):</ span >
1094
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _clone_with_range</ span > < span class ="p "> (</ span > < span class ="n "> lower</ span > < span class ="o "> =</ span > < span class ="n "> lower</ span > < span class ="o "> +</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
1095
+
1096
+ < span class ="k "> def</ span > < span class ="fm "> __le__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> upper</ span > < span class ="p "> ):</ span >
1097
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _clone_with_range</ span > < span class ="p "> (</ span > < span class ="n "> upper</ span > < span class ="o "> =</ span > < span class ="n "> upper</ span > < span class ="p "> )</ span >
1098
+
1099
+ < span class ="k "> def</ span > < span class ="fm "> __lt__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> upper</ span > < span class ="p "> ):</ span >
1100
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _clone_with_range</ span > < span class ="p "> (</ span > < span class ="n "> upper</ span > < span class ="o "> =</ span > < span class ="n "> upper</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
1101
+
1102
+ < span class ="k "> def</ span > < span class ="fm "> __bool__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ):</ span >
1103
+ < span class ="c1 "> # NOTE(avik): We do not support compound expressions like a <= x <= b.</ span >
1104
+ < span class ="c1 "> # This is because Python implicitly desugars them into bool(a <= x) and bool(x <= b),</ span >
1105
+ < span class ="c1 "> # and moreover, enforces that any overload of __bool__ must return True or False.</ span >
1106
+ < span class ="c1 "> # FWIW, sympy also raises TypeError in this case.</ span >
1107
+ < span class ="k "> raise</ span > < span class ="ne "> TypeError</ span > < span class ="p "> (</ span >
1108
+ < span class ="s2 "> "Cannot determine truth value of Constraint. "</ span >
1109
+ < span class ="s2 "> "If you are trying to combine Constraints with logical connectives, "</ span >
1110
+ < span class ="s2 "> "you can specify them separately instead."</ span >
1111
+ < span class ="p "> )</ span >
1077
1112
1078
1113
1079
1114
< div class ="viewcode-block " id ="export "> < a class ="viewcode-back " href ="../../../_dynamo.html#torch._dynamo.export "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> export</ span > < span class ="p "> (</ span >
0 commit comments