Skip to content

Commit 9209972

Browse files
committed
Release: 11 sep 2021
1 parent 80e3e3a commit 9209972

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+23088
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
2+
// late binding
3+
4+
bool ok = true;
5+
HINSTANCE hinstLib = LoadLibrary(TEXT("libfftw3f-3.dll"));
6+
7+
if (hinstLib == NULL)
8+
hinstLib = LoadLibrary(TEXT("fftw3.dll"));
9+
10+
if (hinstLib == NULL)
11+
hinstLib = LoadLibrary(TEXT("fftw.dll"));
12+
13+
if (hinstLib != NULL)
14+
{
15+
d->hinstLib = hinstLib;
16+
d->fftwf_free = (fftwf_free_proc)GetProcAddress(d->hinstLib, "fftwf_free");
17+
d->fftwf_malloc = (fftwf_malloc_proc)GetProcAddress(d->hinstLib, "fftwf_malloc");
18+
// for 1 d fft
19+
d->fftwf_plan_dft_r2c_1d = (fftwf_plan_dft_r2c_1d_proc)GetProcAddress(d->hinstLib, "fftwf_plan_dft_r2c_1d");
20+
d->fftwf_plan_dft_c2r_1d = (fftwf_plan_dft_c2r_1d_proc)GetProcAddress(d->hinstLib, "fftwf_plan_dft_c2r_1d");
21+
// for 2d fft
22+
d->fftwf_plan_dft_r2c_2d = (fftwf_plan_dft_r2c_2d_proc)GetProcAddress(d->hinstLib, "fftwf_plan_dft_r2c_2d");
23+
d->fftwf_plan_dft_c2r_2d = (fftwf_plan_dft_c2r_2d_proc)GetProcAddress(d->hinstLib, "fftwf_plan_dft_c2r_2d");
24+
25+
26+
27+
d->fftwf_destroy_plan = (fftwf_destroy_plan_proc)GetProcAddress(d->hinstLib, "fftwf_destroy_plan");
28+
d->fftwf_execute = (fftwf_execute_proc)GetProcAddress(d->hinstLib, "fftwf_execute");
29+
30+
d->fftwf_execute_dft_r2c = (fftwf_execute_dft_r2c_proc)GetProcAddress(d->hinstLib, "fftwf_execute_dft_r2c");
31+
d->fftwf_execute_dft_c2r = (fftwf_execute_dft_c2r_proc)GetProcAddress(d->hinstLib, "fftwf_execute_dft_c2r");
32+
// required for internal threading
33+
// fftwf_init_threads = (fftwf_init_threads_proc)GetProcAddress(hinstLib, "fftwf_init_threads");
34+
// fftwf_plan_with_nthreads = (fftwf_plan_with_nthreads_proc)GetProcAddress(hinstLib, "fftwf_plan_with_nthreads");
35+
// fftwf_cleanup_threads = (fftwf_cleanup_threads_proc)GetProcAddress(hinstLib, "fftwf_cleanup_threads");
36+
// fftwf_cleanup = (fftwf_cleanup_proc)GetProcAddress(hinstLib, "fftwf_cleanup");
37+
38+
}
39+
if (d->hinstLib == NULL || d->fftwf_free == NULL || d->fftwf_malloc == NULL
40+
|| d->fftwf_plan_dft_r2c_1d == NULL || d->fftwf_plan_dft_c2r_1d == NULL
41+
|| d->fftwf_plan_dft_r2c_2d == NULL || d->fftwf_plan_dft_c2r_2d == NULL
42+
|| d->fftwf_destroy_plan == NULL || d->fftwf_execute == NULL
43+
|| d->fftwf_execute_dft_r2c == NULL || d->fftwf_execute_dft_c2r == NULL
44+
// required for internal threading
45+
// || d->fftwf_init_threads == NULL || d->fftwf_plan_with_nthreads == NULL
46+
// || d->fftwf_cleanup_threads == NULL || d->fftwf_cleanup == NULL
47+
48+
49+
)
50+
ok = false;
51+
52+
//
53+
/*
54+
code for fft dll internal threading
55+
numCPU = 1;
56+
int nThreadMult = 1; // one thread per cpu
57+
58+
SYSTEM_INFO sysinfo;
59+
GetSystemInfo(&sysinfo);
60+
61+
numCPU = sysinfo.dwNumberOfProcessors;
62+
// check number of processors
63+
64+
d->fftwf_init_threads();
65+
66+
d->fftwf_plan_with_nthreads(nThreadMult * numCPU);
67+
*/

0 commit comments

Comments
 (0)