Changeset 096a174


Ignore:
Timestamp:
Jan 7, 2019, 10:55:27 PM (5 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/cnn_org, feature/crepe_org
Children:
147afba
Parents:
855947d
Message:

[fmat] use gemv in fmat_vecmul

This is possible since we use contiguous memory from 1fcd3928f.

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/aubio_priv.h

    r855947d r096a174  
    132132#define aubio_cblas_swap      cblas_sswap
    133133#define aubio_cblas_dot       cblas_sdot
     134#define aubio_cblas__gemv     cblas_sgemv
    134135#else /* HAVE_AUBIO_DOUBLE */
    135136#ifdef HAVE_ATLAS
     
    139140#define aubio_cblas_swap      cblas_dswap
    140141#define aubio_cblas_dot       cblas_ddot
     142#define aubio_cblas__gemv     cblas_dgemv
    141143#endif /* HAVE_AUBIO_DOUBLE */
    142144#endif /* HAVE_BLAS */
  • src/fmat.c

    r855947d r096a174  
    154154
    155155void fmat_vecmul(const fmat_t *s, const fvec_t *scale, fvec_t *output) {
    156   uint_t k;
    157 #if 0
    158   assert(s->height == output->length);
    159   assert(s->length == scale->length);
    160 #endif
    161156#if !defined(HAVE_ACCELERATE) && !defined(HAVE_BLAS)
    162   uint_t j;
     157  uint_t j, k;
     158  AUBIO_ASSERT(s->height == output->length);
     159  AUBIO_ASSERT(s->length == scale->length);
    163160  fvec_zeros(output);
    164161  for (j = 0; j < s->length; j++) {
    165162    for (k = 0; k < s->height; k++) {
    166       output->data[k] += scale->data[j]
    167           * s->data[k][j];
     163      output->data[k] += scale->data[j] * s->data[k][j];
    168164    }
    169165  }
    170166#elif defined(HAVE_BLAS)
     167#if 0
    171168  for (k = 0; k < s->height; k++) {
    172169    output->data[k] = aubio_cblas_dot( s->length, scale->data, 1, s->data[k], 1);
    173170  }
     171#else
     172  aubio_cblas__gemv(CblasColMajor, CblasTrans,
     173      s->length, s->height, 1.,
     174      s->data[0], s->length,
     175      scale->data, 1, 0.,
     176      output->data, 1);
     177#endif
    174178#elif defined(HAVE_ACCELERATE)
    175179#if 0
     
    177181  vDSP_mmul (s->data[0], 1, scale->data, 1, output->data, 1, s->height, 1, s->length);
    178182#else
     183  uint_t k;
    179184  for (k = 0; k < s->height; k++) {
    180185    aubio_vDSP_dotpr( scale->data, 1, s->data[k], 1, &(output->data[k]), s->length);
     
    182187#endif
    183188#endif
     189  }
     190#endif
     191#endif
    184192}
Note: See TracChangeset for help on using the changeset viewer.