Optimized Belief Propagation (CPU and GPU)
SIMDProcessing.h File Reference

Contains general functions for processing using SIMD vector data types on CPU. More...

#include <math.h>
#include <omp.h>
#include <algorithm>
#include <iostream>
#include "RunEval/RunTypeConstraints.h"
#include "RunImpCPU/RunCPUSettings.h"
#include "AVXTemplateSpFuncts.h"
#include "AVX256TemplateSpFuncts.h"
Include dependency graph for SIMDProcessing.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 simd_processing
 General functions for processing using SIMD vector data types on CPU.
Template specializations must be defined to support specific SIMD vector data types.
 

Functions

template<RunData_t T, RunDataVect_t U>
simd_processing::LoadPackedDataAligned (unsigned int x, unsigned int y, unsigned int current_disparity, const beliefprop::BpLevelProperties &current_bp_level, unsigned int numDispVals, const T *inData)
 Load multiple values of primitive type data from inData array to SIMD vector data type
inData array must be aligned according to the rules of the specified SIMD type to use this operation. More...
 
template<RunData_t T, RunDataVect_t U>
simd_processing::LoadPackedDataUnaligned (unsigned int x, unsigned int y, unsigned int current_disparity, const beliefprop::BpLevelProperties &current_bp_level, unsigned int numDispVals, const T *inData)
 Load multiple values of primitive type data from inData array to SIMD vector data type
inData array does not need to be aligned to use this operation. More...
 
template<RunDataVect_t T>
simd_processing::createSIMDVectorSameData (float data)
 Create a SIMD vector of the specified type with all elements containing the same data. More...
 
template<RunDataSingOrVect_t T, RunDataSingOrVect_t U, RunDataSingOrVect_t V>
simd_processing::AddVals (const T &val1, const U &val2)
 Add values of specified types and return sum as specified type
Define template specialization to support addition of specific SIMD vector types. More...
 
template<RunDataSingOrVect_t T, RunDataSingOrVect_t U, RunDataSingOrVect_t V>
simd_processing::SubtractVals (const T &val1, const U &val2)
 Subtract values of specified types and return difference as specified type Define template specialization to support subtraction of specific SIMD vector types. More...
 
template<RunDataSingOrVect_t T, RunDataSingOrVect_t U, RunDataSingOrVect_t V>
simd_processing::divideVals (const T &val1, const U &val2)
 Divide values of specified types and return quotient as specified type
Define template specialization to support division of specific SIMD vector types. More...
 
template<RunDataSingOrVect_t T, RunDataSingOrVect_t V>
simd_processing::ConvertValToDatatype (V val)
 Convert value of specified type to value of another specified type
Define template specialization to support conversion between specific types for SIMD vector processing. More...
 
template<RunDataSingOrVect_t T>
simd_processing::GetMinByElement (const T &val1, const T &val2)
 Get element-wise minimum of two inputs which may be of a SIMD vector type where corresponding values within the SIMD vector are compared
Define template specialization to support function for specific vector type. More...
 
template<RunData_t T, RunDataVectProcess_t U>
void simd_processing::StorePackedDataAligned (unsigned int indexDataStore, T *locationDataStore, const U &dataToStore)
 Write data in SIMD vector (or single element) to specified location in array
Array that data is written to must be aligned according to the rules of the specified SIMD type to use this operation. More...
 
template<RunData_t T, RunDataVectProcess_t U>
void simd_processing::StorePackedDataUnaligned (unsigned int indexDataStore, T *locationDataStore, const U &dataToStore)
 Write data in SIMD vector (or single element) to specified location in array
Array that data is written does not need to be aligned to use this operation. More...
 

Detailed Description

Contains general functions for processing using SIMD vector data types on CPU.

Author
Scott Grauer-Gray

Definition in file SIMDProcessing.h.