[Trilinos-Users] General questions about kokkos

Heroux, Mike MHeroux at CSBSJU.EDU
Fri Sep 19 17:47:46 MDT 2014


Daniel,

Sorry for the late reply.

Here is some response to your questions:

  *   Kokkos provides a multi-dimensional array container capability.  The user specifies the logical array dimensions, but these dimensions do not enforce a particular storage layout.  In fact, Kokkos’ separation of “physics i,j,k” from “storage i,j,k” is very important as it gives Kokkos latitude in determining the physical data layout for best performance on a particular target processor type or particular usage situation.  For example, the physical layout on a GPU would be different from a multicore CPU.  Also, the layout for using Kokkos with PLASMA or MAGMA should be compatible with those two libraries (although this functionality not available right now).
  *   Kokkos does not support OpenCL at this point.  Although this is desirable in general, OpenCL inability to handle C++ template meta-programming expressions makes it a non-starter for Kokkos.  In principle, SYCL could help with this issue, but use of OpenCL is not a high priority for our user base right now, so it is not something being pursued at the moment.
  *   As I mentioned, Kokkos is not hooked up to Plasma or Magma right now, but this is important to us.  We need to use Kokkos in Trilinos and in turn need the functionality of Plasma and Magma as BLAS replacement libraries.
  *   Regarding variable block sizes, you could have an array of Kokkos views where each view varies in size.  Whether or not this would be effective depends on how big the block tridiagonal entries are.  Kokkos has tiled views, but they have to be the same size.

I hope this is helpful.

Mike

From: Daniel Holladay <dholladay00 at gmail.com<mailto:dholladay00 at gmail.com>>
Date: Monday, September 15, 2014 at 12:07 PM
To: "trilinos-users at software.sandia.gov<mailto:trilinos-users at software.sandia.gov>" <trilinos-users at software.sandia.gov<mailto:trilinos-users at software.sandia.gov>>
Subject: [Trilinos-Users] General questions about kokkos

Hello,

I am a Ph.D. student in the nuclear engineering department at Texas A&M
University and I am working on a parallel block tridiagonal solver that
is portable to GPUs (via OpenCL or CUDA) and the intel xeon phi, and potentially other multi and many core architectures. I am
currently looking at using MAGMA for the block matrix operations (if you
know of a library/package that already does this, I would be interested
in that as well) and I am considering using kokkos to store matrix and array data.

I heard about kokkos this last week from a former graduate student (who now
works at sandia) in town for a career fair. The views look like they
could be very useful for my project.

I currently have my block tridiagonal matrix data stored in 3 three
dimensional arrays, for example a[i][j][k] is the i-th block row, the
j-th row within block row i, and the k-th column in block row i. Every
block matrix can in principle be a different size. Is there a way to
store this in a single (3D) view, or would it require an array of (2D) views?

Also, I noticed that kokkos and the SYCL opencl standard
(http://www.codeplay.com/portal/sycl-tutorial-1-the-vector-addition) look
very similar, are you looking to implement the sycl standard in the
future?

Thanks in advance for taking the time to read and consider these
questions.

-Daniel Holladay




More information about the Trilinos-Users mailing list