[問題] C++呼叫Fortran Blas函數, Column-Major

看板C_and_CPP (C/C++)作者 (不認識)時間14年前 (2011/11/01 02:23), 編輯推噓0(009)
留言9則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) LAPACK, BLAS, MKL 問題(Question): C++的矩陣存法預設是row-majored, 也就是說矩陣M[i][j]的i是 column index, j是row index. 但我現在想要呼叫BLAS庫中的函數, 例如dgemm, 我也聽說Fortran版的BLAS函數效率比Cblas還要高, 所 以想要用Fortran版的. 問題是Fortran版的矩陣預設是column-major, C++有沒有辦法一開始宣告矩陣的時候就讓它是column-major的呢? 我知道用boost::numeric::ublas::matrix<double,boost::numeric:: ublas::column_major>可宣告一個column-major的矩陣, 請問BLAS 本身有沒有"不要用到boost庫"來宣告column-major的矩陣的辦法? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.76.93.247

11/01 10:02, , 1F
不就自己 transpos 就好了嗎?
11/01 10:02, 1F

11/01 11:34, , 2F
blas 的參數不是有問你要不要 transpost 嗎...
11/01 11:34, 2F

11/01 14:09, , 3F
我記得c有一個非標準的函式庫.可以像word那樣.把左到右
11/01 14:09, 3F

11/01 14:09, , 4F
順序改成上到下.但是那本書是我學長的.也距離四五年了
11/01 14:09, 4F

11/01 14:10, , 5F
忘記了.
11/01 14:10, 5F

11/01 18:21, , 6F
如果每個矩陣都要transpose,這樣速度會很慢.
11/01 18:21, 6F

11/01 21:51, , 7F
fuha 提到 transpos 意思應是,index 重新自己算就好了
11/01 21:51, 7F

11/01 21:52, , 8F
多維不都可以從一維去轉換嗎?在compiler底層不也是要
11/01 21:52, 8F

11/01 21:52, , 9F
透過這些轉換公式去定址嗎?速度真會慢很多嗎?
11/01 21:52, 9F
文章代碼(AID): #1EhkUzGm (C_and_CPP)
文章代碼(AID): #1EhkUzGm (C_and_CPP)