第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Python 中調(diào)用 Pardiso 6

在 Python 中調(diào)用 Pardiso 6

慕虎7371278 2022-11-01 15:14:48
我正在嘗試在 Python 中使用 Pardiso 6 稀疏求解器庫(kù)。問(wèn)題是我似乎無(wú)法加載 Pardiso 共享對(duì)象 (SO)。這是我打電話時(shí)遇到的錯(cuò)誤import ctypespardiso = ctypes.CDLL(pardiso_so_address)Traceback (most recent call last):  File "test.py", line 27, in <module>    pardiso = ctypes.CDLL(lib720)  File "/home/amin/anaconda3/envs/idp/lib/python3.7/ctypes/__init__.py", line 364, in __init__    self._handle = _dlopen(self._name, mode)OSError: ./libpardiso600-GNU720-X86-64.so: undefined symbol: sgetrf_如果有人能對(duì)此有所了解,我將不勝感激。PS。我已經(jīng)聯(lián)系了 Pardiso 開(kāi)發(fā)人員,他們告訴我需要鏈接優(yōu)化的 BLAS,但我已經(jīng)通過(guò)conda.更新1:我mkl通過(guò)安裝conda,但沒(méi)有幫助。奇怪的是,我添加import scipy到標(biāo)題中并且錯(cuò)誤消失了。如果我添加import mkl. 因此,出于某種原因,除非scipy或mkl手動(dòng)導(dǎo)入,否則.so不知道lapack安裝存在。無(wú)論如何,現(xiàn)在又拋出了另一個(gè)錯(cuò)誤,我認(rèn)為這可能與libgfortran庫(kù)有關(guān)。這是錯(cuò)誤Traceback (most recent call last):  File "test.py", line 34, in <module>    pardiso = ctypes.CDLL(lib720)  File "/home/amin/anaconda3/envs/test/lib/python3.7/ctypes/__init__.py", line 364, in __init__    self._handle = _dlopen(self._name, mode)OSError: ./libpardiso600-GNU720-X86-64.so: undefined symbol: _gfortran_st_close我仔細(xì)檢查了是否libgfortran已安裝,確實(shí)是:(test) PyPardisoProject$ ldconfig -p | grep libgfortran    libgfortran.so.5 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgfortran.so.5    libgfortran.so.4 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgfortran.so.4我認(rèn)為類似的東西可能在起作用,即圖書(shū)館在那里但需要觸發(fā)(類似于import scipy似乎已經(jīng)為 所做的事情liblapack,但我不知道如何觸發(fā)它。注意:我在 Pardiso 網(wǎng)站上的 C 中找到了一個(gè)示例,并.so通過(guò)它測(cè)試了該文件$ gcc pardiso_sym.c -o pardiso_sym -L . -lpardiso600-GNU720-X86-64 -llapack -fopenmp -lgfortran$ OMP_NUM_THREADS=1 ./pardiso_sym 它沒(méi)有問(wèn)題(使用我機(jī)器上的現(xiàn)有庫(kù))。所以,.so作品,只是我不知道如何在 Python 中通知它它的依賴關(guān)系。更新 2:這是輸出ldd pardiso_sym:因此,我添加了公共路徑,即/lib/x86_64-linux-gnu和/lib64toPATH并通過(guò)以下方式再次運(yùn)行 Python 腳本:PATH=$PATH:/lib/x86_64-linux-gnu:/lib64 python padiso_script.py但同樣的錯(cuò)誤被拋出。我也嘗試添加LD_LIBRARY_PATH,但也沒(méi)有工作。
查看完整描述

3 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

Pardiso 6 sparse solver至少取決于 Lapack 函數(shù)sgetrf,該函數(shù)使用帶有行交換的部分旋轉(zhuǎn)來(lái)計(jì)算一般 M×N 矩陣 A 的 LU 分解。

從我們閱讀的內(nèi)容來(lái)看,libpardiso600-GNU720-X86-64.so它與共享的 Lapack 庫(kù)動(dòng)態(tài)鏈接。您需要提供一個(gè)包含一個(gè)實(shí)現(xiàn)的 PATH。

在啟動(dòng) Python 之前,我建議您使用LD_LIBRARY_PATH并包含您正在使用的 BLAS/Lapack 庫(kù)的路徑。它可以是 netlib 實(shí)現(xiàn)、ATLAS 實(shí)現(xiàn)或 MKL 實(shí)現(xiàn)。

LD_LIRARY_PATH=$LD_LIRARY_PATH:/my_path_to_lapack \python -c"import ctypes; pardiso = ctypes.CDLL(pardiso_so_address)"

如果你使用conda,你可以用命令安裝

conda install -c anaconda mkl

在這種情況下,安裝可能會(huì)直接解決問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

PATH訣竅是,您需要在加載 Pardiso 庫(kù)之前在 Python 腳本中顯式加載依賴項(xiàng),即lapack,blas和,而不是將依賴項(xiàng)的位置添加到 system 。gfortran此外,您必須將可選mode=ctypes.RLTD_GLOBAL參數(shù)顯式傳遞給ctypes.CDLL方法,以使依賴項(xiàng)全局可訪問(wèn),因此 Pardiso 可以訪問(wèn)它們。


import ctypes

import ctypes.util


shared_libs = ["lapack", "blas", "omp", "gfortran"]

for lib in shared_libs:

    # Fetch the proper name of the dependency

    libname = ctypes.util.find_library(lib)

    # Load the dependency and make it globally accessible

    ctypes.CDLL(libname, mode=ctypes.RTLD_GLOBAL)

# Finally, load the Pardiso library

pardiso = ctypes.CDLL(pardiso_so_address)

以我的經(jīng)驗(yàn),如果您在已安裝的conda環(huán)境中mkl,您只需將其gfortran列為依賴項(xiàng),其余的將自動(dòng)加載和訪問(wèn),在這種情況下 set shared_libs = ["gfortran"].


查看完整回答
反對(duì) 回復(fù) 2022-11-01
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

Pardiso 6 和 Intel MKL Pardiso 不兼容,因?yàn)樗鼈兙哂胁煌?API。您可以嘗試從系統(tǒng)路徑中刪除 MKL,添加 OpenBLAS,然后再次嘗試鏈接您的示例。



查看完整回答
反對(duì) 回復(fù) 2022-11-01
  • 3 回答
  • 0 關(guān)注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)