Я использую CUSP для части моего ускоренного кода GPU. У меня есть необходимость извлечь диагональ из матрицы каспа, C. которая должна быть помещена в диагональ в коде ниже.
cusp::extract_diagonal(C, diagonal);
Однако при компиляции я получаю «cusp» не имеет члена «extract_diagonal»
Если у меня есть:
#include <cusp/format_utils.h>
Как и в примере, я получаю format_utils.h не может быть найден. Если я вставлю детали для завершения пути к заголовку, как показано ниже:
#include <cusp/detail/format_utils.h>
Компиляция может найти format_utils.h, но все равно говорит, что нет «extract_diagonal»
Пример, на который я смотрю:
// include cusp array1d header file
#include <cusp/array1d.h>
#include <cusp/coo_matrix.h>
#include <cusp/print.h>
#incldue <cusp/gallery/poisson.h>
#include <cusp/format_utils.h>
int main()
{
// initialize 5x5 poisson matrix
cusp::coo_matrix<int,float,cusp::host_memory> A;
cusp::gallery::poisson5pt(A, 5, 5);
// allocate array to hold diagonal entries
cusp::array1d<float, cusp::host_memory> diagonal(A.num_rows);
// extract diagonal of A
cusp::extract_diagonal(A, diagonal);
// print diagonal entries
cusp::print(diagonal);
}
Версии как ниже:
The following libraries were found:
CUDA v6.0
Thrust v1.7.1
Cusp v0.4.0
Я пропускаю что-то включающее или другое? В качестве последнего средства я включил все заголовки в основной каталог cusp безрезультатно.
Любые предложения будут великолепны.
Ты не можешь найти cusp/format_utils.h
потому что он не существует в используемой версии CUSP, которой уже почти 4 года, и с тех пор кодовая база была реорганизована. Если вы обновитесь до CUSP 0.5.1 (для которого был написан пример, который вы используете), вы должны найти, что он работает.
В качестве альтернативы, если вы измените включение на cusp/format.h
, вы можете найти, что это работает также, хотя я не могу гарантировать это и слишком ленив, чтобы вытащить древнюю версию CUSP и проверить.
Других решений пока нет …