Benchmark setup

This commit is contained in:
Christopher Taylor 2017-06-04 03:35:29 -07:00
parent 386a777a3e
commit 8473b74821
4 changed files with 22 additions and 4 deletions

View File

@ -136,6 +136,13 @@ void InitializeCPUArch()
CpuHasAVX2 = ((cpu_info[1] & CPUID_EBX_AVX2) != 0); CpuHasAVX2 = ((cpu_info[1] & CPUID_EBX_AVX2) != 0);
#endif // LEO_TRY_AVX2 #endif // LEO_TRY_AVX2
#ifndef LEO_USE_SSSE3_OPT
CpuHasAVX2 = false;
#endif // LEO_USE_SSSE3_OPT
#ifndef LEO_USE_AVX2_OPT
CpuHasSSSE3 = false;
#endif // LEO_USE_AVX2_OPT
#endif // LEO_TARGET_MOBILE #endif // LEO_TARGET_MOBILE
} }

View File

@ -165,7 +165,11 @@
// Enable 8-bit or 16-bit fields // Enable 8-bit or 16-bit fields
#define LEO_HAS_FF8 #define LEO_HAS_FF8
#define LEO_HAS_FF16 //#define LEO_HAS_FF16
// Enable using SIMD instructions
#define LEO_USE_SSSE3_OPT
#define LEO_USE_AVX2_OPT
// Avoid calculating final FFT values in decoder using bitfield // Avoid calculating final FFT values in decoder using bitfield
#define LEO_ERROR_BITFIELD_OPT #define LEO_ERROR_BITFIELD_OPT

View File

@ -32,6 +32,10 @@
#include <string.h> #include <string.h>
#ifdef _MSC_VER
#pragma warning(disable: 4752) // found Intel(R) Advanced Vector Extensions; consider using /arch:AVX
#endif
namespace leopard { namespace ff16 { namespace leopard { namespace ff16 {
@ -871,6 +875,9 @@ static void IFFT_DIT(
// If there is one layer left: // If there is one layer left:
if (dist < m) if (dist < m)
{ {
// Assuming that dist = m / 2
LEO_DEBUG_ASSERT(dist * 2 == m);
const ffe_t log_m = skewLUT[dist]; const ffe_t log_m = skewLUT[dist];
if (log_m == kModulus) if (log_m == kModulus)

View File

@ -42,8 +42,8 @@ using namespace std;
struct TestParameters struct TestParameters
{ {
#ifdef LEO_HAS_FF16 #ifdef LEO_HAS_FF16
unsigned original_count = 1000; // under 65536 unsigned original_count = 100; // under 65536
unsigned recovery_count = 200; // under 65536 - original_count unsigned recovery_count = 20; // under 65536 - original_count
#else #else
unsigned original_count = 128; // under 65536 unsigned original_count = 128; // under 65536
unsigned recovery_count = 128; // under 65536 - original_count unsigned recovery_count = 128; // under 65536 - original_count
@ -370,7 +370,7 @@ static void ShuffleDeck16(PCGRandom &prng, uint16_t * LEO_RESTRICT deck, uint32_
static bool Benchmark(const TestParameters& params) static bool Benchmark(const TestParameters& params)
{ {
const unsigned kTrials = params.original_count > 8000 ? 1 : 10; const unsigned kTrials = params.original_count > 8000 ? 1 : 100;
std::vector<uint8_t*> original_data(params.original_count); std::vector<uint8_t*> original_data(params.original_count);