10 std::vector<Transform const *> transforms;
12 generator.
generate(device, x, y, z, n, isBatched, isFloat, isForward,
13 isInPlace, isReal, transforms);
14 std::vector<BenchmarkResult const *> *result =
benchmark(transforms);
18 int Advisor::getMaxMemory(
int device,
int size) {
19 if (size == INT_MAX) {
20 return std::ceil(toMB(getTotalMemory(device)));
26 int howMany,
int device,
int x,
int y,
int z,
int n,
30 bool allowTransposition,
bool squareOnly,
bool crop) {
32 maxMemory = getMaxMemory(device, maxMemory);
33 Validator::validate(x, y, z, n, device, maxSignalInc, maxMemory, allowTransposition, squareOnly);
35 isForward, isInPlace, isReal);
38 std::vector<const Transform *> *result =
39 optimizer.
optimize(howMany, maxSignalInc, maxMemory, squareOnly, crop);
44 int howMany,
int device,
int x,
int y,
int z,
int n,
48 bool allowTransposition,
bool squareOnly,
bool crop) {
49 std::vector<Transform const *> *candidates =
50 recommend(howMany, device, x, y, z, n, isBatched, isFloat, isForward,
51 isInPlace, isReal, maxSignalInc, maxMemory, allowTransposition,
53 std::vector<BenchmarkResult const *> *result =
benchmark(*candidates);
60 std::vector<Transform const *> &transforms) {
61 std::vector<BenchmarkResult const *> *results =
62 new std::vector<BenchmarkResult const *>();
63 int size = transforms.size();
64 for (
int i = 0;
i < size;
i++) {
static BenchmarkResult const * benchmark(Transform const *tr)
static std::vector< BenchmarkResult const * > * find(int howMany, int device, int x, int y=1, int z=1, int n=1, Tristate::Tristate isBatched=Tristate::TRUE, Tristate::Tristate isFloat=Tristate::TRUE, Tristate::Tristate isForward=Tristate::TRUE, Tristate::Tristate isInPlace=Tristate::TRUE, Tristate::Tristate isReal=Tristate::TRUE, int maxSignalInc=INT_MAX, int maxMemory=INT_MAX, bool allowTransposition=false, bool squareOnly=false, bool crop=false)
std::vector< const Transform * > * optimize(size_t nBest, int maxPercIncrease, int maxMemMB, bool squareOnly, bool crop)
static void validate(int x, int y, int z, int n, int device)
static std::vector< BenchmarkResult const * > * benchmark(int device, int x, int y=1, int z=1, int n=1, Tristate::Tristate isBatched=Tristate::TRUE, Tristate::Tristate isFloat=Tristate::TRUE, Tristate::Tristate isForward=Tristate::TRUE, Tristate::Tristate isInPlace=Tristate::TRUE, Tristate::Tristate isReal=Tristate::TRUE)
void sort(struct DCEL_T *dcel)
static std::vector< Transform const * > * recommend(int howMany, int device, int x, int y=1, int z=1, int n=1, Tristate::Tristate isBatched=Tristate::TRUE, Tristate::Tristate isFloat=Tristate::TRUE, Tristate::Tristate isForward=Tristate::TRUE, Tristate::Tristate isInPlace=Tristate::TRUE, Tristate::Tristate isReal=Tristate::TRUE, int maxSignalInc=INT_MAX, int maxMemory=INT_MAX, bool allowTransposition=false, bool squareOnly=false, bool crop=false)
static bool execSort(const BenchmarkResult *l, const BenchmarkResult *r)