4 億 4000 万の非ヌル ポイントを持つ次元 (170k x 170k) の Scipy CSC スパース マトリックス "sm" と、いくつかの非ヌル ポイントを持つスパース CSC ベクトル "v" (170k x 1) が与えられた場合、可能なものはありますか?操作のパフォーマンスを向上させるために行われます。
resul = sm.dot(v)
?
現在、約1秒かかります。CSR としてマトリックスを初期化すると、時間が最大 3 秒増加したため、CSC のパフォーマンスが向上しました。
SM は製品間の類似度のマトリックスで、V はユーザーが購入またはクリックした製品を表すベクトルです。したがって、すべてのユーザーの sm は同じです。
Ubuntu 13.04、Intel i3 @3.4GHz、4 コアを使用しています。
SO について調べていると、Ablas パッケージについて読みました。ターミナルに次のように入力しました。
~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so
その結果:
linux-vdso.so.1 => (0x00007fff56a88000)
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f888137f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8880fb7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8880cb1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f888183c000)
私が理解したところでは、これは私が既に Ablas の高性能パッケージを使用していることを意味します。このパッケージがすでに並列コンピューティングを実装しているかどうかはまだわかりませんが、実装されていないようです。
マルチコア処理はパフォーマンスの向上に役立ちますか? もしそうなら、Pythonで役立つライブラリはありますか?
これをCythonに実装するというアイデアも検討していましたが、これが良い結果につながるかどうかはわかりません。
前もって感謝します。