Skip to content

Commit c6ac5fa

Browse files
Merge pull request #4 from michaelciraci/correct-185-spike
Correct 185 spike
2 parents ad9acf7 + ea7e115 commit c6ac5fa

File tree

6 files changed

+17
-15
lines changed

6 files changed

+17
-15
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ keywords = ["fft", "dft", "discrete", "fourier", "no_std"]
1212
categories = ["algorithms", "science"]
1313

1414
[dependencies]
15-
monarch-derive = "=0.4.0"
15+
monarch-derive = { path = "crates/monarch-derive" }
1616
num-complex = "0.4"
1717
num-traits = { version = "0.2", default-features = false }
1818

assets/linear_comparison.png

23.3 KB
Loading

assets/log_comparison.png

-27.6 KB
Loading

crates/benches/generate_benchmark_plot.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@
3838
plt.xlabel('FFT Size')
3939
# plt.yscale('log')
4040
plt.legend(loc='upper left')
41+
plt.gcf().set_size_inches(10, 5)
42+
# plt.savefig('../../linear_comparison.png')
4143
plt.show()

crates/monarch-derive/src/lib.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ pub fn generate_switch(_input: TokenStream) -> TokenStream {
114114
/// let input: Vec<_> = (0..8).map(|i| Complex::new(i as f32, 0.0)).collect();
115115
/// let output = fft::<8, _, _>(input);
116116
/// ```
117-
#[inline]
117+
#[inline(always)]
118118
pub fn fft<const N: usize, T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; N] {
119119
let x_in = input.as_ref();
120120
assert_eq!(x_in.len(), N);
@@ -135,7 +135,7 @@ pub fn generate_switch(_input: TokenStream) -> TokenStream {
135135
/// let input: Vec<_> = (0..8).map(|i| Complex::new(i as f32, 0.0)).collect();
136136
/// let output = ifft::<8, _, _>(input);
137137
/// ```
138-
#[inline]
138+
#[inline(always)]
139139
pub fn ifft<const N: usize, T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; N] {
140140
let x_in = input.as_ref();
141141
assert_eq!(x_in.len(), N);
@@ -187,7 +187,7 @@ pub fn generate_powers_of_two(_input: TokenStream) -> TokenStream {
187187

188188
quote! {
189189
#[doc = concat!("Inner FFT")]
190-
#[inline]
190+
#[inline(always)]
191191
pub fn #func<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; #s] {
192192
let n = #s;
193193
let x = input.as_ref();
@@ -214,7 +214,7 @@ pub fn generate_powers_of_two(_input: TokenStream) -> TokenStream {
214214

215215
let expanded = quote! {
216216

217-
#[inline]
217+
#[inline(always)]
218218
pub fn fft1<T: Float, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 1] {
219219
let n = 1;
220220
let x = input.as_ref();
@@ -281,7 +281,7 @@ pub fn generate_coprimes(_input: TokenStream) -> TokenStream {
281281

282282
quote! {
283283
#[doc = concat!("Inner FFT")]
284-
#[inline]
284+
#[inline(always)]
285285
pub fn #func<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; #s] {
286286
let n = #s;
287287
let x = input.as_ref();
@@ -366,7 +366,7 @@ pub fn generate_mixed_radix(_input: TokenStream) -> TokenStream {
366366

367367
quote! {
368368
#[doc = concat!("Inner FFT")]
369-
#[inline]
369+
#[inline(always)]
370370
pub fn #func<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; #s] {
371371
let n = #s;
372372
let x = input.as_ref();
@@ -548,7 +548,7 @@ pub fn generate_primes(_input: TokenStream) -> TokenStream {
548548

549549
quote! {
550550
#[doc = concat!("Inner FFT")]
551-
#[inline]
551+
#[inline(always)]
552552
pub fn #func<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; #s] {
553553
let n = #s;
554554
let x = input.as_ref();
@@ -603,7 +603,7 @@ pub fn generate_iffts(_input: TokenStream) -> TokenStream {
603603

604604
quote! {
605605
#[doc = concat!("Inner iFFT")]
606-
#[inline]
606+
#[inline(always)]
607607
pub fn #func<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; #n] {
608608
let x = input.as_ref();
609609
assert_eq!(x.len(), #n);
@@ -621,7 +621,7 @@ pub fn generate_iffts(_input: TokenStream) -> TokenStream {
621621

622622
let expanded = quote! {
623623
#[doc = concat!("Inner iFFT")]
624-
#[inline]
624+
#[inline(always)]
625625
pub fn ifft1<T: Float, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 1] {
626626
let n = 1;
627627
let x = input.as_ref();

src/lib.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ fn _compute_twiddle<T: Float + FloatConst>(index: usize, fft_len: usize) -> Comp
7373
}
7474

7575
#[doc = concat!("Inner FFT")]
76-
#[inline]
76+
#[inline(always)]
7777
pub fn fft3<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 3] {
7878
let n = 3;
7979
let x = input.as_ref();
@@ -99,7 +99,7 @@ pub fn fft3<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex
9999
}
100100

101101
#[doc = concat!("Inner FFT")]
102-
#[inline]
102+
#[inline(always)]
103103
pub fn fft9<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 9] {
104104
let n = 9;
105105
let x = input.as_ref();
@@ -132,7 +132,7 @@ pub fn fft9<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex
132132
}
133133

134134
#[doc = concat!("Inner FFT")]
135-
#[inline]
135+
#[inline(always)]
136136
pub fn fft18<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 18] {
137137
let n = 18;
138138
let x = input.as_ref();
@@ -202,7 +202,7 @@ pub fn fft18<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Comple
202202
}
203203

204204
#[doc = concat!("Inner FFT")]
205-
#[inline]
205+
#[inline(always)]
206206
pub fn fft27<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 27] {
207207
let n = 27;
208208
let x = input.as_ref();
@@ -279,7 +279,7 @@ pub fn fft27<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Comple
279279
}
280280

281281
#[doc = concat!("Inner FFT")]
282-
#[inline]
282+
#[inline(always)]
283283
pub fn fft125<T: Float + FloatConst, A: AsRef<[Complex<T>]>>(input: A) -> [Complex<T>; 125] {
284284
let n = 125;
285285
let x = input.as_ref();

0 commit comments

Comments
 (0)