Я только начинаю программировать CUBLAS/CUDA. В основном я использую это матричные и векторные операции. Я довольно запутываю ориентацию вектора, используемого в CUBLAS. Кажется, что нет никакой разницы между вектором строки и столбца. Итак, если я использую функцию уровня 2 для умножения матрицы с вектором, как я могу определить ориентацию вектора? Будет ли он всегда рассматриваться как вектор-столбец? Если я хочу умножить вектор-столбец (nx1) на вектор строки (1xm), чтобы сделать матрицу (nxm), должен ли я всегда рассматривать их как матрицу и использовать функцию уровня 3 для умножения?путают в строке/столбце в CUBLAS
Кроме того, я использую тягу для генерации вектора, поэтому, если я передаю вектор тяги (n элементов) в cublasCgemm, чтобы сформировать матрицу 1xn или nx1 (т. Е. Строку или вектор-столбец). Будет ли этот вектор рассматриваться как вектор 1xn или nx1, если я установил cublasOperation_t как CUBLAS_OP_N?
Спасибо.
Это помогает. Я думаю, что cublasDger - это то, что мне нужно. Но я очень запутался в формате хранения. Я читаю некоторые сведения об использовании CUBLAS. Он сказал, что C имеет другой формат хранения как fortran. Поэтому, если для умножения C (mxk) = A (mxn) x B (nxk), которые хранятся в формате C, то каковы ведущие размеры, которые я должен ввести в cublasDgemm? – user1285419
Вам может быть интересен мой ответ [здесь] (http://stackoverflow.com/questions/18252526/matrix-multiplication-giving-wrong-output/18292753#18292753), который обеспечивает полностью обработанный пример использования cublas gemm с C -строчные 2D-массивы. –
Документация _CUDA Toolkit Documentation в [CUBLAS/Data layout] (http://docs.nvidia.com/cuda/cublas/index.html#data-layout) гласит, что библиотека CUBLAS использует хранилище основных столбцов для максимальной совместимости с существующим Fortran сред. Также предлагается: _ Для кода Fortran, по-механически переведенного на C, можно предпочесть сохранить индексирование на основе 1, чтобы избежать необходимости преобразования циклов_. Поэтому относительно BLAS, выбирающего формат хранения в столбце (Fortran), является разумным выбором. В противном случае вам нужно преобразовать все матрицы из C в Fortran, прежде чем вызывать cublasDgemm. – ztik