Sponsored Content
Full Discussion: Vectorization
Special Forums UNIX and Linux Applications High Performance Computing Vectorization Post 302895149 by a3mlord on Friday 28th of March 2014 05:03:17 PM
Old 03-28-2014
Signal Vectorization

Hi,

I have the following vectorized code:
Code:
long valor = 0, i=0;

 __m128i vsum, vecPi, vecCi, vecQCi;

 vsum = _mm_set1_epi32(0);

 int32_t * const pA = A->data;
 int32_t * const pB = B->data;

 int sumDot[1];

 for( ; i<SIZE-3 ;i+=4){

 vecPi = _mm_loadu_si128((__m128i *)&(pA)[i] );
 vecCi = _mm_loadu_si128((__m128i *)&(pB)[i] );
 vecQCi = _mm_mullo_epi32(vecPi,vecCi);
 vsum = _mm_add_epi32(vsum,vecQCi);

 } 
 vsum = _mm_hadd_epi32(vsum, vsum);
 vsum = _mm_hadd_epi32(vsum, vsum);
 _mm_storeu_si128((__m128i *)&(sumDot), vsum);

 for( ; i<SIZE; i++)
 valor += A->data[i] * B->data[i];   valor += sumDot[0];

However, as I get overflows, I need to handle those cases. Could you please help me with that?

Thanks

Last edited by bartus11; 03-28-2014 at 06:06 PM.. Reason: Please use [code][/code] tags.
 
SoMFInt32(3)							       Coin							      SoMFInt32(3)

NAME
SoMFInt32 - The SoMFInt32 class is a container for 32-bit integer values. This field is used where nodes, engines or other field containers needs to store a group of multiple 32-bit integer values. SYNOPSIS
#include <Inventor/fields/SoMFInt32.h> Inherits SoMField. Public Member Functions virtual SoType getTypeId (void) const virtual void copyFrom (const SoField &field) const SoMFInt32 & operator= (const SoMFInt32 &field) virtual SbBool isSame (const SoField &field) const int32_t operator[] (const int idx) const const int32_t * getValues (const int start) const int find (int32_t value, SbBool addifnotfound=FALSE) void setValues (const int start, const int num, const int32_t *newvals) void set1Value (const int idx, int32_t value) void setValue (int32_t value) int32_t operator= (int32_t val) SbBool operator== (const SoMFInt32 &field) const SbBool operator!= (const SoMFInt32 &field) const int32_t * startEditing (void) void finishEditing (void) void setValuesPointer (const int num, const int32_t *userdata) void setValuesPointer (const int num, int32_t *userdata) Static Public Member Functions static void * createInstance (void) static SoType getClassTypeId (void) static void initClass (void) Protected Member Functions virtual void deleteAllValues (void) virtual void copyValue (int to, int from) virtual int fieldSizeof (void) const virtual void * valuesPtr (void) virtual void setValuesPtr (void *ptr) virtual void allocValues (int num) Protected Attributes int32_t * values Detailed Description The SoMFInt32 class is a container for 32-bit integer values. This field is used where nodes, engines or other field containers needs to store a group of multiple 32-bit integer values. This field supports application data sharing through a setValuesPointer() method. See SoMField documentation for information on how to use this function. See also: SoSFInt32 Member Function Documentation SoType SoMFInt32::getClassTypeId (void) [static] Returns a unique type identifier for this field class. See also: getTypeId(), SoType Reimplemented from SoMField. SoType SoMFInt32::getTypeId (void) const [virtual] Returns the type identification instance which uniquely identifies the Coin field class the object belongs to. See also: getClassTypeId(), SoType Implements SoField. void SoMFInt32::copyFrom (const SoField &f) [virtual] Copy value(s) from f into this field. f must be of the same type as this field. Implements SoField. SbBool SoMFInt32::isSame (const SoField &f) const [virtual] Check for equal type and value(s). Implements SoField. void SoMFInt32::deleteAllValues (void) [protected], [virtual] This API member is considered internal to the library, as it is not likely to be of interest to the application programmer. Implements SoMField. void SoMFInt32::copyValue (intto, intfrom) [protected], [virtual] This method is used for moving values around internally within a multivalue field. It needs to be overridden in each field so it automatically takes care of running copy contructors where necessary. Implements SoMField. const int32_t* SoMFInt32::getValues (const intstart) const [inline] Returns a pointer to the values array. void SoMFInt32::initClass (void) [static] Internal method called upon initialization of the library (from SoDB::init()) to set up the type system. Reimplemented from SoMField. Author Generated automatically by Doxygen for Coin from the source code. Version 3.1.3 Wed May 23 2012 SoMFInt32(3)
All times are GMT -4. The time now is 01:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy