aclarar algunas cosas sobre culasparse
Pregunta
Comprobación este ejemplo (ejemplo de API al final), quiero hacer algunas preguntas.
1) En el ejemplo, proporcionamos la matriz a con elementos distintos de cero. ¿Cuál es el tamaño real de la matriz? ¿Y estos son los elementos de la matriz o las posiciones que contienen elementos distintos de cero?
2) ¿Puedo usar en los cálculos (usar en una función como culaSparseSetDcooData) una matriz A que contendrá elementos cero y distintos de cero?Si quiero crear una matriz de muestra solo para probar, ¿debería crear una matriz con cero elementos, luego llenarla con algunos elementos y luego?
Solución
Respecto a 1) Curiosamente, el tamaño de la matriz en formato COO no se especifica explícitamente:Consiste en coordenadas de los elementos distintos de cero de la matriz.Si tiene una matriz de COO con 1 elemento distinto de cero, entonces esto podría ser
double a[1] = { 1.0 };
int colInd[1] = { 10 };
int rowInd[1] = { 20 };
y (como se puede ver en los índices de fila/columna) describir elementos de una matriz que tiene al menos tamaño 11*21, o podría ser
double a[1] = { 1.0 };
int colInd[1] = { 1000 };
int rowInd[1] = { 2000 };
y describir elementos de una matriz que tiene al menos tamaño 1001*2001
Sin embargo, en este ejemplo, parece que se trata de una matriz cuadrática y n=8
Parece ser el tamaño.(Desafortunadamente, no parece haber documentación detallada del culaSparseSetDcooData
función...)
Respecto a 2) Esto no está del todo claro.Si su pregunta es si los valores "distintos de cero" puede (en realidad) tiene un valor de 0.0
, entonces puedo decir:Sí, esto debería permitirse.Sin embargo, el ejemplo al que usted hizo referencia ya muestra cómo crear una matriz de prueba simple.