Changeset 986131d for src/cvec.c


Ignore:
Timestamp:
Jul 29, 2017, 5:55:35 PM (7 years ago)
Author:
Eduard Müller <mueller.eduard@googlemail.com>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master
Children:
7100895
Parents:
34ce715
Message:

Intel IPP support for aubio

See emuell/aubio/ intel_ipp2 for details please

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/cvec.c

    r34ce715 r986131d  
    2121#include "aubio_priv.h"
    2222#include "cvec.h"
     23
     24#if defined HAVE_INTEL_IPP
     25#include <ippcore.h>
     26#include <ippvm.h>
     27#include <ipps.h>
     28#endif
    2329
    2430cvec_t * new_cvec(uint_t length) {
     
    8692    return;
    8793  }
    88 #ifdef HAVE_MEMCPY_HACKS
     94#if defined(HAVE_INTEL_IPP)
     95  #if HAVE_AUBIO_DOUBLE
     96    ippsCopy_64f(s->phas, t->phas, (int)s->length);
     97    ippsCopy_64f(s->norm, t->norm, (int)s->length);
     98  #else
     99    ippsCopy_32f(s->phas, t->phas, (int)s->length);
     100    ippsCopy_32f(s->norm, t->norm, (int)s->length);
     101  #endif
     102#elif defined(HAVE_MEMCPY_HACKS)
    89103  memcpy(t->norm, s->norm, t->length * sizeof(smpl_t));
    90104  memcpy(t->phas, s->phas, t->length * sizeof(smpl_t));
    91 #else /* HAVE_MEMCPY_HACKS */
     105#else
    92106  uint_t j;
    93107  for (j=0; j< t->length; j++) {
     
    95109    t->phas[j] = s->phas[j];
    96110  }
    97 #endif /* HAVE_MEMCPY_HACKS */
    98 }
    99 
    100 void cvec_norm_set_all (cvec_t *s, smpl_t val) {
     111#endif
     112}
     113
     114void cvec_norm_set_all(cvec_t *s, smpl_t val) {
     115#if defined(HAVE_INTEL_IPP)
     116  #if HAVE_AUBIO_DOUBLE
     117    ippsSet_64f(val, s->norm, (int)s->length);
     118  #else
     119    ippsSet_32f(val, s->norm, (int)s->length);
     120  #endif
     121#else
    101122  uint_t j;
    102123  for (j=0; j< s->length; j++) {
    103124    s->norm[j] = val;
    104125  }
     126#endif
    105127}
    106128
    107129void cvec_norm_zeros(cvec_t *s) {
    108 #ifdef HAVE_MEMCPY_HACKS
     130#if defined(HAVE_INTEL_IPP)
     131  #if HAVE_AUBIO_DOUBLE
     132    ippsZero_64f(s->norm, (int)s->length);
     133  #else
     134    ippsZero_32f(s->norm, (int)s->length);
     135  #endif
     136#elif defined(HAVE_MEMCPY_HACKS)
    109137  memset(s->norm, 0, s->length * sizeof(smpl_t));
    110 #else /* HAVE_MEMCPY_HACKS */
     138#else
    111139  cvec_norm_set_all (s, 0.);
    112 #endif /* HAVE_MEMCPY_HACKS */
     140#endif
    113141}
    114142
     
    118146
    119147void cvec_phas_set_all (cvec_t *s, smpl_t val) {
     148#if defined(HAVE_INTEL_IPP)
     149  #if HAVE_AUBIO_DOUBLE
     150    ippsSet_64f(val, s->phas, (int)s->length);
     151  #else
     152    ippsSet_32f(val, s->phas, (int)s->length);
     153  #endif
     154#else
    120155  uint_t j;
    121156  for (j=0; j< s->length; j++) {
    122157    s->phas[j] = val;
    123158  }
     159#endif
    124160}
    125161
    126162void cvec_phas_zeros(cvec_t *s) {
    127 #ifdef HAVE_MEMCPY_HACKS
     163#if defined(HAVE_INTEL_IPP)
     164  #if HAVE_AUBIO_DOUBLE
     165    ippsZero_64f(s->phas, (int)s->length);
     166  #else
     167    ippsZero_32f(s->phas, (int)s->length);
     168  #endif
     169#elif defined(HAVE_MEMCPY_HACKS)
    128170  memset(s->phas, 0, s->length * sizeof(smpl_t));
    129171#else
     
    142184
    143185void cvec_logmag(cvec_t *s, smpl_t lambda) {
    144   uint_t j;
    145   for (j=0; j< s->length; j++) {
    146     s->norm[j] = LOG(lambda * s->norm[j] + 1);
    147   }
    148 }
     186  #if defined(HAVE_INTEL_IPP)
     187    #if HAVE_AUBIO_DOUBLE
     188      ippsMulC_64f(s->norm, lambda, s->norm, (int)s->length);
     189      ippsAddC_64f(s->norm, 1.0, s->norm, (int)s->length);
     190      ippsLn_64f_A26(s->norm, s->norm, (int)s->length);
     191    #else
     192      ippsMulC_32f(s->norm, lambda, s->norm, (int)s->length);
     193      ippsAddC_32f(s->norm, 1.0, s->norm, (int)s->length);
     194      ippsLn_32f_A21(s->norm, s->norm, (int)s->length);
     195    #endif
     196  #else
     197    uint_t j;
     198    for (j=0; j< s->length; j++) {
     199      s->norm[j] = LOG(lambda * s->norm[j] + 1);
     200    }
     201  #endif
     202}
Note: See TracChangeset for help on using the changeset viewer.