Что означает код ошибки BLAS DGEMV -6?

У меня есть программа, которая работает через R, но использует подпрограммы BLAS. Он проходит правильно около 8 раз, но затем выдает ошибку:

Подпрограмма BLAS/LAPACK 'DGEMV' дала код ошибки -6

Что означает этот код ошибки?


person Andrew Redd    schedule 16.06.2010    source источник


Ответы (2)


R определяет функцию XERBLA как

void F77_NAME(xerbla)(const char *srname, int *info)
{
   /* srname is not null-terminated.  It should be 6 characters. */
    char buf[7];
    strncpy(buf, srname, 6);
    buf[6] = '\0';
    error(_("BLAS/LAPACK routine '%6s' gave error code %d"), buf, -(*info));
}

из файла src/main/print.c.

версия dgemv.f для Netlib показывает, что проверяются только входные параметры. Код 6 указывает на проблему с параметром LDA или M.

*...
  ELSE IF (LDA.LT.MAX(1,M)) THEN
      INFO = 6
*...
  END IF
  IF (INFO.NE.0) THEN
      CALL XERBLA('DGEMV ',INFO)
      RETURN

Таким образом, получается, что R принимает отрицательный код ошибки BLAS, что, я думаю, вызывает много путаницы. Я думаю, что это отвечает на мой вопрос, но не на мою проблему, поскольку он работает несколько раз с одними и теми же параметрами, прежде чем выдается ошибка.

person Andrew Redd    schedule 16.06.2010

DGEMV не возвращает никаких кодов ошибок.

Эта ошибка подразумевает, что ошибка исходит от самого R.

Возможно, вам следует сообщить об ошибке в R.

person Kevin Panko    schedule 16.06.2010
comment
BLAS имеет обработчик ошибок под названием XERBLA. R перезаписывает XERBLA для передачи сообщений об ошибках. Ошибка вызывается из информационной переменной, насколько я вижу. - person Andrew Redd; 17.06.2010
comment
Похоже, вы получили ответ там. - person Kevin Panko; 17.06.2010