@@ -3110,232 +3110,21 @@ def aten_ops_pad(
3110
3110
)
3111
3111
3112
3112
3113
- for op in (
3114
- torch .ops .aten .upsample_nearest1d ,
3115
- torch .ops .aten .upsample_nearest2d ,
3116
- torch .ops .aten .upsample_nearest3d ,
3117
- torch .ops .aten .upsample_linear1d ,
3118
- torch .ops .aten .upsample_bilinear2d ,
3119
- torch .ops .aten .upsample_trilinear3d ,
3120
- torch .ops .aten .upsample_bicubic2d ,
3121
- ):
3122
- for key in (
3123
- torch ._C .DispatchKey .Autograd ,
3124
- torch ._C .DispatchKey .CompositeImplicitAutograd ,
3125
- ):
3126
- if key in op .default .py_kernels :
3127
- del op .default .py_kernels [key ]
3128
- if key in op .vec .py_kernels :
3129
- del op .vec .py_kernels [key ]
3130
-
3131
-
3132
- def upsample_compute_output_size (
3133
- input_size : torch .Size ,
3134
- output_size : Optional [Sequence [int ]],
3135
- scale_factors : Optional [Sequence [float ]],
3136
- ) -> Optional [Sequence [int ]]:
3137
- spatial_dimensions = len (input_size ) - 2
3138
-
3139
- if output_size is None and scale_factors is None :
3140
- raise AssertionError (
3141
- "Must specify exactly one of output_size and scale_factors"
3142
- )
3143
-
3144
- if output_size is not None :
3145
- torch ._check (
3146
- scale_factors is None ,
3147
- lambda : "Must specify exactly one of output_size and scale_factors" ,
3148
- )
3149
- torch ._check (len (output_size ) == spatial_dimensions )
3150
-
3151
- if scale_factors is not None :
3152
- torch ._check (
3153
- output_size is None ,
3154
- lambda : "Must specify exactly one of output_size and scale_factors" ,
3155
- )
3156
- torch ._check (len (scale_factors ) == spatial_dimensions )
3157
- output_size = []
3158
- for i , s in enumerate (scale_factors ):
3159
- output_size .append (int (input_size [i + 2 ] * s ))
3160
-
3161
- return output_size
3162
-
3163
-
3164
- @torch .ops .aten .upsample_nearest1d .vec .py_impl (
3165
- torch ._C .DispatchKey .CompositeImplicitAutograd
3166
- )
3167
- def upsample_nearest1d_vec (
3168
- input : torch .Tensor ,
3169
- output_size : Optional [Sequence [int ]],
3170
- scale_factors : Optional [Sequence [float ]],
3171
- ) -> torch .Tensor :
3172
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3173
- if scale_factors is not None :
3174
- return torch .ops .aten .upsample_nearest1d .default (input , osize , * scale_factors )
3175
- return torch .ops .aten .upsample_nearest1d .default (input , osize )
3176
-
3177
-
3178
- @torch .ops .aten .upsample_nearest2d .vec .py_impl (
3179
- torch ._C .DispatchKey .CompositeImplicitAutograd
3180
- )
3181
- def upsample_nearest2d_vec (
3182
- input : torch .Tensor ,
3183
- output_size : Optional [Sequence [int ]],
3184
- scale_factors : Optional [Sequence [float ]],
3185
- ) -> torch .Tensor :
3186
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3187
- if scale_factors is not None :
3188
- return torch .ops .aten .upsample_nearest2d .default (input , osize , * scale_factors )
3189
- return torch .ops .aten .upsample_nearest2d .default (input , osize )
3190
-
3191
-
3192
- @torch .ops .aten .upsample_nearest3d .vec .py_impl (
3193
- torch ._C .DispatchKey .CompositeImplicitAutograd
3194
- )
3195
- def upsample_nearest3d_vec (
3196
- input : torch .Tensor ,
3197
- output_size : Optional [Sequence [int ]],
3198
- scale_factors : Optional [Sequence [float ]],
3199
- ) -> torch .Tensor :
3200
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3201
- if scale_factors is not None :
3202
- return torch .ops .aten .upsample_nearest3d .default (input , osize , * scale_factors )
3203
- return torch .ops .aten .upsample_nearest3d .default (input , osize )
3204
-
3205
-
3206
- @torch .ops .aten .upsample_linear1d .vec .py_impl (
3207
- torch ._C .DispatchKey .CompositeImplicitAutograd
3208
- )
3209
- def upsample_linear1d_vec (
3210
- input : torch .Tensor ,
3211
- output_size : Optional [Sequence [int ]],
3212
- align_corners : bool ,
3213
- scale_factors : Optional [Sequence [float ]],
3214
- ) -> torch .Tensor :
3215
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3216
- if scale_factors is not None :
3217
- return torch .ops .aten .upsample_linear1d .default (
3218
- input , osize , align_corners , * scale_factors
3219
- )
3220
- return torch .ops .aten .upsample_linear1d .default (input , osize , align_corners )
3221
-
3222
-
3223
- @torch .ops .aten .upsample_bilinear2d .vec .py_impl (
3224
- torch ._C .DispatchKey .CompositeImplicitAutograd
3225
- )
3226
- def upsample_bilinear2d_vec (
3227
- input : torch .Tensor ,
3228
- output_size : Optional [Sequence [int ]],
3229
- align_corners : bool ,
3230
- scale_factors : Optional [Sequence [float ]],
3231
- ) -> torch .Tensor :
3232
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3233
- if scale_factors is not None :
3234
- return torch .ops .aten .upsample_bilinear2d .default (
3235
- input , osize , align_corners , * scale_factors
3236
- )
3237
- return torch .ops .aten .upsample_bilinear2d .default (input , osize , align_corners )
3238
-
3239
-
3240
- @torch .ops .aten .upsample_trilinear3d .vec .py_impl (
3241
- torch ._C .DispatchKey .CompositeImplicitAutograd
3242
- )
3243
- def upsample_trilinear3d_vec (
3244
- input : torch .Tensor ,
3245
- output_size : Optional [Sequence [int ]],
3246
- align_corners : bool ,
3247
- scale_factors : Optional [Sequence [float ]],
3248
- ) -> torch .Tensor :
3249
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3250
- if scale_factors is not None :
3251
- return torch .ops .aten .upsample_trilinear3d .default (
3252
- input , osize , align_corners , * scale_factors
3253
- )
3254
- return torch .ops .aten .upsample_trilinear3d .default (input , osize , align_corners )
3255
-
3256
-
3257
- @torch .ops .aten .upsample_bicubic2d .vec .py_impl (
3258
- torch ._C .DispatchKey .CompositeImplicitAutograd
3259
- )
3260
- def upsample_bicubic2d_vec (
3261
- input : torch .Tensor ,
3262
- output_size : Optional [Sequence [int ]],
3263
- align_corners : bool ,
3264
- scale_factors : Optional [Sequence [float ]],
3265
- ) -> torch .Tensor :
3266
- osize = upsample_compute_output_size (input .size (), output_size , scale_factors )
3267
- if scale_factors is not None :
3268
- return torch .ops .aten .upsample_bicubic2d .default (
3269
- input , osize , align_corners , * scale_factors
3270
- )
3271
- return torch .ops .aten .upsample_bicubic2d .default (input , osize , align_corners )
3272
-
3273
-
3274
3113
@dynamo_tensorrt_converter (
3275
- torch .ops .aten .upsample_nearest1d .default , supports_dynamic_shapes = True
3114
+ torch .ops .aten .upsample_nearest1d .vec , supports_dynamic_shapes = True
3276
3115
)
3277
- @enforce_tensor_types (
3278
- {
3279
- 0 : (TRTTensor ,),
3280
- }
3281
- )
3282
- def aten_ops_upsample_nearest1d (
3283
- ctx : ConversionContext ,
3284
- target : Target ,
3285
- args : Tuple [Argument , ...],
3286
- kwargs : Dict [str , Argument ],
3287
- name : str ,
3288
- ) -> Union [TRTTensor , Sequence [TRTTensor ]]:
3289
- return impl .upsample .upsample (
3290
- ctx ,
3291
- target ,
3292
- SourceIR .ATEN ,
3293
- name ,
3294
- args [0 ],
3295
- size = args [1 ],
3296
- scale_factor = None if len (args ) < 3 else [args [2 ]],
3297
- mode = "nearest" ,
3298
- align_corners = False ,
3299
- )
3300
-
3301
-
3302
3116
@dynamo_tensorrt_converter (
3303
- torch .ops .aten .upsample_nearest2d .default , supports_dynamic_shapes = True
3117
+ torch .ops .aten .upsample_nearest2d .vec , supports_dynamic_shapes = True
3304
3118
)
3305
- @enforce_tensor_types (
3306
- {
3307
- 0 : (TRTTensor ,),
3308
- }
3309
- )
3310
- def aten_ops_upsample_nearest2d (
3311
- ctx : ConversionContext ,
3312
- target : Target ,
3313
- args : Tuple [Argument , ...],
3314
- kwargs : Dict [str , Argument ],
3315
- name : str ,
3316
- ) -> Union [TRTTensor , Sequence [TRTTensor ]]:
3317
- return impl .upsample .upsample (
3318
- ctx ,
3319
- target ,
3320
- SourceIR .ATEN ,
3321
- name ,
3322
- args [0 ],
3323
- size = args [1 ],
3324
- scale_factor = None if len (args ) < 4 else [args [2 ], args [3 ]],
3325
- mode = "nearest" ,
3326
- align_corners = False ,
3327
- )
3328
-
3329
-
3330
3119
@dynamo_tensorrt_converter (
3331
- torch .ops .aten .upsample_nearest3d .default , supports_dynamic_shapes = True
3120
+ torch .ops .aten .upsample_nearest3d .vec , supports_dynamic_shapes = True
3332
3121
)
3333
3122
@enforce_tensor_types (
3334
3123
{
3335
3124
0 : (TRTTensor ,),
3336
3125
}
3337
3126
)
3338
- def aten_ops_upsample_nearest3d (
3127
+ def aten_ops_upsample_nearest (
3339
3128
ctx : ConversionContext ,
3340
3129
target : Target ,
3341
3130
args : Tuple [Argument , ...],
@@ -3348,78 +3137,28 @@ def aten_ops_upsample_nearest3d(
3348
3137
SourceIR .ATEN ,
3349
3138
name ,
3350
3139
args [0 ],
3351
- size = args [ 1 ] ,
3352
- scale_factor = None if len (args ) < 5 else [ args [ 2 ], args [ 3 ], args [ 4 ]] ,
3140
+ size = args_bounds_check ( args , 1 ) ,
3141
+ scale_factor = args_bounds_check (args , 2 ) ,
3353
3142
mode = "nearest" ,
3354
3143
align_corners = False ,
3355
3144
)
3356
3145
3357
3146
3358
3147
@dynamo_tensorrt_converter (
3359
- torch .ops .aten .upsample_linear1d .default , supports_dynamic_shapes = True
3360
- )
3361
- @enforce_tensor_types (
3362
- {
3363
- 0 : (TRTTensor ,),
3364
- }
3148
+ torch .ops .aten .upsample_linear1d .vec , supports_dynamic_shapes = True
3365
3149
)
3366
- def aten_ops_upsample_linear1d (
3367
- ctx : ConversionContext ,
3368
- target : Target ,
3369
- args : Tuple [Argument , ...],
3370
- kwargs : Dict [str , Argument ],
3371
- name : str ,
3372
- ) -> Union [TRTTensor , Sequence [TRTTensor ]]:
3373
- return impl .upsample .upsample (
3374
- ctx ,
3375
- target ,
3376
- SourceIR .ATEN ,
3377
- name ,
3378
- args [0 ],
3379
- size = args [1 ],
3380
- scale_factor = None if len (args ) < 4 else [args [3 ]],
3381
- mode = "linear" ,
3382
- align_corners = args [2 ],
3383
- )
3384
-
3385
-
3386
3150
@dynamo_tensorrt_converter (
3387
- torch .ops .aten .upsample_bilinear2d .default , supports_dynamic_shapes = True
3151
+ torch .ops .aten .upsample_bilinear2d .vec , supports_dynamic_shapes = True
3388
3152
)
3389
- @enforce_tensor_types (
3390
- {
3391
- 0 : (TRTTensor ,),
3392
- }
3393
- )
3394
- def aten_ops_upsample_bilinear2d (
3395
- ctx : ConversionContext ,
3396
- target : Target ,
3397
- args : Tuple [Argument , ...],
3398
- kwargs : Dict [str , Argument ],
3399
- name : str ,
3400
- ) -> Union [TRTTensor , Sequence [TRTTensor ]]:
3401
- return impl .upsample .upsample (
3402
- ctx ,
3403
- target ,
3404
- SourceIR .ATEN ,
3405
- name ,
3406
- args [0 ],
3407
- size = args [1 ],
3408
- scale_factor = None if len (args ) < 5 else [args [3 ], args [4 ]],
3409
- mode = "bilinear" ,
3410
- align_corners = args [2 ],
3411
- )
3412
-
3413
-
3414
3153
@dynamo_tensorrt_converter (
3415
- torch .ops .aten .upsample_trilinear3d .default , supports_dynamic_shapes = True
3154
+ torch .ops .aten .upsample_trilinear3d .vec , supports_dynamic_shapes = True
3416
3155
)
3417
3156
@enforce_tensor_types (
3418
3157
{
3419
3158
0 : (TRTTensor ,),
3420
3159
}
3421
3160
)
3422
- def aten_ops_upsample_trilinear3d (
3161
+ def aten_ops_upsample_linear (
3423
3162
ctx : ConversionContext ,
3424
3163
target : Target ,
3425
3164
args : Tuple [Argument , ...],
@@ -3432,15 +3171,15 @@ def aten_ops_upsample_trilinear3d(
3432
3171
SourceIR .ATEN ,
3433
3172
name ,
3434
3173
args [0 ],
3435
- size = args [ 1 ] ,
3436
- scale_factor = None if len (args ) < 6 else [ args [ 3 ], args [ 4 ], args [ 5 ]] ,
3437
- mode = "trilinear " ,
3174
+ size = args_bounds_check ( args , 1 ) ,
3175
+ scale_factor = args_bounds_check (args , 3 ) ,
3176
+ mode = "linear " ,
3438
3177
align_corners = args [2 ],
3439
3178
)
3440
3179
3441
3180
3442
3181
@dynamo_tensorrt_converter (
3443
- torch .ops .aten .upsample_bicubic2d .default , supports_dynamic_shapes = True
3182
+ torch .ops .aten .upsample_bicubic2d .vec , supports_dynamic_shapes = True
3444
3183
)
3445
3184
@enforce_tensor_types (
3446
3185
{
@@ -3460,8 +3199,8 @@ def aten_ops_upsample_bicubic2d(
3460
3199
SourceIR .ATEN ,
3461
3200
name ,
3462
3201
args [0 ],
3463
- size = args [ 1 ] ,
3464
- scale_factor = None if len (args ) < 5 else [ args [ 3 ], args [ 4 ]] ,
3202
+ size = args_bounds_check ( args , 1 ) ,
3203
+ scale_factor = args_bounds_check (args , 3 ) ,
3465
3204
mode = "bicubic" ,
3466
3205
align_corners = args [2 ],
3467
3206
)
0 commit comments