繁体   English   中英

使用Accelerate Framework在Swift中出现cblas_dgemm问题

[英]cblas_dgemm issues in Swift using Accelerate Framework

我想在Swift中将两个矩阵相乘。 我在此线程中找到了一个很好的答复: 使用32位和64位Accelerate框架快速进行矩阵乘法 ,其中有人告诉我使用cblas_dgemm将两个矩阵相乘。 这是我的代码:

import SpriteKit
import Accelerate


class GetMatrix {
var cols:Int, rows:Int
var matrix:[Double]


init(cols:Int, rows:Int) {
    self.cols = cols
    self.rows = rows
    matrix = Array(count:cols*rows, repeatedValue:0.0)
}

subscript(col:Int, row:Int) -> Double {
    get {
        return matrix[cols * row + col]
    }
    set {
        matrix[cols*row+col] = newValue
    }
}

func colCount() -> Int {
    return self.cols
}

func rowCount() -> Int {
    return self.rows
}
}
class GameScene: SKScene {


var firstMatrix = GetMatrix(cols: 18, rows: 18)
var secondMatrix = GetMatrix(cols: 18, rows: 18)
var answerMatrix = GetMatrix(cols: 18, rows: 18)


override func didMoveToView(view: SKView) {

    for c in 0...17 {
        for r in 0...17 {
            firstMatrix[r,c] = 2.0
        }
    }
    for c in 0...17 {
        for r in 0...17 {
            secondMatrix[r,c] = 1.0
        }
    }
    for c in 0...17 {
        for r in 0...17 {
            answerMatrix[r,c] = 0.0
        }
    }


    cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 18, 18, 18, 1.0, firstMatrix, 18, secondMatrix, 18, 0.0, answerMatrix, 18) // Error in this line



}


}

该代码不会生成。 cblas_dgemm所在的行有此问题。 它说“ GetMatrix”不能转换为“ UnsafePointer”。请帮助,我该如何解决?

var firstMatrix = GetMatrix(cols: 18, rows: 18)
var secondMatrix = GetMatrix(cols: 18, rows: 18)
var answerMatrix = GetMatrix(cols: 18, rows: 18)
.
.
.
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 18, 18, 18, 1.0, firstMatrix, 18, secondMatrix, 18, 0.0, answerMatrix, 18) 

您的代码将GetMatrix类传递给cblas_dgemm。 您将必须传递对实际矩阵的引用。 就像是

cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, 18, 18, 18, 1.0, &firstMatrix.matrix, 18, &secondMatrix.matrix, 18, 0.0, &answerMatrix.matrix, 18) 

(前提是其他参数正确)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM