Предположим, что у вас есть JSON, подобный этому
[
{
"type": "qrcode",
"symbol": [
{
"seq": 0,
"data": "HelloWorld9887725216",
"error": null
}
]
}
]
Чтобы разобрать вышеупомянутый JSON в единстве, вы можете создать такую модель JSON.
[System.Serializable]
public class QrCodeResult
{
public QRCodeData[] result;
}
[System.Serializable]
public class Symbol
{
public int seq;
public string data;
public string error;
}
[System.Serializable]
public class QRCodeData
{
public string type;
public Symbol[] symbol;
}
И затем просто проанализировать следующим образом ...
var myObject = JsonUtility.FromJson("{\"result\":" + jsonString.ToString() + "}");
Теперь вы можете изменить JSON / CODE в соответствии с вашими потребностями. https://docs.unity3d.com/Manual/JSONSerialization.html
Если вы просто добавляете матрицы, это на самом деле не имеет значения. Вы даете ему альфа, Aij, бета и Cij. Он думает, что вы даете ему альфа, аджи, бета и Cji, и дает вам то, что, по его мнению, Cji = beta Cji + alpha Aji. Но это правильный Cij, насколько вы обеспокоены. Мое беспокойство - это когда вы начинаете переходить к вещам, которые имеют значение - как матричные продукты. Там, вероятно, не обойтись.
Но, к тому же, вы не хотите использовать GEMM для добавления матрицы - вы делаете совершенно бессмысленное умножение матрицы (что принимает ~ 20 0003 операций и много проходов через память) для operatinon, который должен требовать только 20 0002 операций и один проход! Относитесь к матрицам как к векторам в 20 000 ^ 2-long и используйте саксофон.
Матричное умножение - интенсивность полосы пропускания памяти, поэтому существует огромная (коэффициент 10x или 100x) разница в производительности между ее кодированием и настроенной версией. В идеале вы бы изменили структуры вашего кода, чтобы они соответствовали библиотеке. Если вы не можете, в этом случае вы можете управлять только с помощью тождеств линейной алгебры. Порядок C-vs-Fortran означает, что, когда вы проходите в A, CUBLAS «видит» AT (A транспонирование). Что хорошо, мы можем обойти это. Если вам нужно C = A.B, переходите в матрицы в обратном порядке, B.A. Затем библиотека видит (BT. AT) и вычисляет CT = (A.B) T; а затем, когда он пройдет обратно CT, вы получите (в своем заказе) C. Протестируйте его и посмотрите.
cublasgeam добавлен в CUBLAS5.0. Он вычисляет взвешенную сумму 2 необязательно транспонированных матриц