-
Notifications
You must be signed in to change notification settings - Fork 82
Commit
* Make cufinufft compiles with CUDA 12 on Windows * Ensure cufinufft exports symbols on Windows to use with Python * some cleanup & removed linux headers on windows * reducing size of cufinufft tests * fixing windows include issue * fixing makefile * committed missing include * fixed rand_r windows * removed unused include --------- Co-authored-by: metab0t <[email protected]>
- Loading branch information
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
// Header for utils.cpp, a little library of low-level array stuff. | ||
// These are just the functions which depend on single/double precision (FLT) | ||
|
||
#pragma once | ||
|
||
#include <chrono> | ||
#include <cmath> | ||
|
||
#include "finufft_core.h" | ||
|
||
// for CNTime... | ||
// using chrono since the interface is portable between linux and windows | ||
|
||
namespace finufft::utils { | ||
|
||
template<typename T> | ||
FINUFFT_EXPORT FINUFFT_ALWAYS_INLINE void FINUFFT_CDECL arrayrange(BIGINT n, const T *a, | ||
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 17 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
|
||
T *lo, T *hi) | ||
// With a a length-n array, writes out min(a) to lo and max(a) to hi, | ||
// so that all a values lie in [lo,hi]. | ||
// If n==0, lo and hi are not finite. | ||
{ | ||
*lo = INFINITY; | ||
*hi = -INFINITY; | ||
for (BIGINT m = 0; m < n; ++m) { | ||
if (a[m] < *lo) *lo = a[m]; | ||
if (a[m] > *hi) *hi = a[m]; | ||
} | ||
} | ||
template<typename T> | ||
FINUFFT_EXPORT FINUFFT_ALWAYS_INLINE void FINUFFT_CDECL arraywidcen(BIGINT n, const T *a, | ||
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, On)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:AVX2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, /arch:SSE2, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, On, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
Check warning on line 31 in include/finufft/finufft_utils.hpp GitHub Actions / cmake-ci (windows-2022, msvc, native, Off, Release, cl, cl, Off)
|
||
T *w, T *c) | ||
// Writes out w = half-width and c = center of an interval enclosing all a[n]'s | ||
// Only chooses a nonzero center if this increases w by less than fraction | ||
// ARRAYWIDCEN_GROWFRAC defined in finufft_core.h. | ||
// This prevents rephasings which don't grow nf by much. 6/8/17 | ||
// If n==0, w and c are not finite. | ||
{ | ||
T lo, hi; | ||
arrayrange(n, a, &lo, &hi); | ||
*w = (hi - lo) / 2; | ||
*c = (hi + lo) / 2; | ||
if (std::abs(*c) < ARRAYWIDCEN_GROWFRAC * (*w)) { | ||
*w += std::abs(*c); | ||
*c = 0.0; | ||
} | ||
} | ||
|
||
FINUFFT_EXPORT BIGINT next235even(BIGINT n); | ||
|
||
// jfm's timer class | ||
class FINUFFT_EXPORT CNTime { | ||
public: | ||
FINUFFT_NEVER_INLINE void start(); | ||
FINUFFT_NEVER_INLINE double restart(); | ||
FINUFFT_NEVER_INLINE double elapsedsec() const; | ||
|
||
private: | ||
double initial; | ||
}; | ||
|
||
// openmp helpers | ||
int get_num_threads_parallel_block(); | ||
|
||
} // namespace finufft::utils | ||
|
||
// thread-safe rand number generator for Windows platform | ||
#ifdef _WIN32 | ||
#include <random> | ||
namespace finufft { | ||
namespace utils { | ||
FINUFFT_EXPORT int FINUFFT_CDECL rand_r(unsigned int *seedp); | ||
} // namespace utils | ||
} // namespace finufft | ||
#endif |