[Trilinos-Users] Tpetra and threads

Hoemmen, Mark mhoemme at sandia.gov
Mon Apr 13 14:30:54 MDT 2015



On 4/13/15, 12:00 PM, "trilinos-users-request at software.sandia.gov"
<trilinos-users-request at software.sandia.gov> wrote:
>Message: 1
>Date: Mon, 13 Apr 2015 15:49:21 +0200
>From: Martin Vymazal <martin.vymazal at vki.ac.be>
>To: trilinos-users at software.sandia.gov
>Subject: [Trilinos-Users] Tpetra and threads
>Message-ID: <2697171.BCGQzWlqIO at tinlaptop>
>Content-Type: text/plain; charset="us-ascii"
>
>Hello,
>
> I have a toy FE problem, for which I use Tpetra map, and Tpetra CRS
>matrix to 
>store and solve the linear system. Everything works fine when I run the
>code in 
>serial, but when I try assembly with 2 threads (using std::thread from
>C++11), 
>I get memory crashes.
>
>What I'm trying to do is this:
>1) Initialize system matrix (in serial)
>2) Run assembly with multiple threads (that I launched outside of
>Trilinos)
>3) When assembly is finished and threads join, solve the linear system
>(in 
>serial again)
>
>I understand that this is not the best/most optimal way, but all I wanted
>to 
>try is a simple test and it would really help me if I could ask
>Tpetra/Kokkos 
>not to get in my way. From the output it seems that Kokkos starts
>automatically its own thread and it probably does not like the fact that
>later 
>on, different number of threads accumulate in the system matrix.
>
>I get the following:
>
>Kokkos::HostSpace::decrement( 0x168c180 ) ERROR :  memory not being
>tracked
>
>I searched for examples how to set the Tpetra map parameters in order to
>control the number of threads, but they all only show how (not) to use
>MPI, 
>nothing said about multithreading ... Is what I'm trying to do possible?
>Can I 
>tell Trilinos 'not to worry' about my threads?
>
>Thank you for your help,
>
> Martin Vymazal

Hi Martin,

Please see Tpetra Lesson 07 (in tpetra/core/example) for a demonstration
of thread-parallel sparse matrix construction and fill.  The interface of
Tpetra::CrsMatrix does not promise thread safety; we have a lower-level
interface (which the example uses) that does.

mfh



More information about the Trilinos-Users mailing list