Номера строк для запроса в informix

CUBLAS основан на эталонном BLAS, а ссылка BLAS никогда не содержала продукт Адамара (комплексный или реальный). Следовательно, у CUBLAS тоже нет. Intel добавила v?Mul в MKL для этого, но она нестандартна и не в большинстве реализаций BLAS. Это тот вид операции, в котором программист старой программы fortran просто записывал цикл, поэтому я полагаю, что это действительно не гарантировало выделенную процедуру в BLAS.

Нет «стандартной» библиотеки CUDA I я знаю, что реализует продукт Адамара. Была бы возможность использовать CUBLAS GEMM или SYMM для этого и извлечь диагональ результирующей матрицы, но это было бы ужасно неэффективно, как с точки вычисления, так и с точки зрения хранения.

Библиотека шаблонов Thrust может сделать это тривиально с помощью thrust::transform , например:

thrust::multiplies > op;
thrust::transform(thrust::device, x, x + n, y, z, op);

будет перебирать по каждой паре входов с указателей устройств x и y и вычислять z [i] = x [i] * y [i] (возможно, вам нужно сделать несколько бросков, чтобы скомпилировать это, но вы получите эту идею). Но для этого требуется компиляция кода CUDA в рамках вашего проекта, и, по-видимому, вы этого не хотите.

5
задан Taryn 27 June 2013 в 15:07
поделиться

4 ответа

Лучший способ состоит в том, чтобы использовать (недавно инициализированный) последовательность.

begin work;
create sequence myseq;
select myseq.nextval,s.firstName,s.lastName from students s;
drop sequence myseq;
commit work;
8
ответ дан 18 December 2019 в 13:21
поделиться

Вы не можете использовать ROWID в таблице, это фрагментируется через несколько DBSpaces, таким образом, любое решение, которое использует ROWID, не является особенно портативным. Этому также сильно препятствуют.

Если у Вас нет столбца SERIAL в Вашей исходной таблице (который является лучшим способом реализовать это как общее понятие), взгляните на, СОЗДАЮТ ПОСЛЕДОВАТЕЛЬНОСТЬ, которая является более или менее эквивалентом функции Orrible, которая генерирует уникальные числа при ВЫБОРЕ из (в противоположность ПОСЛЕДОВАТЕЛЬНОМУ, который генерирует уникальное число, когда строка ВСТАВЛЯЕТСЯ).

2
ответ дан 18 December 2019 в 13:21
поделиться

Я думаю, что самый легкий путь состоял бы в том, чтобы использовать следующий код и скорректировать его возврат соответственно. ВЫБЕРИТЕ rowid, * таблица FROM

Это работает на меня, но обратите внимание на то, что это возвратит номер строки в базе данных, не номер строки в запросе.

P.S. это - принятый ответ от Exchange Экспертов.

1
ответ дан 18 December 2019 в 13:21
поделиться

Учитывая таблицу по имени Table3 с 3 столбцами:

colnum  name   datatype
======= =====  ===
1       no     text;
2       seq    number;
3       nm     text;

Примечание: seq является полем в Таблице, которая имеет уникальные значения в порядке возрастания. Числа не должны быть непрерывными.

Вот запрос для возврата rownumber (RowNum) наряду с результатом запроса

SELECT table3.no, table3.seq, Table3.nm,
      (SELECT COUNT(*) FROM Table3 AS Temp
         WHERE Temp.seq < Table3.seq) + 1 AS RowNum
    FROM Table3;
2
ответ дан 18 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: