[英]CULA - using Python solve() within CULA
如何將Python的Solve()合並到Python CULA程序中? 我在用
LA = libculaC.solve()
結果:
Traceback (most recent call last):
File "culaTest.py", line 96, in <module>
LA = libculaC.solve(0)
File "/usr/lib/python2.7/ctypes/__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "/usr/lib/python2.7/ctypes/__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/local/cula/lib64/libcula_lapack.so: undefined symbol:
solve
liculaC和ctypes的任何組合都會給我類似的錯誤。 如何引入此功能? 我是否需要使用C函數(scanf)或其他工具? 謝謝。
這花了一段時間,但這是到目前為止。 必須使用ctypes並且必須將標准行專業轉換為列專業。 使用矩陣而不是數組,並始終保持數據類型的一致性。
import ctypes
from scipy import *
from scipy.linalg import *
import numpy as np
import sys
import csv
print "___________________________________________________________________________________________________"
libculaC=ctypes.CDLL('libcula_lapack.so',mode=ctypes.RTLD_GLOBAL)
libculaC.culaGetStatusString.restype=ctypes.c_char_p
info=libculaC.culaInitialize()
#Row major-normal form, but must be converted-('4 1;2 5')
Anp = np.matrix('4.0 2.0;1.0 5.0') #Column major
print "This is Anp: "
print Anp
print '___________END Anp______________'
#use ctypes to convert from Py to C
#2x2 matrix
Anp = Anp.astype(numpy.float32) #astype is array type for ctype
c_float_p = ctypes.POINTER(ctypes.c_float)
A1_p = Anp.ctypes.data_as(c_float_p)
# 2x1 matrix
B1 = np.matrix('5.0 ;7.0')
print "This is B1"
print B1
print '__________________B1 END______________________'
B1 = B1.astype(numpy.float32)
B1_p = B1.ctypes.data_as(c_float_p)
X=np.empty([2])
X=X.astype(numpy.float32)
X_p =X.ctypes.data_as(c_float_p)
print "This is X"
print X
print '__________________X END______________________'
info = 0
libculaC.culaSgesv(2,1,A1_p,2,X_p,B1_p,2) #libculaC.culaSgesv
a = np.fromiter(B1_p, dtype=np.float32, count=2)
a = np.reshape(a,(-1,2))
print "The solution returning from Sgesv: "
print a
print "-----------------------Program End----------------------------"
libculaC.culaShutdown()
輸出:這是Anp:
[[4. 2.] [1. 5.]]
___________END Anp______________
這是B1
[[5.] [7.]]
__________________B1 END______________________
這是X
[5. 7.]
__________________X END______________________
從Sgesv返回的解決方案:
[[1. 1.]]
-----------------------程序結束------------------------- ---
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.