@@ -97,8 +97,8 @@ def execute_backward_sgd_( # noqa C901
9797 return
9898 if use_cpu and weights_precision == SparseType .FP16 :
9999 return
100- # No bag ops only work on GPUs, no mixed, no weighted
101- if use_cpu and pooling_mode == PoolingMode .NONE :
100+ # V1 API doesn't support nobag on CPU (only PT2 path does)
101+ if use_cpu and pooling_mode == PoolingMode .NONE and use_api_v1 :
102102 return
103103 if mixed and pooling_mode == PoolingMode .NONE :
104104 return
@@ -449,6 +449,47 @@ def test_backward_sgd( # noqa C901
449449 SparseType .FP32 , # output_dtype
450450 )
451451
452+ @given (
453+ T = st .integers (min_value = 1 , max_value = 3 ),
454+ D = st .sampled_from ([2 , 4 , 128 , 256 ]),
455+ B = st .integers (min_value = 1 , max_value = 10 ),
456+ log_E = st .integers (min_value = 3 , max_value = 5 ),
457+ L = st .integers (min_value = 1 , max_value = 20 ),
458+ long_segments = st .booleans (),
459+ )
460+ @settings (
461+ verbosity = VERBOSITY ,
462+ max_examples = MAX_EXAMPLES ,
463+ deadline = None ,
464+ suppress_health_check = [HealthCheck .filter_too_much , HealthCheck .data_too_large ],
465+ )
466+ def test_backward_sgd_fp32_pmNONE_cpu (
467+ self ,
468+ T : int ,
469+ D : int ,
470+ B : int ,
471+ log_E : int ,
472+ L : int ,
473+ long_segments : bool ,
474+ ) -> None :
475+ self .execute_backward_sgd_ (
476+ T ,
477+ D ,
478+ B ,
479+ log_E ,
480+ L ,
481+ weights_precision = SparseType .FP32 ,
482+ weighted = False ,
483+ mixed = False ,
484+ mixed_B = False ,
485+ use_cache = False ,
486+ cache_algorithm = CacheAlgorithm .LRU ,
487+ long_segments = long_segments ,
488+ pooling_mode = PoolingMode .NONE ,
489+ use_cpu = True ,
490+ output_dtype = SparseType .FP32 ,
491+ )
492+
452493 @given (
453494 T = st .integers (min_value = 1 , max_value = 5 ),
454495 D = st .integers (min_value = 2 , max_value = 256 ),
0 commit comments