You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm not sure if I'm not doing wrong, but user-defined data types, such as TronSparseMatrixCSC and TronDenseMatrix, seem to cause issues in passing them to a kernel function; compilation fails with complaints that it is a non-bitstype argument.
For example, the following call generates an error.
function kernel(p)
@cuprintln(p.diag_vals) # It does not matter if I call @cuprintln or not. Compiling this will fail.
return
end
d = ExaTron.TronSparseMatrixCSC(I, J, V, 8) # I, J, and V are CuArrays of types Int (I,J) and Float64 (V)
@cuda threads=128 blocks=1 kernel(d)
I was trying to implement a batch-solve of Tron, and I was thinking of doing this by calling dtron routines for each thread block in a kernel. However, dtron takes aforementioned user-defined data types, leading to failures. I guess all the internal routines using user-defined data types would cause issues in this case.
I'm a bit concerned that we might have to go back to the original implementation where bitstype arrays were used, which means dismantling Matrix into array components.
What do you think? Am I doing something wrong?
The text was updated successfully, but these errors were encountered:
In that sense, it is better to have struct of arrays rather than arrays of struct when we want to use GPU.
In ExaTron, I think we have the right structure for the matrix, and I would be in favor of dismantling the matrix into array components, as you said.
I'm not sure if I'm not doing wrong, but user-defined data types, such as TronSparseMatrixCSC and TronDenseMatrix, seem to cause issues in passing them to a kernel function; compilation fails with complaints that it is a non-bitstype argument.
For example, the following call generates an error.
I was trying to implement a batch-solve of Tron, and I was thinking of doing this by calling dtron routines for each thread block in a kernel. However, dtron takes aforementioned user-defined data types, leading to failures. I guess all the internal routines using user-defined data types would cause issues in this case.
I'm a bit concerned that we might have to go back to the original implementation where bitstype arrays were used, which means dismantling Matrix into array components.
What do you think? Am I doing something wrong?
The text was updated successfully, but these errors were encountered: