diff options
Diffstat (limited to 'latest/structarmnn_1_1_q_lstm_queue_descriptor.html')
-rw-r--r-- | latest/structarmnn_1_1_q_lstm_queue_descriptor.html | 620 |
1 files changed, 310 insertions, 310 deletions
diff --git a/latest/structarmnn_1_1_q_lstm_queue_descriptor.html b/latest/structarmnn_1_1_q_lstm_queue_descriptor.html index e831200d9c..36bbdd2709 100644 --- a/latest/structarmnn_1_1_q_lstm_queue_descriptor.html +++ b/latest/structarmnn_1_1_q_lstm_queue_descriptor.html @@ -36,7 +36,7 @@ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/> <td id="projectalign" style="padding-left: 0.9em;"> <div id="projectname"> -  <span id="projectnumber">24.02</span> +  <span id="projectnumber">24.05</span> </div> </td> </tr> @@ -282,293 +282,293 @@ Additional Inherited Members</h2></td></tr> </table> </div><div class="memdoc"> -<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l03146">3146</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p> -<div class="fragment"><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span> {</div> -<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">"QLstmQueueDescriptor"</span>};</div> -<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>  </div> -<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  <span class="comment">// Validate number of inputs/outputs</span></div> -<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  ValidateNumInputs(workloadInfo, descriptorName, 3);</div> -<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  ValidateNumOutputs(workloadInfo, descriptorName, 3);</div> -<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>  </div> -<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>  <span class="comment">// Input/output tensor info</span></div> -<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div> -<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div> -<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div> -<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  </div> -<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div> -<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div> -<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div> -<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  </div> -<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  <span class="comment">// Supported types for various tensors in QLSTM</span></div> -<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  std::vector<DataType> inputOutputSupportedTypes =</div> -<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  {</div> -<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div> -<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  };</div> -<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  </div> -<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  std::vector<DataType> cellStateSupportedTypes =</div> -<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  {</div> -<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> -<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  };</div> -<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  </div> -<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  std::vector<DataType> weightsSupportedTypes =</div> -<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  {</div> -<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div> -<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  };</div> -<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  </div> -<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  std::vector<DataType> layerNormPeepholeWeightsSupportedTypes =</div> -<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  {</div> -<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> -<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  };</div> -<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  </div> -<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>  std::vector<DataType> biasSupportedTypes =</div> -<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>  {</div> -<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div> -<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>  };</div> -<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>  </div> -<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>  <span class="comment">// Validate types of input/output tensors</span></div> -<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>  </div> -<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>  ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  </div> -<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  <span class="comment">// Validate matching types of input/output tensors</span></div> -<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">"input"</span>, <span class="stringliteral">"outputStateIn"</span>);</div> -<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div> -<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  <span class="stringliteral">"outputStateIn"</span>, <span class="stringliteral">"outputStateOut"</span>);</div> -<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">"cellStateIn"</span>, <span class="stringliteral">"cellStateOut"</span>);</div> -<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  </div> -<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div> -<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div> -<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div> -<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div> -<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div> -<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  </div> -<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div> -<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">" input"</span>);</div> -<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateIn"</span>);</div> -<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateIn"</span>);</div> -<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  </div> -<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateOut"</span>);</div> -<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateOut"</span>);</div> -<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" output"</span>);</div> -<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  </div> -<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div> -<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">"InputToForgetWeights"</span>);</div> -<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToForgetWeights"</span>);</div> -<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  </div> -<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">"InputToCellWeights"</span>);</div> -<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToCellWeights"</span>);</div> -<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  </div> -<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">"InputToOutputWeights"</span>);</div> -<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToOutputWeights"</span>);</div> -<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  </div> -<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToForgetWeights"</span>);</div> -<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div> -<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <span class="stringliteral">" RecurrentToForgetWeights"</span>);</div> -<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>  </div> -<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToCellWeights"</span>);</div> -<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> -<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>  </div> -<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToOutputWeights"</span>);</div> -<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> -<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  </div> -<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div> -<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  </div> -<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToCellWeights"</span>);</div> -<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToOutputWeights"</span>);</div> -<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>  </div> -<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToForgeteights"</span>);</div> -<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToCellWeights"</span>);</div> -<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToOutputWeights"</span>);</div> -<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>  </div> -<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div> -<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">"ForgetGateBias"</span>);</div> -<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">" ForgetGateBias"</span>);</div> -<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  </div> -<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">"CellBias"</span>);</div> -<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>  <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">" CellBias"</span>);</div> -<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>  </div> -<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">"OutputGateBias"</span>);</div> -<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">" OutputGateBias"</span>);</div> -<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  </div> -<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>  <span class="comment">// Validate data types for MANDATORY bias tensors</span></div> -<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  </div> -<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div> -<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"cellBias"</span>);</div> -<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div> -<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"outputGateBias"</span>);</div> -<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  </div> -<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div> -<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &&</div> -<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div> -<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &&</div> -<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>  !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div> -<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  </div> -<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div> -<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  {</div> -<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> -<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  <span class="stringliteral">": InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present "</span></div> -<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <span class="stringliteral">"(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be "</span></div> -<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  <span class="stringliteral">"set appropriately."</span>);</div> -<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  }</div> -<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>  </div> -<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> -<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  {</div> -<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  <span class="comment">// Validate number of dimensions and number of elements</span></div> -<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToInputWeights"</span>);</div> -<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  </div> -<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div> -<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  <span class="stringliteral">" RecurrentToInputWeights"</span>);</div> -<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  </div> -<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">" InputGateBias"</span>);</div> -<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  </div> -<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  <span class="comment">// Validate data types</span></div> -<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToInputWeights"</span>);</div> -<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToInputWeights"</span>);</div> -<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div> -<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"inputGateBias"</span>);</div> -<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  }</div> -<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  </div> -<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div> -<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div> -<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> -<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> -<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> -<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div> -<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  </div> -<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div> -<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  {</div> -<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> -<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  <span class="stringliteral">": CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole "</span></div> -<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  <span class="stringliteral">"enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present "</span></div> -<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  <span class="stringliteral">"when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set "</span></div> -<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  <span class="stringliteral">"appropriately."</span>);</div> -<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  }</div> -<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  </div> -<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> -<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  {</div> -<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToForgetWeights"</span>);</div> -<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  </div> -<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>  <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToOutputWeights"</span>);</div> -<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  <span class="stringliteral">"cellToForgetWeight"</span>, <span class="stringliteral">"cellToOutputWeights"</span>);</div> -<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  </div> -<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> -<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>  {</div> -<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToInputWeights"</span>);</div> -<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>  <span class="stringliteral">"cellToForgetWeights"</span>, <span class="stringliteral">"cellToInputWeights"</span>);</div> -<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>  }</div> -<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>  }</div> -<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  </div> -<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>  <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div> -<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div> -<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div> -<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> -<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div> -<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div> -<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>  </div> -<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>  <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div> -<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>  {</div> -<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> -<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>  <span class="stringliteral">": InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights "</span></div> -<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>  <span class="stringliteral">"and CellLayerNormWeights should all be present (Layer Norm enabled) or not "</span></div> -<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>  <span class="stringliteral">"be present at all (Layer Norm disabled). InputLayerNormWeights should "</span></div> -<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>  <span class="stringliteral">"only be present when Layer Norm is enabled and CIFG is disabled. "</span></div> -<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>  <span class="stringliteral">"m_Parameters.m_LayerNormEnabled should be set appropriately."</span>);</div> -<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>  }</div> -<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>  </div> -<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> -<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>  {</div> -<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>  <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" forgetLayerNormWeights"</span>);</div> -<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>  ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>  </div> -<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>  <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" cellLayerNormWeights"</span>);</div> -<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"cellLayerNormWeights"</span>);</div> -<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>  </div> -<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>  <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" outputLayerNormWeights"</span>);</div> -<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"outputLayerNormWeights"</span>);</div> -<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>  </div> -<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> -<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>  {</div> -<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>  <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" inputLayerNormWeights"</span>);</div> -<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div> -<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"inputLayerNormWeights"</span>);</div> -<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>  }</div> -<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>  }</div> -<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>  </div> -<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>  <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div> -<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>  <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div> -<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>  ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> -<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> -<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div> -<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>  </div> -<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>  <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div> -<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>  {</div> -<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> -<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>  <span class="stringliteral">": If projection is enabled, ProjectionWeights should be present and "</span></div> -<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>  <span class="stringliteral">"ProjectionBias is optional. If projection is disabled, neither "</span></div> -<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>  <span class="stringliteral">"ProjectionWeights nor ProjectionBias should be present."</span>);</div> -<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>  }</div> -<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>  </div> -<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div> -<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>  {</div> -<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>  <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">"ProjectionWeights"</span>);</div> -<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>  ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>  </div> -<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div> -<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>  {</div> -<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>  <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> -<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">"ProjectionBias"</span>);</div> -<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>  ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div> -<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>  }</div> -<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>  </div> -<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>  }</div> -<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &&</div> -<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>  outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div> -<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> -<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>  <span class="stringliteral">": If projection is disabled, output quantization info (scale, offset) "</span></div> -<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>  <span class="stringliteral">"should match HiddenStateScale and HiddenStateZeroPoint."</span>);</div> -<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>  }</div> -<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>  </div> -<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span> }</div> +<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l03148">3148</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p> +<div class="fragment"><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> {</div> +<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">"QLstmQueueDescriptor"</span>};</div> +<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  </div> +<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  <span class="comment">// Validate number of inputs/outputs</span></div> +<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>  ValidateNumInputs(workloadInfo, descriptorName, 3);</div> +<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>  ValidateNumOutputs(workloadInfo, descriptorName, 3);</div> +<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  </div> +<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  <span class="comment">// Input/output tensor info</span></div> +<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div> +<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div> +<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div> +<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  </div> +<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div> +<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div> +<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div> +<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  </div> +<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="comment">// Supported types for various tensors in QLSTM</span></div> +<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  std::vector<DataType> inputOutputSupportedTypes =</div> +<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  {</div> +<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div> +<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  };</div> +<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  </div> +<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  std::vector<DataType> cellStateSupportedTypes =</div> +<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  {</div> +<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> +<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  };</div> +<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  </div> +<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  std::vector<DataType> weightsSupportedTypes =</div> +<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  {</div> +<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div> +<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  };</div> +<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  </div> +<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>  std::vector<DataType> layerNormPeepholeWeightsSupportedTypes =</div> +<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  {</div> +<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div> +<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>  };</div> +<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>  </div> +<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  std::vector<DataType> biasSupportedTypes =</div> +<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>  {</div> +<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>  <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div> +<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>  };</div> +<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  </div> +<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  <span class="comment">// Validate types of input/output tensors</span></div> +<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>  ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>  </div> +<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  </div> +<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  <span class="comment">// Validate matching types of input/output tensors</span></div> +<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">"input"</span>, <span class="stringliteral">"outputStateIn"</span>);</div> +<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div> +<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  <span class="stringliteral">"outputStateIn"</span>, <span class="stringliteral">"outputStateOut"</span>);</div> +<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">"cellStateIn"</span>, <span class="stringliteral">"cellStateOut"</span>);</div> +<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  </div> +<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div> +<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div> +<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div> +<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div> +<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div> +<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  </div> +<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div> +<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">" input"</span>);</div> +<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateIn"</span>);</div> +<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateIn"</span>);</div> +<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  </div> +<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" outputStateOut"</span>);</div> +<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">" cellStateOut"</span>);</div> +<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">" output"</span>);</div> +<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  </div> +<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div> +<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">"InputToForgetWeights"</span>);</div> +<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToForgetWeights"</span>);</div> +<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  </div> +<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">"InputToCellWeights"</span>);</div> +<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToCellWeights"</span>);</div> +<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  </div> +<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">"InputToOutputWeights"</span>);</div> +<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToOutputWeights"</span>);</div> +<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  </div> +<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToForgetWeights"</span>);</div> +<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div> +<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  <span class="stringliteral">" RecurrentToForgetWeights"</span>);</div> +<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  </div> +<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>  <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>  </div> +<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">"RecurrentToOutputWeights"</span>);</div> +<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>  <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">" RecurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  </div> +<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div> +<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  </div> +<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToCellWeights"</span>);</div> +<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToOutputWeights"</span>);</div> +<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>  </div> +<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToForgeteights"</span>);</div> +<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToCellWeights"</span>);</div> +<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToOutputWeights"</span>);</div> +<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>  </div> +<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div> +<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">"ForgetGateBias"</span>);</div> +<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">" ForgetGateBias"</span>);</div> +<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>  </div> +<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">"CellBias"</span>);</div> +<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>  <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">" CellBias"</span>);</div> +<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  </div> +<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>  ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">"OutputGateBias"</span>);</div> +<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">" OutputGateBias"</span>);</div> +<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  </div> +<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  <span class="comment">// Validate data types for MANDATORY bias tensors</span></div> +<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  </div> +<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div> +<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"cellBias"</span>);</div> +<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div> +<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"outputGateBias"</span>);</div> +<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  </div> +<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div> +<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &&</div> +<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>  !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div> +<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &&</div> +<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div> +<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  </div> +<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div> +<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  {</div> +<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  <span class="stringliteral">": InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present "</span></div> +<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  <span class="stringliteral">"(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be "</span></div> +<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>  <span class="stringliteral">"set appropriately."</span>);</div> +<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  }</div> +<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  </div> +<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  {</div> +<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  <span class="comment">// Validate number of dimensions and number of elements</span></div> +<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">" InputToInputWeights"</span>);</div> +<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  </div> +<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div> +<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  <span class="stringliteral">" RecurrentToInputWeights"</span>);</div> +<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  </div> +<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">" InputGateBias"</span>);</div> +<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  </div> +<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  <span class="comment">// Validate data types</span></div> +<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"inputToInputWeights"</span>);</div> +<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="stringliteral">"inputToForgetWeights"</span>, <span class="stringliteral">"recurrentToInputWeights"</span>);</div> +<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div> +<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  <span class="stringliteral">"forgetGateBias"</span>, <span class="stringliteral">"inputGateBias"</span>);</div> +<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  }</div> +<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  </div> +<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>  <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div> +<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div> +<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> +<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> +<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div> +<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div> +<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  </div> +<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div> +<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  {</div> +<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  <span class="stringliteral">": CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole "</span></div> +<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  <span class="stringliteral">"enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present "</span></div> +<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  <span class="stringliteral">"when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set "</span></div> +<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  <span class="stringliteral">"appropriately."</span>);</div> +<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  }</div> +<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  </div> +<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div> +<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  {</div> +<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToForgetWeights"</span>);</div> +<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>  ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  </div> +<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToOutputWeights"</span>);</div> +<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  <span class="stringliteral">"cellToForgetWeight"</span>, <span class="stringliteral">"cellToOutputWeights"</span>);</div> +<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>  </div> +<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  {</div> +<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">" cellToInputWeights"</span>);</div> +<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>  ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>  <span class="stringliteral">"cellToForgetWeights"</span>, <span class="stringliteral">"cellToInputWeights"</span>);</div> +<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  }</div> +<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>  }</div> +<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  </div> +<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div> +<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>  <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div> +<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>  (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div> +<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>  && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> +<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>  || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div> +<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>  && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div> +<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>  </div> +<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>  <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div> +<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>  {</div> +<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>  <span class="stringliteral">": InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights "</span></div> +<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>  <span class="stringliteral">"and CellLayerNormWeights should all be present (Layer Norm enabled) or not "</span></div> +<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>  <span class="stringliteral">"be present at all (Layer Norm disabled). InputLayerNormWeights should "</span></div> +<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>  <span class="stringliteral">"only be present when Layer Norm is enabled and CIFG is disabled. "</span></div> +<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>  <span class="stringliteral">"m_Parameters.m_LayerNormEnabled should be set appropriately."</span>);</div> +<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>  }</div> +<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>  </div> +<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div> +<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>  {</div> +<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>  <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" forgetLayerNormWeights"</span>);</div> +<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>  ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>  </div> +<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>  <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" cellLayerNormWeights"</span>);</div> +<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"cellLayerNormWeights"</span>);</div> +<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>  </div> +<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>  <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" outputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"outputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>  </div> +<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>  <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div> +<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>  {</div> +<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>  <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">" inputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>  ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div> +<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>  <span class="stringliteral">"forgetLayerNormWeights"</span>, <span class="stringliteral">"inputLayerNormWeights"</span>);</div> +<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>  }</div> +<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>  }</div> +<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>  </div> +<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>  <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div> +<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>  <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div> +<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>  ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> +<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div> +<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>  (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> && <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> && <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div> +<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>  </div> +<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>  <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div> +<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>  {</div> +<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>  <span class="stringliteral">": If projection is enabled, ProjectionWeights should be present and "</span></div> +<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>  <span class="stringliteral">"ProjectionBias is optional. If projection is disabled, neither "</span></div> +<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>  <span class="stringliteral">"ProjectionWeights nor ProjectionBias should be present."</span>);</div> +<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>  }</div> +<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>  </div> +<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div> +<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>  {</div> +<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>  <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">"ProjectionWeights"</span>);</div> +<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>  ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>  </div> +<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>  <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div> +<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>  {</div> +<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>  <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-><a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div> +<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>  <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">"ProjectionBias"</span>);</div> +<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>  ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div> +<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>  }</div> +<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>  </div> +<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>  }</div> +<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &&</div> +<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>  outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div> +<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>  <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div> +<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>  <span class="stringliteral">": If projection is disabled, output quantization info (scale, offset) "</span></div> +<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>  <span class="stringliteral">"should match HiddenStateScale and HiddenStateZeroPoint."</span>);</div> +<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>  }</div> +<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>  </div> +<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span> }</div> </div><!-- fragment --> -<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00478">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.html#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00602">QLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00608">QLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00598">QLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00597">QLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00599">QLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01418">QLstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00601">QLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00607">QLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01436">QLstmDescriptor::m_HiddenStateScale</a>, <a class="el" href="_descriptors_8hpp_source.html#l01434">QLstmDescriptor::m_HiddenStateZeroPoint</a>, <a class="el" href="_workload_data_8hpp_source.html#l00600">QLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00606">QLstmQueueDescriptor::m_InputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00591">QLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00590">QLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00589">QLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00592">QLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01424">QLstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00603">QLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00609">QLstmQueueDescriptor::m_OutputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00066">QueueDescriptorWithParameters< QLstmDescriptor >::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l01420">QLstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00605">QLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l01422">QLstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00604">QLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00595">QLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00594">QLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00593">QLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00596">QLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.html#l00435">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p> +<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00482">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.html#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00602">QLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00608">QLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00598">QLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00597">QLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00599">QLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01418">QLstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00601">QLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00607">QLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01436">QLstmDescriptor::m_HiddenStateScale</a>, <a class="el" href="_descriptors_8hpp_source.html#l01434">QLstmDescriptor::m_HiddenStateZeroPoint</a>, <a class="el" href="_workload_data_8hpp_source.html#l00600">QLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00606">QLstmQueueDescriptor::m_InputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00591">QLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00590">QLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00589">QLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00592">QLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01424">QLstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00603">QLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00609">QLstmQueueDescriptor::m_OutputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00066">QueueDescriptorWithParameters< QLstmDescriptor >::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l01420">QLstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00605">QLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l01422">QLstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00604">QLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00595">QLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00594">QLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00593">QLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00596">QLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.html#l00436">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p> </div> </div> @@ -587,7 +587,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00602">602</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -605,7 +605,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00608">608</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -623,7 +623,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00598">598</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -641,7 +641,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00597">597</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -659,7 +659,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00599">599</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -677,7 +677,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00601">601</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -695,7 +695,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00607">607</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -713,7 +713,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00600">600</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -731,7 +731,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00606">606</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -749,7 +749,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00591">591</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -767,7 +767,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00590">590</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -785,7 +785,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00589">589</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -803,7 +803,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00592">592</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -821,7 +821,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00603">603</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -839,7 +839,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00609">609</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -857,7 +857,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00605">605</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -875,7 +875,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00604">604</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -893,7 +893,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00595">595</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -911,7 +911,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00594">594</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -929,7 +929,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00593">593</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -947,7 +947,7 @@ Additional Inherited Members</h2></td></tr> <p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00596">596</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p> -<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p> +<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p> </div> </div> @@ -989,7 +989,7 @@ Additional Inherited Members</h2></td></tr> <div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00597">WorkloadData.hpp:597</a></div></div> <div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_html_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">armnn::QLstmDescriptor::m_LayerNormEnabled</a></div><div class="ttdeci">bool m_LayerNormEnabled</div><div class="ttdoc">Enable/disable layer normalization.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01424">Descriptors.hpp:1424</a></div></div> <div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00602">WorkloadData.hpp:602</a></div></div> -<div class="ttc" id="astructarmnn_1_1_queue_descriptor_html_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.html#l00435">WorkloadData.cpp:435</a></div></div> +<div class="ttc" id="astructarmnn_1_1_queue_descriptor_html_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.html#l00436">WorkloadData.cpp:436</a></div></div> <div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00591">WorkloadData.hpp:591</a></div></div> <div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_html_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">armnn::QLstmDescriptor::m_PeepholeEnabled</a></div><div class="ttdeci">bool m_PeepholeEnabled</div><div class="ttdoc">Enable/disable peephole.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01420">Descriptors.hpp:1420</a></div></div> <div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00608">WorkloadData.hpp:608</a></div></div> @@ -998,7 +998,7 @@ Additional Inherited Members</h2></td></tr> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.html">QLstmQueueDescriptor</a></li> - <li class="footer">Generated on Wed Feb 14 2024 16:36:24 for Arm NN by + <li class="footer">Generated on Thu May 16 2024 09:31:58 for Arm NN by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li> </ul> |