變化#

版本2020.1#

  • 刪除對Python2.7的支持。

2019.1版#

  • 建立改進。

  • 錯誤修復。

版本2018.1#

  • 更新boost.python以獲得更好的pypy支持

  • 添加 pycuda.elementwise.ElementwiseKernel.get_texref() .

  • 錯誤修復。

2017.2版#

  • zeros_like()empty_like() 現在有 D型秩序 像紐比那樣的參數。以前這些例程總是返回一個c順序數組。新的默認行為遵循numpy默認,即盡可能地匹配輸入的順序和步幅。

  • A ones_like() 添加了GPUARD函數。

  • 方法 GPUArray.imag , GPUArray.real , GPUArray.conj()GPUArray 是fortran命令的。

2016.2版#

注解

此版本是當前的開發版本。你可以從中得到它 .

2016.1版#

2014.1版#

  • 添加 PointerHolderBase.as_buffer()DeviceAllocation.as_buffer() .

  • 支持 device_attribute 在CUDA 5.0、5.5和6.0中添加的值。

  • 支持 托管內存 . (斯坦·塞伯特供稿)

2013.1.1版#

  • python 3上pycuda的windows修補程序(謝謝,christoph gohlke)

2013.1版#

  • python 3支持(tomasz rybak提供的大部分)

  • 添加 pycuda.gpuarray.GPUArray.__getitem__() ,支持一般切片。

    它是 可能的 使用此功能創建非連續數組。大多數操作(elementwise等)都不能在這樣的數組上工作。

  • 更多的發電機 pycuda.curandom . (托馬茲·里巴克供稿)

  • 許多錯誤修復

注解

增加 pyopencl.array.Array.__getitem__() 由于 numpy bug 3375 . 例如,這個表達式:

numpy.float32(5) * some_gpu_array

可能需要很長時間才能執行。這是因為 numpy 首先構建(計算設備)標量(?。┑膶ο髷到M在它決定這可能不是個好主意并最終打電話給 pycuda.gpuarray.GPUArray.__rmul__() .

注意,只剩下 pycuda.gpuarray.GPUArray 通過 numpy 鱗片受到影響。python的數字類型 (float 不受影響,正確的乘法也不受影響。

如果一個曾經運行得很快的程序突然運行得非常慢,很可能是這個錯誤造成的。

這就是你能做的:

  • 使用python標量而不是 numpy 標量。

  • 如果可能的話,切換到右邊的乘法。

  • 使用補丁 numpy . 請參閱上面鏈接的bug報告,以獲取帶有修復的pull請求。

  • 切換到的固定版本 numpy 何時可用。

2012.1版#

  • 無數的錯誤修復。(包括GCC4.7上的boost編譯)

版本2011.2#

  • 修復使用頁鎖定內存時的內存泄漏。(保羅·卡澤奧報道)

  • 修復復雜的標量參數傳遞。

  • 固定 pycuda.gpuarray.zeros() 用于復雜數組時。

  • 添加 pycuda.tools.register_dtype() 對結構類型啟用掃描/縮減。

  • 對庫蘭的更多改進。

  • 添加對CUDA 4.1的支持。

版本2011.1.2#

  • 各種修復。

版本2011.1.1#

  • 各種修復。

版本2011.1#

當您更新要在此版本的pycuda上運行的代碼時,請確保啟用了不推薦警告,以便您知道何時需要更新代碼。(見 the Python docs . 警告:從Python2.7開始,默認情況下禁用不推薦警告。)

版本0.94.2#

  • 修正討厭的費米還原錯誤。(多虧了托馬斯·里巴克)

版本0.94.1#

  • 支持CUDA調試。(見 FAQ 詳情。

版本0.94#

版本0.93#

警告

版本0.93對pycuda編程接口進行了一些更改。在所有已記錄的功能發生更改的情況下,舊的用法將繼續工作,但會導致警告。建議您更新代碼以刪除警告。

版本0.92#

注解

如果要從以前的版本升級,可以刪除目錄 $HOME/.pycuda-compiler-cache 以恢復現在未使用的磁盤空間。

注解

在這段時間里,我有幸就Pycuda做了一次演講 class Nicolas Pinto周圍的一群人在麻省理工學院教書。如果你感興趣,幻燈片是 available .

版本0.91#

致謝#

  • Gert Wohlgemuth將Pycuda移植到MacOS X并貢獻了 pycuda.gpuarray.GPUArray .

  • alexander mordvintsev為windows xp提供了補丁。

  • Cosmin Stejerean為Pycuda的構建系統提供了多個補丁。

  • Tom Annau提供了另一個Sourcemodule編譯器緩存和Windows Build Insight。

  • 董建華改進了畢古達的文件。

  • jozef vesely貢獻了一個從rsa data security,inc.md5消息摘要算法中獲得的大量改進的隨機數生成器。

  • chris heuser為多線程pycuda提供了一個測試用例。

  • 還原模板基于nvidia的mark harris的代碼。

  • AndrewWagner提供了一個測試用例,并提供了卷積示例的端口。原始卷積碼基于nvidia提供的一個例子。

  • Hendrik Riedmann提供了矩陣轉置和列表選擇示例。

  • peter berrington為cuda-opengl互操作性提供了一個工作示例。

  • 馬爾滕啤酒提供了一個補丁'扁蛋'支持。

  • 尼古拉斯·平托重構 pycuda.autoinit 用于自動查找設備。

  • 伊恩·奧茲瓦爾德和法布里齊奧·米洛提供了補丁。

  • Min Ragan Kelley解決了Pycuda為什么不能在OS X上運行64位CUDA的長期難題(并提供了一個補?。?。

  • tomasz-rybak解決了另一個長期困擾人們的難題:為什么reduction不能在一些費米芯片上工作。此外,他還提供了更新pycuda的 OpenGL 去cuda 3.0州。

  • 飛利浦研究公司的martin bergtholdt提供了一個補丁,使得pycuda可以在64位windows 7上工作。

許可#

PYCUDA是根據MIT/X聯合體許可證授予您的:

版權所有(c)2009,10 Andreas Klóckner和撰稿人。

特此免費授予任何獲得本軟件及其相關文檔文件(以下簡稱“本軟件”)副本的人,允許其在不受限制的情況下處理本軟件,包括但不限于使用、復制、修改、合并、發布、分發、再許可和/或出售本軟件副本的權利,并允許他人向其提供軟件的國家或地區,但須符合以下條件:

上述版權聲明和本許可聲明應包含在軟件的所有副本或實質部分中。

本軟件按“原樣”提供,不作任何明示或暗示的保證,包括但不限于對適銷性、特定用途適用性和非侵權性的保證。在任何情況下,無論是在合同訴訟、侵權訴訟或其他訴訟中,作者或版權持有人均不承擔因本軟件或本軟件的使用或其他交易而產生、引起或與之相關的任何索賠、損害或其他責任。

pycuda包括 Thrust 計算包(特別是掃描實現)。這些零件的許可證如下:

版權所有2008-2011英偉達公司

根據Apache許可證2.0版(“許可證”)獲得許可;除非符合許可證,否則不得使用此文件。您可以在以下網址獲得許可證副本:

除非適用法律要求或書面同意,否則根據許可證分發的軟件按“原樣”分發,不提供任何形式的明示或暗示保證或條件。請參閱許可證,了解許可證下管理權限和限制的特定語言。

注解

如果您使用apache許可的部件,請注意這些部件可能與gpl2下獨家許可的軟件不兼容。(大多數軟件被授權為GPL2或更高版本,在這種情況下這不是問題。)

常見問題#

FAQ現在在 PyCUDA Wiki .

引用皮庫達#

我們并不是要求你在工作中無端引用pycuda,否則與軟件無關。也就是說,如果您確實討論了代碼的一些開發方面,并且想強調pycuda背后的一些想法,請隨意引用 this article

Andreas Klóckner、Nicolas Pinto、Yunsup Lee、Bryan Catanzaro、Paul Ivanov、Ahmed Fasih、Pycuda和PyOpenCl:基于腳本的GPU運行時代碼生成方法,并行計算,第38卷,第3期,2012年3月,第157-174頁。

為了您的方便,這里有一個bibtex條目:

@article{kloeckner_pycuda_2012,
   author = {{Kl{\"o}ckner}, Andreas
        and {Pinto}, Nicolas
        and {Lee}, Yunsup
        and {Catanzaro}, B.
        and {Ivanov}, Paul
        and {Fasih}, Ahmed },
   title = "{PyCUDA and PyOpenCL: A Scripting-Based Approach to GPU Run-Time Code Generation}",
   journal = "Parallel Computing",
   volume = "38",
   number = "3",
   pages = "157--174",
   year = "2012",
   issn = "0167-8191",
   doi = "10.1016/j.parco.2011.09.001",
}