Macaulay2 Engine
Loading...
Searching...
No Matches

◆ showMemoryUsage()

void SchreyerFrame::showMemoryUsage ( ) const

Definition at line 712 of file res-schreyer-frame.cpp.

713{
714 std::cout << "Frame memory usage" << std::endl;
715 // widths: level: 6, #elems: 8, used: 6, allocated: 11
716 std::cout << " level"
717 << " #elems"
718 << " used"
719 << " allocated"
720 << " nterms"
721 << " poly"
722 << " polalloc" << std::endl;
723 long alloc = 0;
724 long used = 0;
725 long nelems = 0;
726 long poly_used = 0;
727 long poly_alloc = 0;
728 long poly_nterms = 0;
729 long poly_used_level = 0;
730 long poly_alloc_level = 0;
731 long poly_nterms_level = 0;
732 for (int i = 0; i < mFrame.mLevels.size(); i++)
733 {
734 long nelems_level = level(i).size();
735 if (nelems_level == 0) continue;
736 long used_level = nelems_level * sizeof(FrameElement);
737 long alloc_level = level(i).capacity() * sizeof(FrameElement);
738 poly_nterms_level = 0;
739 poly_used_level = 0;
740 poly_alloc_level = 0;
741 for (int j = 0; j < nelems_level; j++)
742 {
743 ring().memUsage(level(i)[j].mSyzygy,
744 poly_nterms_level,
745 poly_used_level,
746 poly_alloc_level);
747 }
748 poly_nterms += poly_nterms_level;
749 poly_used += poly_used_level;
750 poly_alloc += poly_alloc_level;
751 std::cout << std::setw(6) << i << " " << std::setw(8) << nelems_level
752 << " " << std::setw(6) << used_level << " " << std::setw(11)
753 << alloc_level << " " << std::setw(10) << poly_nterms_level
754 << " " << std::setw(10) << poly_used_level << " "
755 << std::setw(10) << poly_alloc_level << std::endl;
756 nelems += nelems_level;
757 used += used_level;
758 alloc += alloc_level;
759 }
760 std::cout << " all"
761 << " " << std::setw(8) << nelems << " " << std::setw(6) << used
762 << " " << std::setw(11) << alloc << " " << std::setw(10)
763 << poly_nterms << " " << std::setw(10) << poly_used << " "
764 << std::setw(10) << poly_alloc << std::endl;
765
766 long monomSpace = mMonomialSpace.memoryUsage();
767 long monomUsed =
768 nelems * monoid().max_monomial_size() * sizeof(monomial_word);
769 std::cout << "monomials " << std::setw(6) << monomUsed << " "
770 << std::setw(11) << monomSpace << std::endl;
771 std::cout << "total mem " << std::setw(6)
772 << (used + monomUsed + poly_used) << " " << std::setw(11)
773 << (alloc + monomSpace + poly_alloc) << std::endl;
774}
int max_monomial_size() const
void memUsage(const ResPolynomial &f, long &nterms, long &bytes_used, long &bytes_alloc) const
SchreyerFrameTypes::FrameElement FrameElement
const ResMonoid & monoid() const
std::vector< FrameElement > & level(int lev)
const ResPolyRing & ring() const
ResMemoryBlock< res_monomial_word > mMonomialSpace
long monomial_word
Definition moninfo.hpp:77

References level(), ResMonoidDense::max_monomial_size(), ResPolyRing::memUsage(), mFrame, mMonomialSpace, monoid(), and ring().

Referenced by minimalBettiNumbers(), show(), and start_computation().