ããã«ã¡ã¯ã
æè¿ãWindowsã€ã³ã¹ã¿ã³ã¹ïŒ vmImage: 'windows-2019'
ïŒã䜿çšããŠAzureãã€ãã©ã€ã³ã§ãããžã§ã¯ãã®ãã¹ããå®è¡ãããšãã«åé¡ãçºçãå§ããŸããã ããå°ãæ·±ãæãäžããŸãïŒãã®äŒè©±https://developercommunity.visualstudio.com/content/problem/1102472/azure-pipeline-error-with-windows-vm.html?childToView=1119179#comment-1119179ãåç
§ïŒåé¡ã¯ãæã
ã¯ã€ã³ã¹ããŒã«æã«å§ãŸã£numpy 1.19.0
ã®ä»£ããã«numpy 1.8.5
-ç§ã¯ãããèŠãããšãã§ããnumpy 1.19.0
6æ20æ¥ã«ã¯ãPyPIã«çœ®ããããããã¯ç§ãã¡ã®ãã¹ãã倱æãå§ããé ã§ãããŸãã 以åã«æåãããã«ãã®ããã«ãç°å¢ã«numpy 1.8.5
ãã€ã³ã¹ããŒã«ããããã«åŒ·å¶ãããšãåé¡ã解決ããããã§ãã
ããã¯ä»ã®äººã芳å¯ãå§ããå¯èœæ§ããããã®ã ãšæãã®ã§ããããå ±åãããã£ãã ãã§ãïŒãã ããnumpyãåé¡ã§ãããã©ãããç¹å®ããã®ã¯éåžžã«å°é£ã§ã...ãŸãã¯å°ãªããšãããã§ããããã«èŠããŸãïŒã
ããªãããã®è¿ä¿¡ã楜ãã¿ã«ããŠããŸãã
åé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã«åœ¹ç«ã€å Žåã¯ãAzureãã€ãã©ã€ã³ã®èšå®ã«å€æŽãå ããŠãã ããã
ãã®ãã«ãã¯ãnumpy 1.18.5ã§æ£åžžã«æ©èœããŸãïŒ https ïŒ//dev.azure.com/matteoravasi/PyLops/_build/resultsïŒbuildId = 46ïŒview = logsïŒj = 011e1ec8-6569-5e69-4f06-baf193d1351e
numpy 1.19.0ã䜿çšããåãã³ãããã§ã®ãã«ãã¯å€±æããŸãïŒ https ïŒ//dev.azure.com/matteoravasi/PyLops/_build/resultsïŒbuildId = 43ïŒview = results
ãšã©ãŒã¯éåžžã«äžå¯è§£ã§ãããäžèšã§èª¬æããããšã®æ¹ãé¢é£æ§ãé«ããšæããŸãã ããã«ãšã«ãããããŸãïŒ
2020-07-06T13:56:01.6879900Z Windows fatal exception: Current thread 0xaccess violation00001798
2020-07-06T13:56:01.6880280Z
2020-07-06T13:56:01.6880589Z (most recent call first):
2020-07-06T13:56:01.6880973Z File "<__array_function__ internals>", line 6 in vdot
2020-07-06T13:56:05.3412520Z ##[debug]Exit code: -1073741819
ããã¯äžè²«ããŠå€±æããŸããããããšãããŸã«ãã倱æããŸãããïŒ ããŒã«ã«ãã·ã³ã§ãããžã§ã¯ãããã«ãããããšããWindowséçºè ã¯ããŸããïŒ
ããã«ã¡ã¯ã
ããããšãïŒ
äžè²«ããŠäœåºŠã倱æããŸããããã®æç¹ã§ãAzureéçºè ã«è³ªåããããšãèããŸããïŒæåã®æšæž¬ã§ã¯ãVMã®ã»ããã¢ããã§äœããå€æŽãããå¯èœæ§ããããŸãïŒã
ãã®ãªã³ã¯ã«ã¯ãåé¡ãåä»ã§ããå¯èœæ§ãããããšãçºèŠããMicrosoftéçºè ãšã®è©±ãåãããããŸãïŒ https ïŒ
æ®å¿µãªãããããŒã«ã«ã®Windowsãã·ã³ã§ãããžã§ã¯ãããã«ãã§ãã人ã¯èª°ãããŸãã:(
次ã«ãåçŸããããã®æ確ãªäžé£ã®æé ãå¿ èŠã«ãªããŸã
azure-pipelines.ymlã¯æ©èœããŸããïŒ
ãããç§ãã¡ã䜿çšããŠãããã®ã§ãïŒhttps://github.com/equinor/pylops/blob/master/azure-pipelines.ymlïŒçŸæç¹ã§ã³ã¡ã³ãã¢ãŠããããŠããŸã... Python3.7ã䜿çšããããªãæšæºçãªã»ããã¢ããã§ããããšãããããŸããrequirements-dev.txtãã¡ã€ã«ïŒhttps://github.com/equinor/pylops/blob/master/requirements-dev.txtïŒã«äŸåé¢ä¿ãã€ã³ã¹ããŒã«ããŠããããã¹ããå®è¡ããŸãã
ãã§ã«è¿°ã¹ãããã«ããããã³ã¡ã³ãã¢ãŠãããŠnumpy 1.18.5ã匷å¶çã«å®è¡ãããšãæ°ãã1.19ãå£ããããã«èŠããŸã
Azureã§å®è¡ãããŠããã€ã¡ãŒãžã®WindowsããŒãžã§ã³ã®ã¡ãžã£ãŒããŒãžã§ã³ãšãã€ããŒããŒãžã§ã³ã¯äœã§ããïŒ ã€ãŸãã systeminfo
ã¯OS Version
äœãåºåããŸããïŒ
Azureãã€ãã©ã€ã³ã§äœ¿çšãããŠããAzureVMã®è©³çŽ°ã«ã€ããŠã¯ã https ïŒ ïŒtabs = yamlããã³ãžã®ãªã³ã¯ãåç §ããŠhttps://github.com/actions/virtual-environments/blob/master/images/win/Windows2019-Readme.md
Azureãã€ãã©ã€ã³ã§systeminfo
ãå®è¡ããæ¹æ³ãããããŸãããäœãææ¡ã¯ãããŸããïŒ
ã³ãã³ãã©ã€ã³ããå®è¡ãããåºåãã¿ãŒããã«ã«ãã³ããããããã³ãã³ããšããŠå®è¡ã«è¿œå ã§ããŸãã
CIã§å®è¡ãããPRã§ãããå®è¡ããŠããã®å 容ã確èªã§ããŸãã WindowsãšpipNumPyã®19041ãã«ãã«åé¡ããã£ãã®ã§ãç§ã¯å°ããŠããŸãã
çãã¯2çªç®ã®ãªã³ã¯ã«ãããŸããïŒ
OSããŒãžã§ã³ïŒ10.0.17763ãã«ã1282
ã ããç§ã®èãã¯å®ãçµã°ãªãã
Windowsçšã®ææ°ã®ããããã€ãŒã«ã«ããã€ãã®åé¡ãããããšãç¥ã£ãŠãããšããªãã¯èšããŸããããã¯ããããããã«é¢é£ããŠããŸããïŒ
ããã¯å®éã«ã¯ïŒããããïŒ19041幎ã«å°å ¥ãããWindowsã®ãã°ã§ããããããããªãã¯ã¯ããã«å€ãããŒãžã§ã³ã䜿çšããŠããã®ã§ãããã¯åé¡ã§ã¯ãããŸããã
Conda NumPyã«ã¯åœ±é¿ãããWindowsãšOpenBlasã«åé¡ããããšæããããããPipNumPyã®ã¿ã«åœ±é¿ããŸãã
ãªãã»ã©ïŒïŒ1.9.1ããªãªãŒã¹ããããšããã¡ãŒã«ãåãåããŸããã Azureãã€ãã©ã€ã³ãåããªã¬ãŒããŠãææ°ããŒãžã§ã³ãã€ã³ã¹ããŒã«ãããããæ©èœãããã©ããã確èªããŸãã
æ®å¿µãªããã1.19.1ã§ã¯ãŸã 倱æããŸãhttps://dev.azure.com/matteoravasi/PyLops/_build/results?buildId=45&view=logs&j=50448a2f-9550-51a0-b6c4-5ec64224dd81&t=a6a6804f-7af1-5f53-b76b-b46f500d6778 :(
OpenBlasã®ãã°ã
ãããåçŸäŸã§ãïŒ
import numpy as np
nr = 12000
v = np.random.randn(nr) + 1j * np.random.randn(nr)
np.vdot(v, v)
# also access violations
v @ v
# also access violations
ã·ã³ãã«ãªãã®ãããã°æ å ±ã¯æ¬¡ã®ãšããã§ãã
Exception thrown at 0x0000000068DBB8F0 (libopenblas.NOIJJG62EMASZI6NYURL6JBKM4EVBGM7.gfortran-win_amd64.dll)
in python.exe: 0xC0000005: Access violation reading location 0x0000000000000000.
ãã°ãããªã¬ãŒããã«ã¯ãé åãããªã倧ããããå¿ èŠãããããšã«æ³šæããŠãã ããïŒ10kãã¹ã12kãã¹ã§ã¯ãããŸããïŒã
ã¯ã€ãã¯ãã§ãã¯ïŒ
$env:OPENBLAS_VERBOSE=2
$env:OPENBLAS_CORETYPE=Prescott
åæ ŒããŸãããããã©ã«ãã®ã«ãŒãã«ïŒ Zen
ïŒãããã³Haswell
ãšSandybridge
äž¡æ¹ã«ãã¢ã¯ã»ã¹éåããããŸãã
ãã¶ããæ°ããOpenBLAS0.3.10ã䜿çšããnumpyHEADã倱æããããšã確èªãã䟡å€ããããŸãã ãŸãã¯å€åããªãã¯ãã§ã«ããŸãããïŒ
@mattipãããç§ã¯ãŸã ãããè©ŠããŠããŸããã pip install git+https://github.com/numpy/numpy
ãã¹ã¿ãŒããçŽæ¥ã§ããŒããã€ã³ã¹ããŒã«ããããšãæå³ããŸããïŒ ç§ã¯ãããè©ŠããŠã¿ãããšãã§ããŸã:)
ãããŠããªãã®è³ªåã«@bashtage ïŒå€±æãããã¹ãã¯numbaããŸã£ãã䜿çšããŸããïŒnumba 0.50ã¯ã䜿çšã§ããªãçµã¿èŸŒã¿é¢æ°ã誀ã£ãŠäœ¿çšããWindowsã®äžéšã®ããŒãžã§ã³ã«ãã°ããããŸããããã«ãããå¥ã®ãããžã§ã¯ãã§ã¯ã©ãã·ã¥ãçºçããŸãããïŒé»åã¡ãŒã«ã§ããããã®ã¹ã¬ããã§ã¯è¡šç€ºãããªãããã§ã...ã¯ã©ãã·ã¥ãããã¹ãã§ã¯ã numpy
ãšpyfftw
äž¡æ¹ã®æäœã䜿çšãããŸãã ãã®çªç¶ã®ã¡ãã»ãŒãžã§ã¯ã©ãã·ã¥ãããããå®éã«ã¯ã©ãã·ã¥ããè¡ãç¹å®ããã®ã¯å°é£ã§ãã ãããã pyfftw
ã¯numbaããŸã£ãã䜿çšããŠããªããšæããŸããå°ãªããšããäŸåé¢ä¿ã®1ã€ã§ã¯ãããŸããã
NumPyã®HEADãGitHubãªããžããªããçŽæ¥ã€ã³ã¹ããŒã«ããããšããŸããããWindowsãã«ãã¯å®äºãããŸã§å®è¡ãããŸã-çªç¶ã®ã¯ã©ãã·ã¥ã¯ãããŸããïŒ https ïŒ
èå³æ·±ãããšã«ãäŸåé¢ä¿ãšããŠNumPyãæã£ãŠããäžéšã®ã©ã€ãã©ãªã¯æ£ããã€ã³ã¹ããŒã«ãããŠããªãããã§ïŒçç±ã¯ããããŸããïŒãäžéšã®ãã¹ãã¯ãã¹ãŠã®OSã§å€±æããŸãããå°ãªããšã以åã®ããã«å®å šã«ã¯ã©ãã·ã¥ããããã§ã¯ãããŸãã...
æ¯æ©äœ¿çšããŠããšã©ãŒã¯ãããŸããïŒ
pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy
GitHubãªããžããªããçŽæ¥NumPyã®HEADãã€ã³ã¹ããŒã«ããŠã¿ãŸãã
æ瀺çã«ãã«ãããªãéããããã«ã¯OpenBLASããããŸãããããã©ã«ãã§ã¯ã pip install git+https://github.com/numpy/numpy.git
äœéã§æ±çšçãªBLASãåŸãããŸãã
OpenBLASã1.19.2ã«ã¢ããã°ã¬ãŒããããããã§ãã®ã§ããããããŒã¯ããŸãã
Azureã®ææ°ã®--pre
ãã«ãïŒnumpy-1.20.0.dev0 + a0028bcïŒã§ãåãåé¡ãçºçããŠããå¯èœæ§ããããšæããŸãïŒ
Current thread 0x000003d0 (most recent call first):
File "<__array_function__ internals>", line 5 in dot
File "D:\a\1\s\mne\minimum_norm\inverse.py", line 732 in _assemble_kernel
åé¡ã®è¡ã¯æ¬¡ã®ãšããã§ãã
K = np.dot(eigen_leads, trans)
ããã圹ç«ã€å Žåã¯ãé åããã£ã¹ã¯ã«ä¿åããAzureã¢ãŒãã£ãã¡ã¯ããä»ããŠããããååŸããŠã¿ãŠãã ããã
ããã¯ããã®ããã«èŠããŸãã ããªãã¯ç§ãæ£ããåããŠããã®ãšåããã¬ã䜿çšããŠããŸãã
è¿œå ããããšããå§ãããŸã
$env:OPENBLAS_VERBOSE=2
ãŸãã¯
set OPENBLAS_VERBOSE=2
ãã³ãã¬ãŒãã«ã¢ã¯ã»ã¹ããŠã䜿çšãããŠããã«ãŒãã«ã確èªããŸãã
ããã圹ç«ã€å Žåã¯ãé åããã£ã¹ã¯ã«ä¿åããAzureã¢ãŒãã£ãã¡ã¯ããä»ããŠããããååŸããŠã¿ãŠãã ããã
dtypesãšdimensionsãç¥ã£ãŠããã°ããããååã§ãããã
ããŠãä¹ç®ãããŠããè¡åãæžã蟌ã¿ãã¢ãŒãã£ãã¡ã¯ããã¢ããããŒãããnumpy + scipy + matplotlib + pytestïŒããã³depsïŒã ãã䜿çšããŠã倱æãããã¹ãã1åå®è¡ããã ãã§åçŸã§ããŸããããã¯ãã¢ãŒãã£ãã¡ã¯ãã¿ãã§ãã
æåŸã®.npz
ã¯ã倱æãããã®ïŒ27 MBïŒã§ããå¿
èŠããããŸãã ããŒã«ã«ã§ã¯Linuxã§ã¯åé¡ãããŸããã
>>> import numpy as np
>>> data = np.load('1595525222.9485037.npz')
>>> np.dot(data['a'], data['b']).shape
(23784, 305)
>>> data['a'].shape, data['a'].dtype, data['b'].shape, data['b'].dtype
((23784, 305), dtype('>f4'), (305, 305), dtype('float64'))
>>> data['a'].flags, data['b'].flags
( C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
, C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
)
OPENBLAS_VERBOSE
æ©èœãããããã«åãçµãã§ããŸãããå®éã«æž¡ãããåºåããã£ããã£ããªãããã«pytest -s
ã䜿çšãããã³ã«ããã§ãã ããã¯å¶ç¶ãããããŸããããç§ãã¡ã¯èŠãã§ããã...
ãããããç§ã¯ä»äžèšã®åçæ©ã§ããããèŠãŠããŸãã
OPENBLAS_CORETYPE
ãPrescottãŸãã¯Nehalemã«èšå®ããå Žåã衚瀺ãããŸããã ZenãSandybridgeãHaswellã§èŠãŠããŸãã
Windowsã§npzã®ããŒã¿ã䜿çšããŠããŒã«ã«ã§åçŸããããšã¯ã§ããŸããã
Windowsã§npzã®ããŒã¿ã䜿çšããŠããŒã«ã«ã§åçŸããããšã¯ã§ããŸããã
Azureäžã®FWIWã¯ãããã§å®è¡ãããã³ãŒãã®æåŸãã2çªç®ã®è¡ã§å€±æãããããsave-load-round-tripedããŒã¿ã䜿çšããŠåçŸã§ããŸãã
import mne, os.path as op, time
fname = op.join(op.dirname(mne.__file__), '..', 'bad', f'{time.time()}.npz')
np.savez_compressed(fname, a=eigen_leads, b=trans)
print(eigen_leads.flags)
print(trans.flags)
data = np.load(fname)
np.dot(data['a'], data['b']) # <-- fails here
K = np.dot(eigen_leads, trans) # <-- used to fail here before I added the above lines
ãããã£ãŠã np.savez
/ np.load
ã¹ããããåå ã§ãAzureåŽã§å°ãªããšãäœã倱ãããŸããã
ãã ãã OPENBLAS_CORETYPE: 'nehalem'
ããŠã圹ç«ã€ãã©ããã確èªããããšããŠããŸãã
ã§ã¯ãå®éã«ã¯ããã«2ã€ã®ç°ãªããã°ãããã®ã§ããããã
ãŸãã OPENBLAS_VERBOSE: 2
èšå®ããŠãå¹æããªãããã§ãããçç±ã¯ããããŸãã
詳现ãèšå®ããåŸãã³ãã³ããè¿œå ããŸã
python -c "import numpy"
Pytestã¯ãããããããé£ã¹ãŠãããšæããŸãã
æšã2020幎7æ23æ¥ã«ã¯ãåå19æ04ãšãªãã¯ã»ã©ãŒãœã³ã®[email protected]ã¯æžããŸããïŒ
ãŸããOPENBLAS_VERBOSEïŒ2ãèšå®ããŠãå¹æã¯ãªãããã§ããã
確ãã«çç±â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/numpy/numpy/issues/16913#issuecomment-663151960 ããŸãã¯
éäŒ
https://github.com/notifications/unsubscribe-auth/ABKTSRNS5QRT6CC3ZQ6DQYDR5B3TTANCNFSM4PCRVE6A
ã
ãã®ã³ãã³ãã¯ããŒã«ã«ã§ã詳现ãªåºåãæäŸããŸããã
OPENBLAS_VERBOSE=2 python -c "import numpy as np, glob; data = np.load(glob.glob('bad/*.npz')[0]); a, b = data['a'], data['b']; print(np.dot(a, b).shape)"
ããããããããç§ã®ã·ã¹ãã OpenBLASã¯å€ãããŸãã Azureã«ã³ããããããã·ã¥ããŠã倱æããåŸã«ãããåç¬ã§å®è¡ã§ããããã«ããŸãã
Azureã®OPENBLAS_VERBOSEããCoreïŒHaswellããšèšã£ãŠããããã§ãã ãããæ£ãããã©ããã¯ããããŸãããã
https://github.com/xianyi/OpenBLAS/issues/2732ã§ãšã©ãŒãå ±åããŸãããããã¹ã¿ãŒã§ä¿®æ£ãããå¯èœæ§ãããããšã瀺åãããŸãããã ããã ãã ããããããã¹ãããããã®æè¯ã®æ¹æ³ã¯ããããŸããã
@mattipãããMacPython / openblas-libsïŒ35ã«ãã£ãŠéããããŠããããšãç¥ã£ãŠããŸããïŒ æ¬¡ã®é±ãçµãããŸã§åŸ ã€å¿ èŠã¯ãããŸãããïŒ
@charrisãã®åé¡ã¯ãŸã éããŠãããšæããŸãããããã¯ããŒããå¿ èŠã«ãªãå¯èœæ§ããããŸãã
ãªãããã¥ãŒãµãŒãæã£ãŠãã人ãããã®ã³ãããã§numpyãæ§ç¯ããŠãææ°ã®OpenBLASãã€ããªãååŸããããšããããšã¯ã§ããŸããïŒ ã ããïŒã¿ã€ããã¹ã®ããããïŒã®ãããªãã®
git add remote mattip https://github.com/mattip/numpy.git
git fetch mattip issue-16913
git checkout issue-16913
python tools/openblas_support.py
# copy the output openblas.a to a local directory and make sure numpy uses it
mkdir openblas
copy /path/to/openblas.a openblas
set OPENBLAS=openblas
python -c "from tools import openblas_support; openblas_support.make_init('numpy')"
pip install --no-build-isolation --no-use-pep517 .
ãŸã ã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ã choco install -y mingw
ã䜿çšããŠgfortranãã€ã³ã¹ããŒã«ããå¿
èŠããããŸã
...ããã¯Windowsçšã§ã
ãŸã ã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ãchoco install -ymingwã䜿çšããŠgfortranãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
ããã¯32ãããã«ã®ã¿å¿ èŠã§ããïŒ
https://github.com/numpy/numpy/blob/master/azure-steps-windows.yml#L29 -L31
/path/to/openblas.a
ãäœã§ããããç解ãããã tools/openblas_support.py
ïŒïŒïŒãå®è¡ããŠãäžèšã®ææ¡ãchoco install -y mingw
è©ŠããŠã¿ãŸãã
ã¯ãã python tools/openblas_support.py
ã¯openblas.a
å ŽæãåºåããŸã
gfortranãå¿
èŠã§ãã Azureãã·ã³ã«ã¯mingw64ããããã€ã³ã¹ããŒã«ãããŠããŸãã 32ãããã®å ŽåãåŒã³åºãã¯å°ãç°ãªããŸãã ãŸãã -m32
ãèšå®ããå¿
èŠããããŸãïŒãã ãã32ãããã®å Žåã®ã¿ïŒã
NumPyã®master
ãã©ã³ãã䜿çšããŠhttps://github.com/numpy/numpy/blob/master/azure-steps-windows.ymlã®ã»ãšãã©ãéèªçã«ã³ããŒããæåã«ãšã©ãŒãåçŸããŸãããããã¯segfaultã§ãã
次ã«ã mattip/issue-16913
åãæ¿ããŸãããã次ã®URLããŠã³ããŒããšã©ãŒ
...次ã®å Žæã«ã¯64ãããWindowsçšã®32ãããOpenBLASããªãããã§ãã
https://anaconda.org/multibuild-wheels-staging/openblas-libs/files
ã¿ã°ãè¿œå ããŠ64ãããã®OpenBLASã䜿çšã§ãããšæããŸããïŒ
2ã€ãããã1ã€ã¯ãŸã æ§ç¯äžã§ãã 1æé以å ã«èµ·åããå¿ èŠããããŸãã
ãã®éã«ç§ã¯è¿œå ããŸããïŒ
NPY_USE_BLAS_ILP64: '1'
OPENBLAS_SUFFIX: '64_'
ãããŠããã¯ããŸãæ§ç¯ãããŸããã ã»ã°ã¡ã³ããŒã·ã§ã³éåã¯ãªããªããŸããïŒ å¿µã®ãããäœåºŠãåå®è¡ããŸãã 32ãããã®OpenBLASWin64ã©ã€ãã©ãªãèµ·åããããé æ ®ãªãpingãéä¿¡ããŠãã ããããããã®è¡ãç°¡åã«åé€ããŠãåãã¹ãã§ããŸãã
å®å šãªãã¹ãã¹ã€ãŒããå®è¡ããå€æŽ:-)
python -c "import numpy; numpy.test('full')"
32ãããã®ãã®ã皌åããŠããããã«èŠããŸããããããæ©èœããŸãã
ä»ããå®å šãªãã¹ãã¹ã€ãŒããå®è¡ããŸã
f2py
å«ãå¥åŠãªãã¹ãåéãšã©ãŒãçºçããŸãïŒ
ãã®ä»ã®åé¡ã«ãã以äžæéãç¡é§ã«ããªãã§ãã ãã-ç§ã¯æ¥é±ãŸã§åŸ ã£ãŠãããŸãããã°BLASãæã£ãŠããæ¯é±ãã¹ãããããšãã§ããŸãã
ãã¹ã¿ãŒãã©ã³ãã«ã³ããããããã·ã¥ããããšã§ããã€ã§ããã€ããªãŒãã«ããå®è¡ã§ããããšã«æ³šæããŠãã ããã
OKãæ°ãããã®ã衚瀺ããããŸã§åŸ ã£ãŠãWindows 102004ã®åé¡ãä¿®æ£ãããŠãããã©ããã確èªããŸãã
@bashtageããã«é¢ããæŽæ°ã¯ãããŸããïŒ
OpenBLASã¯ãWindowsã®ææ°ãªãªãŒã¹ã§ã¯ãŸã å£ããŠããŸãã å°ãªããšãç§ã«ãšã£ãŠã¯ãããŒã«ãã§ãŒã³ãæ··åšããŠãããããé©åãªãããã°æ å ±ãååŸããããšããéåžžã«éæšæºã§ãã