In order to position the left-side label, I've used some zref magic from I want to indent the next line by an exactly specified position, and therefore the solution requires at least two compilations in order for the references to settle:

\documentclass{article}
\usepackage{amsmath,xparse,zref-savepos}
\makeatletter
% Some ideas taken from https://tex.stackexchange.com/a/69076/5764
\@ifundefined{zsaveposx}{\let\zsaveposx\zsavepos}{}
\newcounter{hposcnt}
\renewcommand*{\thehposcnt}{hpos\number\value{hposcnt}}
\NewDocumentCommand{\lplabel}{o m}{%
\stepcounter{hposcnt}%
\zsaveposx{\thehposcnt l}%
\zref@refused{\thehposcnt l}%
\zref@refused{hpos0l}%
\makebox[0pt][r]{\makebox[\dimexpr\zposx{\thehposcnt l}sp-\zposx{hpos0l}sp][l]{#2}}%
\IfNoValueF{#1}
{\def\@currentlabel{#2}\ltx@label{#1}}
}
\makeatother
\AtBeginDocument{\zsaveposx{hpos0l}}
\begin{document}
Consider the linear program~\ref{lp:primal} give by
\begin{alignat}{2}
\text{minimize} \quad \sum_{j=1}^n c_{j}x_{j} & & \quad & \nonumber \\
\lplabel[lp:primal]{(P)}\text{subject to} \quad \sum_{j=1}^n a_{ij}x_{j} & \geq b_i, & \quad & i = 1,\dots,m, \\
x_{j} & \geq 0, & \quad & j = 1,\dots,n.
\end{alignat}
\end{document}
The above example provides \lplabel[<label>]{<stuff>} that prints <stuff> against the left text block boundary and can be referenced using \ref{<label>} (if the first optional argument is supplied).
Here is a toned-down version which sets the LP label to the left of where it's placed by a distance of 2em:

\documentclass{article}
\usepackage{amsmath,xparse}
\makeatletter
\NewDocumentCommand{\lplabel}{o m}{%
\makebox[0pt][r]{#2\hspace*{2em}}%
\IfNoValueF{#1}
{\def\@currentlabel{#2}\ltx@label{#1}}
}
\makeatother
\begin{document}
Consider the linear program~\ref{lp:primal} give by
\begin{alignat}{2}
\text{minimize} \quad \sum_{j=1}^n c_{j}x_{j} & & \quad & \nonumber \\
\lplabel[lp:primal]{(P)}\text{subject to} \quad \sum_{j=1}^n a_{ij}x_{j} & \geq b_i, & \quad & i = 1,\dots,m, \\
x_{j} & \geq 0, & \quad & j = 1,\dots,n.
\end{alignat}
\end{document}
showframe provided the left/right boundary.
\makebox[0pt][r]{(P)\hspace*{<len>}}where you specify<len>(say50ptor2em...). You can place this just before\text{subject to}. It won't work in the same reference-style way, so you'll have to type(P)manually in the text, rather than using\ref{lp:primal}. – Werner Jun 25 '14 at 14:02