Optimized Belief Propagation (CPU and GPU)
|
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"
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> | |
U | simd_processing::LoadPackedDataAligned (unsigned int x, unsigned int y, unsigned int current_disparity, const beliefprop::BpLevelProperties ¤t_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> | |
U | simd_processing::LoadPackedDataUnaligned (unsigned int x, unsigned int y, unsigned int current_disparity, const beliefprop::BpLevelProperties ¤t_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> | |
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> | |
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> | |
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> | |
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> | |
T | 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> | |
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... | |
Contains general functions for processing using SIMD vector data types on CPU.
Definition in file SIMDProcessing.h.