Esempio n. 1
0
File: avx.cpp Progetto: ervanalb/ao
#include <catch/catch.hpp>

#include "ao/kernel/tree/store.hpp"
#include "ao/kernel/tree/tree.hpp"
#include "ao/kernel/eval/evaluator.hpp"
#include "ao/kernel/eval/result.hpp"

#ifdef __AVX__

TEST_CASE("Vectorized performance")
{
    // Oversample to get meaningful result
    const float N = 1000;

    Store s;
    Tree t(&s, s.operation(OP_ADD, s.X(), s.Y()));
    Evaluator e(&t);

    for (unsigned i=0; i < Result::N; ++i)
    {
        e.set(i, 2*i, 0, i);
    }

    SECTION("Speed")
    {
        std::chrono::time_point<std::chrono::system_clock> start, end;
        start = std::chrono::system_clock::now();
        for (int i=0; i < N; ++i)
        {
            e.values(Result::N, false);
        }