[Trilinos-Users] General questions about kokkos

Daniel Holladay dholladay00 at gmail.com
Fri Sep 19 22:38:39 MDT 2014


Thanks for the reply. I think that these portable high performance data structures are very nice and I hope I can use them in my project. 

The SYCL standard is not in its final state yet and so even if that was a priority, it would not be feasible yet. Although, I think given the portability of opencl to xeon phi, intel multicore, nvidia gpus, and amd gpus makes it a very good candidate for high portability to many different architectures without having to use different libraries/tools (openmp, tbb, openacc, cuda, intel xeon phi pragmas?, ...). I know that not all of these libraries have to be used to for portability, but a subset of them do, and as I understand it, opencl could be used in place of these, although it would probably still require some architecture specific optimization, but with things like sycl, this could be done under the hood (but so could implementing all of the above tools). 

What is the time table for getting views to work with magma? Is there no easy way of getting at the underlying data contained in a view so that it could be passed into a blas/magma function? 

Thanks,
Daniel Holladay


On Sep 19, 2014, at 6:47 PM, Heroux, Mike <MHeroux at CSBSJU.EDU> wrote:

> 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