<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">I am looking into ways to improve performance of the VecMDot_Seq routine.  I am focusing on the variant that gets called when PETSC_THREADCOMM_ACTIVE and PETSC_USE_FORTRAN_KERNEL_MDOT
 are NOT defined.<br>
<br>
My current version of PETSc is 3.4.5 due solely to user requirement.  I am linking against MKL.<br>
<br>
I tried and failed to implement VecMDot_Seq as a call to cblas_dgemv in ~/mpi/pvec2.c<br>
<br>
cblas_dgemv(CblasRowMajor, CblasNoTrans, nv, n, 1., b, n, xbase, 1, 0., work, 1);<br>
<br>
I could not figure out a way to extract the vectors from 'Vec y[]' and store them as rows of an allocated array.<br>
<br>
This user post starts off with a similar request (how to construct a matrix from many vectors)<br>
<a href="https://lists.mcs.anl.gov/pipermail/petsc-users/2015-August/026848.html" target="_blank">https://lists.mcs.anl.gov/pipermail/petsc-users/2015-August/026848.html</a><br>
<br>
I understand that this sort of memory shuffling is expensive.  I was just hoping to prove the point to myself that it's possible.<br>
<br>
The action performed by VecMDot_Seq is the same as matrix-vector multiplication, so I was wondering why it wasn't implemented as a call ?gemv?
<div><br>
<div class="BodyFragment"><font size="2"><span style="font-size:10pt;">
<div class="PlainText">Daniel Kokron<br>
NASA Ames (ARC-TN)<br>
SciCon group</div>
</span></font></div>
</div>
</div>
</body>
</html>