@@ -640,6 +640,65 @@ TYPED_TEST(FFTTestComplexTypes, FFT2D16C2C)
640
640
MATX_EXIT_HANDLER ();
641
641
}
642
642
643
+ TYPED_TEST (FFTTestComplexTypes, FFT2D16x32C2C)
644
+ {
645
+ MATX_ENTER_HANDLER ();
646
+ const index_t fft_dim[] = {16 , 32 };
647
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
648
+ " 00_transforms" , " fft_operators" , " fft_2d" , {fft_dim[0 ], fft_dim[1 ]});
649
+
650
+ tensor_t <TypeParam, 2 > av{{fft_dim[0 ], fft_dim[1 ]}};
651
+ tensor_t <TypeParam, 2 > avo{{fft_dim[0 ], fft_dim[1 ]}};
652
+ this ->pb ->NumpyToTensorView (av, " a_in" );
653
+
654
+ (avo = fft2 (av)).run ();
655
+ cudaStreamSynchronize (0 );
656
+
657
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
658
+ MATX_EXIT_HANDLER ();
659
+ }
660
+
661
+ TYPED_TEST (FFTTestComplexTypes, FFT2D16BatchedC2C)
662
+ {
663
+ MATX_ENTER_HANDLER ();
664
+ const index_t batch_size = 10 ;
665
+ const index_t fft_dim = 16 ;
666
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
667
+ " 00_transforms" , " fft_operators" , " fft_2d_batched" ,
668
+ {batch_size, fft_dim, fft_dim});
669
+
670
+ tensor_t <TypeParam, 3 > av{{batch_size, fft_dim, fft_dim}};
671
+ tensor_t <TypeParam, 3 > avo{{batch_size, fft_dim, fft_dim}};
672
+ this ->pb ->NumpyToTensorView (av, " a_in" );
673
+
674
+ (avo = fft2 (av)).run ();
675
+ cudaStreamSynchronize (0 );
676
+
677
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
678
+ MATX_EXIT_HANDLER ();
679
+ }
680
+
681
+ TYPED_TEST (FFTTestComplexTypes, FFT2D16BatchedStridedC2C)
682
+ {
683
+ MATX_ENTER_HANDLER ();
684
+ const index_t batch_size = 10 ;
685
+ const index_t fft_dim = 16 ;
686
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
687
+ " 00_transforms" , " fft_operators" , " fft_2d_batched_strided" ,
688
+ {fft_dim, batch_size, fft_dim});
689
+
690
+ tensor_t <TypeParam, 3 > av{{fft_dim, batch_size, fft_dim}};
691
+ tensor_t <TypeParam, 3 > avo{{fft_dim, batch_size, fft_dim}};
692
+ this ->pb ->NumpyToTensorView (av, " a_in" );
693
+
694
+ const int32_t axes[] = {0 , 2 };
695
+ (avo = fft2 (av, axes)).run ();
696
+ cudaStreamSynchronize (0 );
697
+
698
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
699
+ MATX_EXIT_HANDLER ();
700
+ }
701
+
643
702
TYPED_TEST (FFTTestComplexTypes, IFFT2D16C2C)
644
703
{
645
704
MATX_ENTER_HANDLER ();
@@ -658,6 +717,99 @@ TYPED_TEST(FFTTestComplexTypes, IFFT2D16C2C)
658
717
MATX_EXIT_HANDLER ();
659
718
}
660
719
720
+ TYPED_TEST (FFTTestComplexTypes, IFFT2D16x32C2C)
721
+ {
722
+ MATX_ENTER_HANDLER ();
723
+ const index_t fft_dim[] = {16 , 32 };
724
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
725
+ " 00_transforms" , " fft_operators" , " ifft_2d" , {fft_dim[0 ], fft_dim[1 ]});
726
+
727
+ tensor_t <TypeParam, 2 > av{{fft_dim[0 ], fft_dim[1 ]}};
728
+ tensor_t <TypeParam, 2 > avo{{fft_dim[0 ], fft_dim[1 ]}};
729
+ this ->pb ->NumpyToTensorView (av, " a_in" );
730
+
731
+ (avo = ifft2 (av)).run ();
732
+ cudaStreamSynchronize (0 );
733
+
734
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
735
+ MATX_EXIT_HANDLER ();
736
+ }
737
+
738
+ TYPED_TEST (FFTTestComplexNonHalfTypes, FFT2D16R2C)
739
+ {
740
+ MATX_ENTER_HANDLER ();
741
+ const index_t fft_dim = 16 ;
742
+ using rtype = typename TypeParam::value_type;
743
+ this ->pb ->template InitAndRunTVGenerator <rtype>(
744
+ " 00_transforms" , " fft_operators" , " rfft_2d" , {fft_dim, fft_dim});
745
+
746
+ tensor_t <rtype, 2 > av{{fft_dim, fft_dim}};
747
+ tensor_t <TypeParam, 2 > avo{{fft_dim, fft_dim / 2 + 1 }};
748
+ this ->pb ->NumpyToTensorView (av, " a_in" );
749
+
750
+ (avo = fft2 (av)).run ();
751
+ cudaStreamSynchronize (0 );
752
+
753
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
754
+ MATX_EXIT_HANDLER ();
755
+ }
756
+
757
+ TYPED_TEST (FFTTestComplexNonHalfTypes, FFT2D16x32R2C)
758
+ {
759
+ MATX_ENTER_HANDLER ();
760
+ const index_t fft_dim[] = {16 , 32 };
761
+ using rtype = typename TypeParam::value_type;
762
+ this ->pb ->template InitAndRunTVGenerator <rtype>(
763
+ " 00_transforms" , " fft_operators" , " rfft_2d" , {fft_dim[0 ], fft_dim[1 ]});
764
+
765
+ tensor_t <rtype, 2 > av{{fft_dim[0 ], fft_dim[1 ]}};
766
+ tensor_t <TypeParam, 2 > avo{{fft_dim[0 ], fft_dim[1 ] / 2 + 1 }};
767
+ this ->pb ->NumpyToTensorView (av, " a_in" );
768
+
769
+ (avo = fft2 (av)).run ();
770
+ cudaStreamSynchronize (0 );
771
+
772
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
773
+ MATX_EXIT_HANDLER ();
774
+ }
775
+
776
+ TYPED_TEST (FFTTestComplexNonHalfTypes, IFFT2D16C2R)
777
+ {
778
+ MATX_ENTER_HANDLER ();
779
+ const index_t fft_dim = 16 ;
780
+ using rtype = typename TypeParam::value_type;
781
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
782
+ " 00_transforms" , " fft_operators" , " irfft_2d" , {fft_dim, fft_dim});
783
+
784
+ tensor_t <TypeParam, 2 > av{{fft_dim, fft_dim / 2 + 1 }};
785
+ tensor_t <rtype, 2 > avo{{fft_dim, fft_dim}};
786
+ this ->pb ->NumpyToTensorView (av, " a_in" );
787
+
788
+ (avo = ifft2 (av)).run ();
789
+ cudaStreamSynchronize (0 );
790
+
791
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
792
+ MATX_EXIT_HANDLER ();
793
+ }
794
+
795
+ TYPED_TEST (FFTTestComplexNonHalfTypes, IFFT2D16x32C2R)
796
+ {
797
+ MATX_ENTER_HANDLER ();
798
+ const index_t fft_dim[] = {16 , 32 };
799
+ using rtype = typename TypeParam::value_type;
800
+ this ->pb ->template InitAndRunTVGenerator <TypeParam>(
801
+ " 00_transforms" , " fft_operators" , " irfft_2d" , {fft_dim[0 ], fft_dim[1 ]});
802
+
803
+ tensor_t <TypeParam, 2 > av{{fft_dim[0 ], fft_dim[1 ] / 2 + 1 }};
804
+ tensor_t <rtype, 2 > avo{{fft_dim[0 ], fft_dim[1 ]}};
805
+ this ->pb ->NumpyToTensorView (av, " a_in" );
806
+
807
+ (avo = ifft2 (av)).run ();
808
+ cudaStreamSynchronize (0 );
809
+
810
+ MATX_TEST_ASSERT_COMPARE (this ->pb , avo, " a_out" , this ->thresh );
811
+ MATX_EXIT_HANDLER ();
812
+ }
661
813
662
814
TYPED_TEST (FFTTestComplexNonHalfTypes, FFT1D1024C2CShort)
663
815
{
0 commit comments