[petsc-users] PetscLogFlop for a sqrt()
Matthew Knepley
knepley at gmail.com
Tue Apr 21 10:58:33 CDT 2015
On Tue, Apr 21, 2015 at 10:54 AM, Justin Chang <jychang48 at gmail.com> wrote:
> Matt,
>
> Thank you for the clarification. Couple more questions:
>
> 1) Is there a difference between calling:
>
> y = <some value>;
>
> and
> y = 0;
> y+=<some value>;
>
> that is, for the latter case it would require PetscLogFlop(1) and the
> former would not?
>
Yes.
> 2) Looking through the source code of some of these PETSc functions, it
> seems the calculation of an index location for an array is not counted with
> PetscLogFlop(). For instance when I see:
>
> for (d = 0; d < dim; d++) {
> for (f = 0; f < dim; f++) {
> J[d*dim+f] = 0.0;
> for (g = 0; g < dim; g++) {
> J[d*dim+f] += R[d*dim+g]*J0[g*dim+f];
> }
> }
> }
> PetscLogFlops(18.0);
>
Flop is Floating Point Operation. The index calculation is an Integer
Operation. I agree that we could probably start counting
those as well since in some sorts of applications its important, but right
now we don't.
Thanks,
Matt
> where R is a diagonal matrix and dim =3, the flops to document d*dim+f
> within J[...] is not accounted for within the 18 count (I think).
>
> If I had done something like
>
> pos = d*dim+f;
> J[pos] = ...
>
> wouldn't that be an extra 2 flops per loop iteration (excluding the zero
> off-diagonal parts)?
>
> Thanks,
> Justin
>
>
>
> On Tue, Apr 21, 2015 at 5:33 AM, Matthew Knepley <knepley at gmail.com>
> wrote:
>
>> On Tue, Apr 21, 2015 at 12:59 AM, Justin Chang <jchang27 at uh.edu> wrote:
>>
>>> Hi everyone,
>>>
>>> I want to manually count the number of flops that take place within my
>>> user-defined functions. Say I have to calculate the following:
>>>
>>> y = sqrt(pow(x[0],2)+pow(x[1],2)+pow(x[2],2));
>>>
>>> What should the flop counter be for each call?
>>>
>>
>> 1) I would use PetscSqr() instead of pow(*, 2) and PetscSqrtReal/Scalar()
>>
>> 2) Sqrt is obviously more expensive than a multiply, but there is no good
>> standard, so we just count it as 1 flop
>>
>> Thanks,
>>
>> Matt
>>
>>
>>> Thanks,
>>>
>>>
>>> --
>>> Justin Chang
>>> PhD Candidate, Civil Engineering - Computational Sciences
>>> University of Houston, Department of Civil and Environmental Engineering
>>> Houston, TX 77004
>>> (512) 963-3262
>>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>
>
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150421/1bdddee8/attachment.html>
More information about the petsc-users
mailing list