\doxysection{vector.\+hpp}
\hypertarget{vector_8hpp_source}{}\label{vector_8hpp_source}\index{ginkgo/core/distributed/vector.hpp@{ginkgo/core/distributed/vector.hpp}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{//\ SPDX-\/FileCopyrightText:\ 2017\ -\/\ 2025\ The\ Ginkgo\ authors}}
\DoxyCodeLine{00002\ \textcolor{comment}{//}}
\DoxyCodeLine{00003\ \textcolor{comment}{//\ SPDX-\/License-\/Identifier:\ BSD-\/3-\/Clause}}
\DoxyCodeLine{00004\ }
\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#ifndef\ GKO\_PUBLIC\_CORE\_DISTRIBUTED\_VECTOR\_HPP\_}}
\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#define\ GKO\_PUBLIC\_CORE\_DISTRIBUTED\_VECTOR\_HPP\_}}
\DoxyCodeLine{00007\ }
\DoxyCodeLine{00008\ }
\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <ginkgo/config.hpp>}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ }
\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#if\ GINKGO\_BUILD\_MPI}}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ }
\DoxyCodeLine{00015\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/dense\_cache.hpp>}}
\DoxyCodeLine{00016\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/lin\_op.hpp>}}
\DoxyCodeLine{00017\ \textcolor{preprocessor}{\#include\ <ginkgo/core/base/mpi.hpp>}}
\DoxyCodeLine{00018\ \textcolor{preprocessor}{\#include\ <ginkgo/core/distributed/base.hpp>}}
\DoxyCodeLine{00019\ \textcolor{preprocessor}{\#include\ <ginkgo/core/matrix/dense.hpp>}}
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00021\ }
\DoxyCodeLine{00022\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko}{gko}}\ \{}
\DoxyCodeLine{00023\ \textcolor{keyword}{namespace\ }experimental\ \{}
\DoxyCodeLine{00024\ \textcolor{keyword}{namespace\ }\doxymbox{\hyperlink{namespacegko_1_1experimental_1_1distributed}{distributed}}\ \{}
\DoxyCodeLine{00025\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00026\ }
\DoxyCodeLine{00027\ }
\DoxyCodeLine{00028\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00029\ \textcolor{keyword}{class\ }VectorCache;}
\DoxyCodeLine{00030\ }
\DoxyCodeLine{00031\ }
\DoxyCodeLine{00032\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00033\ }
\DoxyCodeLine{00034\ }
\DoxyCodeLine{00035\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ LocalIndexType,\ \textcolor{keyword}{typename}\ GlobalIndexType>}
\DoxyCodeLine{00036\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition}};}
\DoxyCodeLine{00037\ }
\DoxyCodeLine{00038\ }
\DoxyCodeLine{00066\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType\ =\ \textcolor{keywordtype}{double}>}
\DoxyCodeLine{00067\ \textcolor{keyword}{class\ }Vector}
\DoxyCodeLine{00068\ \ \ \ \ :\ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Vector<ValueType>>,}
\DoxyCodeLine{00069\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Vector<next\_precision<ValueType>>>,}
\DoxyCodeLine{00070\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00071\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Vector<next\_precision<ValueType,\ 2>>>,}
\DoxyCodeLine{00072\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00073\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00074\ \ \ \ \ \ \ \textcolor{keyword}{public}\ ConvertibleTo<Vector<next\_precision<ValueType,\ 3>>>,}
\DoxyCodeLine{00075\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00076\ \ \ \ \ \ \ \textcolor{keyword}{public}\ \doxymbox{\hyperlink{classgko_1_1EnableAbsoluteComputation}{EnableAbsoluteComputation}}<remove\_complex<Vector<ValueType>>>,}
\DoxyCodeLine{00077\ \ \ \ \ \ \ \textcolor{keyword}{public}\ DistributedBase\ \{}
\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }\doxymbox{\hyperlink{classgko_1_1EnablePolymorphicObject}{EnablePolymorphicObject}}<Vector,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}>;}
\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }Vector<\doxymbox{\hyperlink{namespacegko_a4ad20e5381a84928753efde0b2bc7f85}{to\_complex}}<ValueType>>;}
\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }Vector<\doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex}}<ValueType>>;}
\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }Vector<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType>>;}
\DoxyCodeLine{00082\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }detail::VectorCache<ValueType>;}
\DoxyCodeLine{00083\ \ \ \ \ GKO\_ASSERT\_SUPPORTED\_VALUE\_TYPE;}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ \textcolor{keyword}{public}:}
\DoxyCodeLine{00086\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Vector>::convert\_to;}
\DoxyCodeLine{00087\ \ \ \ \ \textcolor{keyword}{using\ }\doxymbox{\hyperlink{classgko_1_1EnableLinOp}{EnableLinOp}}<Vector>::move\_to;}
\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType>>>::convert\_to;}
\DoxyCodeLine{00089\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType>>>::move\_to;}
\DoxyCodeLine{00090\ }
\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keyword}{using\ }value\_type\ =\ ValueType;}
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{keyword}{using\ }absolute\_type\ =\ \doxymbox{\hyperlink{namespacegko_a107302a750bfa82a2107c77293f791c9}{remove\_complex<Vector>}};}
\DoxyCodeLine{00093\ \ \ \ \ \textcolor{keyword}{using\ }real\_type\ =\ absolute\_type;}
\DoxyCodeLine{00094\ \ \ \ \ \textcolor{keyword}{using\ }complex\_type\ =\ Vector<to\_complex<value\_type>>;}
\DoxyCodeLine{00095\ \ \ \ \ \textcolor{keyword}{using\ }local\_vector\_type\ =\ \doxymbox{\hyperlink{classgko_1_1matrix_1_1Dense}{gko::matrix::Dense<value\_type>}};}
\DoxyCodeLine{00096\ }
\DoxyCodeLine{00103\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a4fb7a6f4d348d9d90b0b810783d3a881}{create\_with\_config\_of}}(}
\DoxyCodeLine{00104\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ Vector>}}\ other);}
\DoxyCodeLine{00105\ }
\DoxyCodeLine{00106\ }
\DoxyCodeLine{00118\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adfbc64400fc2c689b649a7bef1da272c}{create\_with\_type\_of}}(}
\DoxyCodeLine{00119\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ Vector>}}\ other,\ std::shared\_ptr<const\ Executor>\ exec);}
\DoxyCodeLine{00120\ }
\DoxyCodeLine{00133\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a4b4a204a7aec74a9b7b3e0c16a6e861f}{create\_with\_type\_of}}(}
\DoxyCodeLine{00134\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ Vector>}}\ other,\ std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00135\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ global\_size,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ local\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00136\ }
\DoxyCodeLine{00151\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adc91ab266a69a9fb6b513a2e31323eac}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ int64>}}\&\ data,}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int64,\ int64>}}>\ partition);}
\DoxyCodeLine{00153\ }
\DoxyCodeLine{00154\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adc91ab266a69a9fb6b513a2e31323eac}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ int64>}}\&\ data,}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int32,\ int64>}}>\ partition);}
\DoxyCodeLine{00156\ }
\DoxyCodeLine{00157\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adc91ab266a69a9fb6b513a2e31323eac}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ int32>}}\&\ data,}
\DoxyCodeLine{00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int32,\ int32>}}>\ partition);}
\DoxyCodeLine{00159\ }
\DoxyCodeLine{00169\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a287880ccd4ad788623d3249589b2dc7f}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ int64>}}\&\ data,}
\DoxyCodeLine{00170\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int64,\ int64>}}>\ partition);}
\DoxyCodeLine{00171\ }
\DoxyCodeLine{00172\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adc91ab266a69a9fb6b513a2e31323eac}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ int64>}}\&\ data,}
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int32,\ int64>}}>\ partition);}
\DoxyCodeLine{00174\ }
\DoxyCodeLine{00175\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adc91ab266a69a9fb6b513a2e31323eac}{read\_distributed}}(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1matrix__data}{matrix\_data<ValueType,\ int32>}}\&\ data,}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param}}<\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Partition}{Partition<int32,\ int32>}}>\ partition);}
\DoxyCodeLine{00177\ }
\DoxyCodeLine{00178\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}}>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00179\ }
\DoxyCodeLine{00180\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType>}}>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00181\ }
\DoxyCodeLine{00182\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00183\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }Vector<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 2>>;}
\DoxyCodeLine{00184\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType,\ 2>>>::convert\_to;}
\DoxyCodeLine{00185\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType,\ 2>>>::move\_to;}
\DoxyCodeLine{00186\ }
\DoxyCodeLine{00187\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00188\ \ \ \ \ \ \ \ \ Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}}>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00189\ }
\DoxyCodeLine{00190\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 2>}}>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00191\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00192\ }
\DoxyCodeLine{00193\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00194\ \ \ \ \ \textcolor{keyword}{friend}\ \textcolor{keyword}{class\ }Vector<\doxymbox{\hyperlink{namespacegko_ada2119004771922e8f7fcb6910a0363c}{previous\_precision}}<ValueType,\ 3>>;}
\DoxyCodeLine{00195\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType,\ 3>>>::convert\_to;}
\DoxyCodeLine{00196\ \ \ \ \ \textcolor{keyword}{using\ }ConvertibleTo<Vector<next\_precision<ValueType,\ 3>>>::move\_to;}
\DoxyCodeLine{00197\ }
\DoxyCodeLine{00198\ \ \ \ \ \textcolor{keywordtype}{void}\ convert\_to(}
\DoxyCodeLine{00199\ \ \ \ \ \ \ \ \ Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}}>*\ result)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00200\ }
\DoxyCodeLine{00201\ \ \ \ \ \textcolor{keywordtype}{void}\ move\_to(Vector<\doxymbox{\hyperlink{namespacegko_aee37f85b217e5e26fe64207d41fa4bac}{next\_precision<ValueType,\ 3>}}>*\ result)\ \textcolor{keyword}{override};}
\DoxyCodeLine{00202\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00203\ }
\DoxyCodeLine{00204\ \ \ \ \ std::unique\_ptr<absolute\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_aa3de1addef14239271e4f360c1f046fb}{compute\_absolute}}()\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00205\ }
\DoxyCodeLine{00206\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a7c24911b281d56382a2c280e2cb8019e}{compute\_absolute\_inplace}}()\ \textcolor{keyword}{override};}
\DoxyCodeLine{00207\ }
\DoxyCodeLine{00212\ \ \ \ \ std::unique\_ptr<complex\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a93cd0c30e4c8493e9022d5542d2aee57}{make\_complex}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00213\ }
\DoxyCodeLine{00219\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a2b5f3cf497e1f2d91b184ce4b8193343}{make\_complex}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<complex\_type>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00220\ }
\DoxyCodeLine{00225\ \ \ \ \ std::unique\_ptr<real\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a3ecafb045e29392b864cae5808e950b9}{get\_real}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00226\ }
\DoxyCodeLine{00230\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a7dc76840ffc5b10a41ef0d835fb5ecf3}{get\_real}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<real\_type>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00231\ }
\DoxyCodeLine{00236\ \ \ \ \ std::unique\_ptr<real\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_ab628f642dc2c64d0951b7eb731af464f}{get\_imag}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00237\ }
\DoxyCodeLine{00242\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a9dbe5e69ef085b1a906543e62f1d4702}{get\_imag}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<real\_type>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00243\ }
\DoxyCodeLine{00249\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a4a172e7b6b6088918e0c7f8070d43204}{fill}}(ValueType\ value);}
\DoxyCodeLine{00250\ }
\DoxyCodeLine{00260\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_ad5e5752219717ff7360e48b794f86b3e}{scale}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha);}
\DoxyCodeLine{00261\ }
\DoxyCodeLine{00271\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_abda3edba7d097804468a7bfddd38e70f}{inv\_scale}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha);}
\DoxyCodeLine{00272\ }
\DoxyCodeLine{00282\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_acdafd131787d7c74478000ef8fdd82b8}{add\_scaled}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b);}
\DoxyCodeLine{00283\ }
\DoxyCodeLine{00292\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a7ff7ccd5ebf9042bf7840767032551f5}{sub\_scaled}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ alpha,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b);}
\DoxyCodeLine{00293\ }
\DoxyCodeLine{00303\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a81adfd6cfe1c585d60d65d95842bcf6a}{compute\_dot}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00304\ }
\DoxyCodeLine{00317\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_aaf7c602e9ef27c7d74a7735286b9ec90}{compute\_dot}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,}
\DoxyCodeLine{00318\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00319\ }
\DoxyCodeLine{00329\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a72ebeb082d05afea0fb30cfc0aaf3b30}{compute\_conj\_dot}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,}
\DoxyCodeLine{00330\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00331\ }
\DoxyCodeLine{00344\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_afb34c41d7cc90868903aed98a3ff74f9}{compute\_conj\_dot}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<const\ LinOp>}}\ b,\ \doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,}
\DoxyCodeLine{00345\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00346\ }
\DoxyCodeLine{00355\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a7e9df98ba640deae6e9c3a73aff8074d}{compute\_squared\_norm2}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00356\ }
\DoxyCodeLine{00368\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a2ee403e1957707f02e1ae4bcfa818ec3}{compute\_squared\_norm2}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00369\ }
\DoxyCodeLine{00378\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a1703cac44dc1591cafdd0a576cd55dbd}{compute\_norm2}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00379\ }
\DoxyCodeLine{00391\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a5e8478fa78a9a9de4ee3a641857416c0}{compute\_norm2}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00392\ }
\DoxyCodeLine{00400\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a95f68c957368afb25de478336dd3d615}{compute\_norm1}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00401\ }
\DoxyCodeLine{00413\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_ae49673363b8630674a5a2ce3fc649cc5}{compute\_norm1}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00414\ }
\DoxyCodeLine{00423\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a0b682993b33f1686d6b81477d2f05a5e}{compute\_mean}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00424\ }
\DoxyCodeLine{00436\ \ \ \ \ \textcolor{keywordtype}{void}\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a90beecf68243906d251ac4fe148efd39}{compute\_mean}}(\doxymbox{\hyperlink{classgko_1_1ptr__param}{ptr\_param<LinOp>}}\ result,\ \doxymbox{\hyperlink{classgko_1_1array}{array<char>}}\&\ tmp)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00437\ }
\DoxyCodeLine{00448\ \ \ \ \ value\_type\&\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a51e492ab5714013e8d9d3041bdf67143}{at\_local}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ col)\ \textcolor{keyword}{noexcept};}
\DoxyCodeLine{00449\ }
\DoxyCodeLine{00453\ \ \ \ \ value\_type\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a0a7fc0c15ccc227e55a4adc0a244f61a}{at\_local}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ row,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ col)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept};}
\DoxyCodeLine{00454\ }
\DoxyCodeLine{00469\ \ \ \ \ ValueType\&\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_ae0624723044ecb3c690a8daf79c5b762}{at\_local}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{noexcept};}
\DoxyCodeLine{00470\ }
\DoxyCodeLine{00474\ \ \ \ \ ValueType\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_aebbd31ab961257b915781c71a817ad9a}{at\_local}}(\doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ idx)\ \textcolor{keyword}{const}\ \textcolor{keyword}{noexcept};}
\DoxyCodeLine{00475\ }
\DoxyCodeLine{00481\ \ \ \ \ value\_type*\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a53719c22da01da00f61703285e4992eb}{get\_local\_values}}();}
\DoxyCodeLine{00482\ }
\DoxyCodeLine{00490\ \ \ \ \ \textcolor{keyword}{const}\ value\_type*\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a6f182db5f86018c07d6dc820c5302ce9}{get\_const\_local\_values}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00491\ }
\DoxyCodeLine{00497\ \ \ \ \ \textcolor{keyword}{const}\ local\_vector\_type*\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_adcb6f24d0faead09c7cef64e8efff86f}{get\_local\_vector}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00498\ }
\DoxyCodeLine{00506\ \ \ \ \ std::unique\_ptr<const\ real\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a43b4d0ff148a499ff2ea1ab692ccac93}{create\_real\_view}}()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00507\ }
\DoxyCodeLine{00511\ \ \ \ \ std::unique\_ptr<real\_type>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a2c9bbab2a7cacb50dc65b76f75bce8db}{create\_real\_view}}();}
\DoxyCodeLine{00512\ }
\DoxyCodeLine{00522\ \ \ \ \ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_aac78e04ed1fadd45b82fc627c97e8110}{create\_submatrix}}(\doxymbox{\hyperlink{structgko_1_1local__span}{local\_span}}\ rows,}
\DoxyCodeLine{00523\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1local__span}{local\_span}}\ columns,}
\DoxyCodeLine{00524\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size);}
\DoxyCodeLine{00525\ }
\DoxyCodeLine{00526\ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ get\_stride()\ const\ noexcept\ \{\ \textcolor{keywordflow}{return}\ local\_.get\_stride();\ \}}
\DoxyCodeLine{00527\ }
\DoxyCodeLine{00539\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a1125a62c4ae6ededd1c77029eb0df235}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00540\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00541\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ local\_size,}
\DoxyCodeLine{00542\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00543\ }
\DoxyCodeLine{00555\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a3cfb7aeef8d8cb4ce2f1099659d77efd}{create}}(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00556\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00557\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size\ =\ \{\},}
\DoxyCodeLine{00558\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ local\_size\ =\ \{\});}
\DoxyCodeLine{00559\ }
\DoxyCodeLine{00577\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a9b2acaf039918d545194fc6afd6dffe9}{create}}(}
\DoxyCodeLine{00578\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00579\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,\ std::unique\_ptr<local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00580\ }
\DoxyCodeLine{00599\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_aef6e2c923e595be31980d00101a35658}{create}}(}
\DoxyCodeLine{00600\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00601\ \ \ \ \ \ \ \ \ std::unique\_ptr<local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00602\ }
\DoxyCodeLine{00615\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<const\ Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a3f1392ddb35db1b66f425f9150b31a60}{create\_const}}(}
\DoxyCodeLine{00616\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00617\ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,}
\DoxyCodeLine{00618\ \ \ \ \ \ \ \ \ std::unique\_ptr<const\ local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00619\ }
\DoxyCodeLine{00632\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<const\ Vector>\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1distributed_1_1Vector_a906d935e7210712127823a0b95d96490}{create\_const}}(}
\DoxyCodeLine{00633\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00634\ \ \ \ \ \ \ \ \ std::unique\_ptr<const\ local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00635\ }
\DoxyCodeLine{00636\ \textcolor{keyword}{protected}:}
\DoxyCodeLine{00637\ \ \ \ \ Vector(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00638\ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ local\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride);}
\DoxyCodeLine{00639\ }
\DoxyCodeLine{00640\ \ \ \ \ \textcolor{keyword}{explicit}\ Vector(std::shared\_ptr<const\ Executor>\ exec,}
\DoxyCodeLine{00641\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size\ =\ \{\},}
\DoxyCodeLine{00642\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ local\_size\ =\ \{\});}
\DoxyCodeLine{00643\ }
\DoxyCodeLine{00644\ \ \ \ \ Vector(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00645\ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,\ std::unique\_ptr<local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00646\ }
\DoxyCodeLine{00647\ \ \ \ \ Vector(std::shared\_ptr<const\ Executor>\ exec,\ \doxymbox{\hyperlink{classgko_1_1experimental_1_1mpi_1_1communicator}{mpi::communicator}}\ comm,}
\DoxyCodeLine{00648\ \ \ \ \ \ \ \ \ \ \ \ std::unique\_ptr<local\_vector\_type>\ local\_vector);}
\DoxyCodeLine{00649\ }
\DoxyCodeLine{00650\ \ \ \ \ \textcolor{keywordtype}{void}\ resize(\doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size,\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ local\_size);}
\DoxyCodeLine{00651\ }
\DoxyCodeLine{00652\ \ \ \ \ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ LocalIndexType,\ \textcolor{keyword}{typename}\ GlobalIndexType>}
\DoxyCodeLine{00653\ \ \ \ \ \textcolor{keywordtype}{void}\ read\_distributed\_impl(}
\DoxyCodeLine{00654\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1device__matrix__data}{device\_matrix\_data<ValueType,\ GlobalIndexType>}}\&\ data,}
\DoxyCodeLine{00655\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ Partition<LocalIndexType,\ GlobalIndexType>*\ partition);}
\DoxyCodeLine{00656\ }
\DoxyCodeLine{00657\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00658\ }
\DoxyCodeLine{00659\ \ \ \ \ \textcolor{keywordtype}{void}\ apply\_impl(\textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*,}
\DoxyCodeLine{00660\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{classgko_1_1LinOp}{LinOp}}*)\ \textcolor{keyword}{const\ override};}
\DoxyCodeLine{00661\ }
\DoxyCodeLine{00668\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<Vector>\ create\_with\_same\_config()\ \textcolor{keyword}{const};}
\DoxyCodeLine{00669\ }
\DoxyCodeLine{00682\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<Vector>\ create\_with\_type\_of\_impl(}
\DoxyCodeLine{00683\ \ \ \ \ \ \ \ \ std::shared\_ptr<const\ Executor>\ exec,\ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ global\_size,}
\DoxyCodeLine{00684\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\&\ local\_size,\ \doxymbox{\hyperlink{namespacegko_a9579c98b1d85bf4ad02d7cb5b96fc771}{size\_type}}\ stride)\ \textcolor{keyword}{const};}
\DoxyCodeLine{00685\ }
\DoxyCodeLine{00689\ \ \ \ \ \textcolor{keyword}{virtual}\ std::unique\_ptr<Vector>\ create\_submatrix\_impl(\doxymbox{\hyperlink{structgko_1_1local__span}{local\_span}}\ rows,}
\DoxyCodeLine{00690\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1local__span}{local\_span}}\ columns,}
\DoxyCodeLine{00691\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \doxymbox{\hyperlink{structgko_1_1dim}{dim<2>}}\ global\_size);}
\DoxyCodeLine{00692\ }
\DoxyCodeLine{00693\ \textcolor{keyword}{private}:}
\DoxyCodeLine{00694\ \ \ \ \ local\_vector\_type\ local\_;}
\DoxyCodeLine{00695\ \ \ \ \ ::gko::detail::DenseCache<ValueType>\ host\_reduction\_buffer\_;}
\DoxyCodeLine{00696\ \ \ \ \ ::gko::detail::DenseCache<remove\_complex<ValueType>>\ host\_norm\_buffer\_;}
\DoxyCodeLine{00697\ \};}
\DoxyCodeLine{00698\ }
\DoxyCodeLine{00699\ }
\DoxyCodeLine{00700\ \}\ \ \textcolor{comment}{//\ namespace\ distributed}}
\DoxyCodeLine{00701\ \}\ \ \textcolor{comment}{//\ namespace\ experimental}}
\DoxyCodeLine{00702\ }
\DoxyCodeLine{00703\ }
\DoxyCodeLine{00704\ \textcolor{keyword}{namespace\ }detail\ \{}
\DoxyCodeLine{00705\ }
\DoxyCodeLine{00706\ }
\DoxyCodeLine{00707\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ TargetType>}
\DoxyCodeLine{00708\ \textcolor{keyword}{struct\ }conversion\_target\_helper;}
\DoxyCodeLine{00709\ }
\DoxyCodeLine{00710\ }
\DoxyCodeLine{00720\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ ValueType>}
\DoxyCodeLine{00721\ \textcolor{keyword}{struct\ }conversion\_target\_helper<experimental::distributed::Vector<ValueType>>\ \{}
\DoxyCodeLine{00722\ \ \ \ \ \textcolor{keyword}{using\ }target\_type\ =\ experimental::distributed::Vector<ValueType>;}
\DoxyCodeLine{00723\ \ \ \ \ \textcolor{keyword}{using\ }source\_type\ =}
\DoxyCodeLine{00724\ \ \ \ \ \ \ \ \ experimental::distributed::Vector<previous\_precision<ValueType>>;}
\DoxyCodeLine{00725\ }
\DoxyCodeLine{00726\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<target\_type>\ create\_empty(\textcolor{keyword}{const}\ source\_type*\ source)}
\DoxyCodeLine{00727\ \ \ \ \ \{}
\DoxyCodeLine{00728\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ target\_type::create(source-\/>get\_executor(),}
\DoxyCodeLine{00729\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ source-\/>get\_communicator());}
\DoxyCodeLine{00730\ \ \ \ \ \}}
\DoxyCodeLine{00731\ }
\DoxyCodeLine{00732\ \ \ \ \ \textcolor{comment}{//\ Allow\ to\ create\_empty\ of\ the\ same\ type}}
\DoxyCodeLine{00733\ \ \ \ \ \textcolor{comment}{//\ For\ distributed\ case,\ next<next<V>>\ will\ be\ V\ in\ the\ candidate\ list.}}
\DoxyCodeLine{00734\ \ \ \ \ \textcolor{comment}{//\ TODO:\ decide\ to\ whether\ to\ add\ this\ or\ add\ condition\ to\ the\ list}}
\DoxyCodeLine{00735\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<target\_type>\ create\_empty(\textcolor{keyword}{const}\ target\_type*\ source)}
\DoxyCodeLine{00736\ \ \ \ \ \{}
\DoxyCodeLine{00737\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ target\_type::create(source-\/>get\_executor(),}
\DoxyCodeLine{00738\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ source-\/>get\_communicator());}
\DoxyCodeLine{00739\ \ \ \ \ \}}
\DoxyCodeLine{00740\ }
\DoxyCodeLine{00741\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ ||\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00742\ \ \ \ \ \textcolor{keyword}{using\ }snd\_source\_type\ =}
\DoxyCodeLine{00743\ \ \ \ \ \ \ \ \ experimental::distributed::Vector<previous\_precision<ValueType,\ 2>>;}
\DoxyCodeLine{00744\ }
\DoxyCodeLine{00745\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<target\_type>\ create\_empty(}
\DoxyCodeLine{00746\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ snd\_source\_type*\ source)}
\DoxyCodeLine{00747\ \ \ \ \ \{}
\DoxyCodeLine{00748\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ target\_type::create(source-\/>get\_executor(),}
\DoxyCodeLine{00749\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ source-\/>get\_communicator());}
\DoxyCodeLine{00750\ \ \ \ \ \}}
\DoxyCodeLine{00751\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00752\ \textcolor{preprocessor}{\#if\ GINKGO\_ENABLE\_HALF\ \&\&\ GINKGO\_ENABLE\_BFLOAT16}}
\DoxyCodeLine{00753\ \ \ \ \ \textcolor{keyword}{using\ }trd\_source\_type\ =}
\DoxyCodeLine{00754\ \ \ \ \ \ \ \ \ experimental::distributed::Vector<previous\_precision<ValueType,\ 3>>;}
\DoxyCodeLine{00755\ }
\DoxyCodeLine{00756\ \ \ \ \ \textcolor{keyword}{static}\ std::unique\_ptr<target\_type>\ create\_empty(}
\DoxyCodeLine{00757\ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ trd\_source\_type*\ source)}
\DoxyCodeLine{00758\ \ \ \ \ \{}
\DoxyCodeLine{00759\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ target\_type::create(source-\/>get\_executor(),}
\DoxyCodeLine{00760\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ source-\/>get\_communicator());}
\DoxyCodeLine{00761\ \ \ \ \ \}}
\DoxyCodeLine{00762\ \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{00763\ \};}
\DoxyCodeLine{00764\ }
\DoxyCodeLine{00765\ }
\DoxyCodeLine{00766\ \}\ \ \textcolor{comment}{//\ namespace\ detail}}
\DoxyCodeLine{00767\ \}\ \ \textcolor{comment}{//\ namespace\ gko}}
\DoxyCodeLine{00768\ }
\DoxyCodeLine{00769\ }
\DoxyCodeLine{00770\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GINKGO\_BUILD\_MPI}}
\DoxyCodeLine{00771\ }
\DoxyCodeLine{00772\ }
\DoxyCodeLine{00773\ \textcolor{preprocessor}{\#endif\ \ }\textcolor{comment}{//\ GKO\_PUBLIC\_CORE\_DISTRIBUTED\_VECTOR\_HPP\_}}

\end{DoxyCode}
