<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 3.13。 CUDA Ufuncs 和廣義 Ufuncs > 原文: [http://numba.pydata.org/numba-doc/latest/cuda/ufunc.html](http://numba.pydata.org/numba-doc/latest/cuda/ufunc.html) 此頁面描述了類似 CUDA ufunc 的對象。 為了支持 CUDA 程序的編程模式,CUDA Vectorize 和 GUVectorize 不能生成傳統的 ufunc。相反,返回類似 ufunc 的對象。此對象是一個非常模擬但與常規 NumPy ufunc 不完全兼容的對象。 CUDA ufunc 增加了對傳遞設備內陣列(已在 GPU 設備上)的支持,以減少 PCI-express 總線上的流量。它還接受&lt;cite&gt;流&lt;/cite&gt;關鍵字以在異步模式下啟動。 ## 3.13.1。示例:基本示例 ```py import math from numba import vectorize, cuda import numpy as np @vectorize(['float32(float32, float32, float32)', 'float64(float64, float64, float64)'], target='cuda') def cu_discriminant(a, b, c): return math.sqrt(b ** 2 - 4 * a * c) N = 10000 dtype = np.float32 # prepare the input A = np.array(np.random.sample(N), dtype=dtype) B = np.array(np.random.sample(N) + 10, dtype=dtype) C = np.array(np.random.sample(N), dtype=dtype) D = cu_discriminant(A, B, C) print(D) # print result ``` ## 3.13.2。示例:調用設備功能 所有 CUDA ufunc 內核都能夠調用其他 CUDA 設備功能: ```py from numba import vectorize, cuda # define a device function @cuda.jit('float32(float32, float32, float32)', device=True, inline=True) def cu_device_fn(x, y, z): return x ** y / z # define a ufunc that calls our device function @vectorize(['float32(float32, float32, float32)'], target='cuda') def cu_ufunc(x, y, z): return cu_device_fn(x, y, z) ``` ## 3.13.3。廣義 CUDA ufuncs 可以使用 CUDA 在 GPU 上執行通用 ufunc,類似于 CUDA ufunc 功能。這可以通過以下方式完成: ```py from numba import guvectorize @guvectorize(['void(float32[:,:], float32[:,:], float32[:,:])'], '(m,n),(n,p)->(m,p)', target='cuda') def matmulcore(A, B, C): ... ``` 有時候 gufunc 內核會使用太多的 GPU 資源,這會導致內核啟動失敗。用戶可以通過在已編譯的 gufunc 對象上設置 &lt;cite&gt;max_blocksize&lt;/cite&gt; 屬性來顯式控制線程塊的最大大小。 ```py from numba import guvectorize @guvectorize(..., target='cuda') def very_complex_kernel(A, B, C): ... very_complex_kernel.max_blocksize = 32 # limits to 32 threads per block ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看