在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CUDA編程之統(tǒng)一內(nèi)存的介紹

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Mark Harris ? 2022-04-11 09:40 ? 次閱讀

我之前的介紹文章,“ 更容易介紹 CUDA C ++ ”介紹了 CUDA 編程的基本知識,它演示了如何編寫一個簡單的程序,在內(nèi)存中分配兩個可供 GPU 訪問的數(shù)字?jǐn)?shù)組,然后將它們加在 GPU 上。為此,我向您介紹了統(tǒng)一內(nèi)存,這使得分配和訪問系統(tǒng)中任何處理器上運(yùn)行的代碼都可以使用的數(shù)據(jù)變得非常容易, CPU 或 GPU 。

圖 1 。統(tǒng)一內(nèi)存是可從系統(tǒng)中的任何處理器訪問的單個內(nèi)存地址空間。

我以幾個簡單的“練習(xí)”結(jié)束了這篇文章,其中一個練習(xí)鼓勵您運(yùn)行最近基于 Pascal 的 GPU ,看看會發(fā)生什么。(我希望讀者能嘗試一下并對結(jié)果發(fā)表評論,你們中的一些人也這樣做了!)。我建議這樣做有兩個原因。首先,因為 PascalMIG 如 NVIDIA Titan X 和 NVIDIA Tesla P100 是第一個包含頁 GPUs 定額引擎的 GPUs ,它是統(tǒng)一內(nèi)存頁錯誤處理和 MIG 比率的硬件支持。第二個原因是它提供了一個很好的機(jī)會來學(xué)習(xí)更多的統(tǒng)一內(nèi)存。

快 GPU ,快內(nèi)存…對嗎?

正確的!但讓我們看看。首先,我將重新打印在兩個 NVIDIA 開普勒 GPUs 上運(yùn)行的結(jié)果(一個在我的筆記本電腦上,一個在服務(wù)器上)。

現(xiàn)在讓我們嘗試在一個非常快的 Tesla P100 加速器上運(yùn)行,它基于 pascalgp100GPU 。

> nvprof ./add_grid ... Time(%) Time Calls Avg Min Max Name 100.00% 2.1192ms 1 2.1192ms 2.1192ms 2.1192ms add(int, float*, float*)

嗯,這低于 6gb / s :比在我的筆記本電腦基于開普勒的 GeForceGPU 上運(yùn)行慢。不過,別灰心,我們可以解決這個問題的。為了理解這一點,我將告訴你更多關(guān)于統(tǒng)一內(nèi)存的信息

下面是要添加的完整代碼,以供參考_網(wǎng)格. cu 從上次開始。

#include  #include  // CUDA kernel to add elements of two arrays __global__ void add(int n, float *x, float *y) { int index = blockIdx.x * blockDim.x + threadIdx.x; int stride = blockDim.x * gridDim.x; for (int i = index; i < n; i += stride) y[i] = x[i] + y[i]; } int main(void) { int N = 1<<20; float *x, *y; // Allocate Unified Memory -- accessible from CPU or GPU cudaMallocManaged(&x, N*sizeof(float)); cudaMallocManaged(&y, N*sizeof(float)); // initialize x and y arrays on the host for (int i = 0; i < N; i++) { x[i] = 1.0f; y[i] = 2.0f; } // Launch kernel on 1M elements on the GPU int blockSize = 256; int numBlocks = (N + blockSize - 1) / blockSize; add<<>>(N, x, y); // Wait for GPU to finish before accessing on host cudaDeviceSynchronize(); // Check for errors (all values should be 3.0f) float maxError = 0.0f; for (int i = 0; i < N; i++) maxError = fmax(maxError, fabs(y[i]-3.0f)); std::cout << "Max error: " << maxError << std::endl; // Free memory cudaFree(x); cudaFree(y); return 0; }

對 27-19 行的內(nèi)存進(jìn)行初始化。

什么是統(tǒng)一內(nèi)存?

統(tǒng)一內(nèi)存是可從系統(tǒng)中的任何處理器訪問的單個內(nèi)存地址空間(請參見圖 1 )。這種硬件/軟件技術(shù)允許應(yīng)用程序分配可以從 CPU s 或 GPUs 上運(yùn)行的代碼讀取或?qū)懭氲臄?shù)據(jù)。分配統(tǒng)一內(nèi)存非常簡單,只需將對malloc()new的調(diào)用替換為對cudaMallocManaged()的調(diào)用,這是一個分配函數(shù),返回可從任何處理器訪問的指針(以下為ptr)。

cudaError_t cudaMallocManaged(void** ptr, size_t size);

當(dāng)在 CPU 或 GPU 上運(yùn)行的代碼訪問以這種方式分配的數(shù)據(jù)(通常稱為 CUDA 管理 數(shù)據(jù)), CUDA 系統(tǒng)軟件和/或硬件負(fù)責(zé)將 MIG 額定內(nèi)存頁分配給訪問處理器的內(nèi)存。這里重要的一點是, PascalGPU 體系結(jié)構(gòu)是第一個通過頁面 MIG 比率引擎對虛擬內(nèi)存頁錯誤處理和 MIG 比率提供硬件支持的架構(gòu)。基于更舊的 kezbr 架構(gòu)和更為統(tǒng)一的 kezbr 形式的支持。

當(dāng)我打電話給cudaMallocManaged()時,開普勒會發(fā)生什么?

在具有 pre-PascalGPUs 的系統(tǒng)上,如 Tesla K80 ,調(diào)用 cudaMallocManaged() 會分配 size 字節(jié)的托管內(nèi)存 在 GPU 設(shè)備上 ,該內(nèi)存在調(diào)用 1 時處于活動狀態(tài)。在內(nèi)部,驅(qū)動程序還為分配覆蓋的所有頁面設(shè)置頁表條目,以便系統(tǒng)知道這些頁駐留在 GPU 上。

所以,在我們的例子中,在 Tesla K80GPU (開普勒架構(gòu))上運(yùn)行, x 和 y 最初都完全駐留在 GPU 內(nèi)存中。然后在第 6 行開始的循環(huán)中, CPU 逐步遍歷兩個數(shù)組,分別將它們的元素初始化為 1.0f 和 2.0f 。由于這些頁最初駐留在設(shè)備存儲器中,所以它寫入的每個數(shù)組頁的 CPU 上都會發(fā)生一個頁錯誤, GPU 驅(qū)動程序 MIG 會將設(shè)備內(nèi)存中的頁面分配給 CPU 內(nèi)存。循環(huán)之后,兩個數(shù)組的所有頁都駐留在 CPU 內(nèi)存中。

在初始化 CPU 上的數(shù)據(jù)之后,程序啟動 add() 內(nèi)核,將 x 的元素添加到 y 的元素中。

add<<<1, 256>>>(N, x, y);

在 pre-PascalGPUs 上,啟動一個內(nèi)核后, CUDA 運(yùn)行時必須 MIG 將以前 MIG 額定為主機(jī)內(nèi)存或另一個 GPU 的所有頁面重新評級到運(yùn)行內(nèi)核 2 的設(shè)備內(nèi)存。由于這些舊的 GPUs 不能出現(xiàn)分頁錯誤,所有數(shù)據(jù)都必須駐留在 GPU 以防萬一 上,內(nèi)核訪問它(即使它不會訪問)。這意味著每次啟動內(nèi)核時都可能存在 MIG 定額開銷。

當(dāng)我在 K80 或 macbookpro 上運(yùn)行程序時,就會發(fā)生這種情況。但是請注意,探查器顯示的內(nèi)核運(yùn)行時間與 MIG 定額時間是分開的,因為 MIG 定額發(fā)生在內(nèi)核運(yùn)行之前。

==15638== Profiling application: ./add_grid ==15638== Profiling result: Time(%) Time Calls Avg Min Max Name 100.00% 93.471us 1 93.471us 93.471us 93.471us add(int, float*, float*) ==15638== Unified Memory profiling result: Device "Tesla K80 (0)" Count Avg Size Min Size Max Size Total Size Total Time Name 6 1.3333MB 896.00KB 2.0000MB 8.000000MB 1.154720ms Host To Device 102 120.47KB 4.0000KB 0.9961MB 12.00000MB 1.895040ms Device To Host Total CPU Page faults: 51

當(dāng)我調(diào)用cudaMallocManaged()時, Pascal 上會發(fā)生什么?

在 Pascal 和更高版本的 GPUs 上, cudaMallocManaged() 返回時可能不會物理分配托管內(nèi)存;它只能在訪問(或預(yù)取)時填充。換言之,在 GPU 或 CPU 訪問頁和頁表項之前,可能無法創(chuàng)建它們。頁面可以在任何時候?qū)θ魏翁幚砥鞯膬?nèi)存進(jìn)行 cudaMemPrefetchAsync() 速率,驅(qū)動程序使用啟發(fā)式來維護(hù)數(shù)據(jù)的局部性并防止過多的頁面錯誤 3 。(注意:應(yīng)用程序可以使用 cudaMemAdvise() 指導(dǎo)驅(qū)動程序,并使用 MIG 顯式地 MIG 對內(nèi)存進(jìn)行速率調(diào)整,如 這篇博文描述了 )。

與 pre-PascalGPUs 不同, Tesla P100 支持硬件頁錯誤和 MIG 比率。所以在這種情況下,運(yùn)行庫在運(yùn)行內(nèi)核之前不會自動將 全部的 頁面復(fù)制回 GPU 。內(nèi)核在沒有任何 MIG 定額開銷的情況下啟動,當(dāng)它訪問任何缺失的頁時, GPU 會暫停訪問線程的執(zhí)行,頁面 MIG 定額引擎 MIG 會在恢復(fù)線程之前對設(shè)備的頁面進(jìn)行評級。

這意味著當(dāng)我在 Tesla P100 ( 2 。 1192ms )上運(yùn)行程序時, MIG 定額的成本包含在內(nèi)核運(yùn)行時中。在這個內(nèi)核中,數(shù)組中的每一頁都由 CPU 寫入,然后由 GPU 上的 CUDA 內(nèi)核訪問,導(dǎo)致內(nèi)核等待大量的頁 MIG 配額。這就是為什么分析器在像 Tesla P100 這樣的 PascalGPU 上測量的內(nèi)核時間更長。讓我們看看 P100 上程序的完整 nvprof 輸出。

==19278== Profiling application: ./add_grid ==19278== Profiling result: Time(%) Time Calls Avg Min Max Name 100.00% 2.1192ms 1 2.1192ms 2.1192ms 2.1192ms add(int, float*, float*) ==19278== Unified Memory profiling result: Device "Tesla P100-PCIE-16GB (0)" Count Avg Size Min Size Max Size Total Size Total Time Name 146 56.109KB 4.0000KB 988.00KB 8.000000MB 860.5760us Host To Device 24 170.67KB 4.0000KB 0.9961MB 4.000000MB 339.5520us Device To Host 12 - - - - 1.067526ms GPU Page fault groups Total CPU Page faults: 36

如您所見,存在許多主機(jī)到設(shè)備頁面錯誤,降低了 CUDA 內(nèi)核的吞吐量。

我該怎么辦?

在實際應(yīng)用中, GPU 可能會在數(shù)據(jù)上執(zhí)行更多的計算(可能多次),而不需要 CPU 來接觸它。這個簡單代碼中的 MIG 定額開銷是由于 CPU 初始化數(shù)據(jù), GPU 只使用一次。有幾種不同的方法可以消除或更改 MIG 比率開銷,從而更準(zhǔn)確地測量 vector add 內(nèi)核的性能。

將數(shù)據(jù)初始化移動到另一個 CUDA 內(nèi)核中的 GPU 。

多次運(yùn)行內(nèi)核,查看平均和最小運(yùn)行時間。

在運(yùn)行內(nèi)核之前,將數(shù)據(jù)預(yù)取到 GPU 內(nèi)存。

我們來看看這三種方法。

初始化內(nèi)核中的數(shù)據(jù)

如果我們將初始化從 CPU 移到 GPU ,則add內(nèi)核不會出現(xiàn)頁面錯誤。這里有一個簡單的 CUDA C ++內(nèi)核來初始化數(shù)據(jù)。我們可以用啟動這個內(nèi)核來替換初始化xy的主機(jī)代碼。

__global__ void init(int n, float *x, float *y) { int index = threadIdx.x + blockIdx.x * blockDim.x; int stride = blockDim.x * gridDim.x; for (int i = index; i < n; i += stride) { x[i] = 1.0f; y[i] = 2.0f; } }

當(dāng)我這樣做時,我在 Tesla P100GPU 的配置文件中看到兩個內(nèi)核:

==44292== Profiling application: ./add_grid_init ==44292== Profiling result: Time(%) Time Calls Avg Min Max Name 98.06% 1.3018ms 1 1.3018ms 1.3018ms 1.3018ms init(int, float*, float*) 1.94% 25.792us 1 25.792us 25.792us 25.792us add(int, float*, float*) ==44292== Unified Memory profiling result: Device "Tesla P100-PCIE-16GB (0)" Count Avg Size Min Size Max Size Total Size Total Time Name 24 170.67KB 4.0000KB 0.9961MB 4.000000MB 344.2880us Device To Host 16 - - - - 551.9940us GPU Page fault groups Total CPU Page faults: 12

add內(nèi)核現(xiàn)在運(yùn)行得更快: 25 . 8us ,相當(dāng)于接近 500gb / s 。

帶寬=字節(jié)/秒=( 3 * 4194304 字節(jié)* 1e-9 字節(jié)/ GB )/ 25 . 8e-6s = 488 [UNK] GB / s

(要了解如何計算理論帶寬和實現(xiàn)的帶寬,請參閱這個帖子。)仍然存在設(shè)備到主機(jī)頁錯誤,但這是由于在程序末尾檢查 CPU 結(jié)果的循環(huán)造成的。

運(yùn)行多次

另一種方法是只運(yùn)行內(nèi)核多次,并查看探查器中的平均時間。為此,我需要修改錯誤檢查代碼,以便正確報告結(jié)果。以下是在 Tesla P100 上 100 次運(yùn)行內(nèi)核的結(jié)果:

==48760== Profiling application: ./add_grid_many ==48760== Profiling result: Time(%) Time Calls Avg Min Max Name 100.00% 4.5526ms 100 45.526us 24.479us 2.0616ms add(int, float*, float*) ==48760== Unified Memory profiling result: Device "Tesla P100-PCIE-16GB (0)" Count Avg Size Min Size Max Size Total Size Total Time Name 174 47.080KB 4.0000KB 0.9844MB 8.000000MB 829.2480us Host To Device 24 170.67KB 4.0000KB 0.9961MB 4.000000MB 339.7760us Device To Host 14 - - - - 1.008684ms GPU Page fault groups Total CPU Page faults: 36

最短的內(nèi)核運(yùn)行時間只有 24 . 5 微秒,這意味著它可以獲得超過 500GB / s 的內(nèi)存帶寬。我還包括了來自nvprof的統(tǒng)一內(nèi)存分析輸出,它顯示了從主機(jī)到設(shè)備總共 8MB 的頁面錯誤,對應(yīng)于第一次運(yùn)行add時通過頁面錯誤復(fù)制到設(shè)備上的兩個 4MB 數(shù)組(xy)。

預(yù)取

第三種方法是在初始化后使用統(tǒng)一內(nèi)存預(yù)取將數(shù)據(jù)移動到 GPU 。 CUDA 為此提供了cudaMemPrefetchAsync()。我可以在內(nèi)核啟動之前添加以下代碼。

 // Prefetch the data to the GPU int device = -1; cudaGetDevice(&device); cudaMemPrefetchAsync(x, N*sizeof(float), device, NULL); cudaMemPrefetchAsync(y, N*sizeof(float), device, NULL); // Run kernel on 1M elements on the GPU int blockSize = 256; int numBlocks = (N + blockSize - 1) / blockSize; saxpy<<>>(N, 1.0f, x, y);

現(xiàn)在當(dāng)我在 Tesla P100 上評測時,我得到以下輸出。

==50360== Profiling application: ./add_grid_prefetch ==50360== Profiling result: Time(%) Time Calls Avg Min Max Name 100.00% 26.112us 1 26.112us 26.112us 26.112us add(int, float*, float*) ==50360== Unified Memory profiling result: Device "Tesla P100-PCIE-16GB (0)" Count Avg Size Min Size Max Size Total Size Total Time Name 4 2.0000MB 2.0000MB 2.0000MB 8.000000MB 689.0560us Host To Device 24 170.67KB 4.0000KB 0.9961MB 4.000000MB 346.5600us Device To Host Total CPU Page faults: 36

在這里,您可以看到內(nèi)核只運(yùn)行了一次,運(yùn)行時間為 26 。 1us ,與前面顯示的 100 次運(yùn)行中最快的一次相似。您還可以看到,不再報告任何 GPU 頁錯誤,主機(jī)到設(shè)備的傳輸顯示為四個 2MB 的傳輸,這要?dú)w功于預(yù)取。

現(xiàn)在我們已經(jīng)讓它在 P100 上運(yùn)行得很快,讓我們將它添加到上次的結(jié)果表中。

關(guān)于并發(fā)性的注記

請記住,您的系統(tǒng)有多個處理器同時運(yùn)行 CUDA 應(yīng)用程序的部分:一個或多個 CPU 和一個或多個 GPUs 。即使在我們這個簡單的例子中,也有一個 CPU 線程和一個 GPU 執(zhí)行上下文,因此在訪問任何一個處理器上的托管分配時都要小心,以確保沒有競爭條件。

從計算能力低于 6 。 0 的 CPU 和 GPUs 同時訪問托管內(nèi)存是不可能的。這是因為 pre-Pascal GPUs 缺少硬件頁面錯誤,所以不能保證一致性。在這些 GPUs 上,內(nèi)核運(yùn)行時從 CPU 訪問將導(dǎo)致分段錯誤。

在 Pascal 和更高版本的 GPUs 上, CPU 和 GPU 可以同時訪問托管內(nèi)存,因為它們都可以處理頁錯誤;但是,由應(yīng)用程序開發(fā)人員來確保不存在由同時訪問引起的爭用條件。

在我們的簡單示例中,我們在內(nèi)核啟動后調(diào)用了 cudaDeviceSynchronize() 。這可以確保內(nèi)核在 CPU 嘗試從托管內(nèi)存指針讀取結(jié)果之前運(yùn)行到完成。否則, CPU 可能會讀取無效數(shù)據(jù)(在 Pascal 和更高版本上),或獲得分段錯誤(在 pre-Pascal GPUs )。

Pascal 及更高版本上統(tǒng)一內(nèi)存的好處 GPUs

從 PascalGPU 體系結(jié)構(gòu)開始,通過 49 位虛擬尋址和按需分頁 GPU 比率,統(tǒng)一內(nèi)存功能得到了顯著改善。 49 位虛擬地址足以使 GPUs 訪問整個系統(tǒng)內(nèi)存加上系統(tǒng)中所有 GPUs 的內(nèi)存。頁面 MIG 比率引擎允許 GPU 線程在非駐留內(nèi)存訪問時出現(xiàn)故障,因此系統(tǒng)可以根據(jù)需要從系統(tǒng)中的任何位置對 MIG 的內(nèi)存中的頁面進(jìn)行 MIG 分級,以實現(xiàn)高效處理。

允許使用統(tǒng)一內(nèi)存 cudaMallocManaged() 對統(tǒng)一內(nèi)存進(jìn)行分配。無論是在一個 GPU 上運(yùn)行還是在多個 GPU 上運(yùn)行,它都不會對應(yīng)用程序進(jìn)行任何修改。

另外, Pascal 和 VoltaGPUs 支持系統(tǒng)范圍的原子內(nèi)存操作。這意味著您可以對系統(tǒng)中任何地方的多個 GPUs 值進(jìn)行原子操作。這對于編寫高效的 multi-GPU 協(xié)作算法非常有用。

請求分頁對于以稀疏模式訪問數(shù)據(jù)的應(yīng)用程序尤其有利。在某些應(yīng)用程序中,不知道特定處理器將訪問哪些特定內(nèi)存地址。如果沒有硬件頁面錯誤,應(yīng)用程序只能預(yù)加載整個陣列,或者承受設(shè)備外訪問的高延遲成本(也稱為“零拷貝”)。但是頁面錯誤意味著只有內(nèi)核訪問的頁面需要被 MIG 評級。

關(guān)于作者

Mark Harris 是 NVIDIA 杰出的工程師,致力于 RAPIDS 。 Mark 擁有超過 20 年的 GPUs 軟件開發(fā)經(jīng)驗,從圖形和游戲到基于物理的模擬,到并行算法和高性能計算。當(dāng)他還是北卡羅來納大學(xué)的博士生時,他意識到了一種新生的趨勢,并為此創(chuàng)造了一個名字: GPGPU (圖形處理單元上的通用計算)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19485

    瀏覽量

    231516
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4805

    瀏覽量

    129583
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3301

    瀏覽量

    58032
收藏 人收藏

    評論

    相關(guān)推薦

    hyper 內(nèi)存,Hyper內(nèi)存:如何監(jiān)控與優(yōu)化hyper-v虛擬機(jī)的內(nèi)存使用

    在日常工作中,我們常常需要處理大量的文件和數(shù)據(jù),這些重復(fù)性任務(wù)不僅耗時耗力,還容易因疲勞而導(dǎo)致錯誤。幸運(yùn)的是,批量管理工具的出現(xiàn)為這問題提供了高效的解決方案。今天就為大家介紹Hyper內(nèi)存
    的頭像 發(fā)表于 01-24 14:15 ?261次閱讀
    hyper <b class='flag-5'>內(nèi)存</b>,Hyper<b class='flag-5'>內(nèi)存</b>:如何監(jiān)控與優(yōu)化hyper-v虛擬機(jī)的<b class='flag-5'>內(nèi)存</b>使用

    養(yǎng)成良好的編程習(xí)慣|堆內(nèi)存初值不定是0

    ;} 代碼很簡單,使用 malloc 申請段堆內(nèi)存,假設(shè)內(nèi)存空間足夠大。 通過 getchar 配合 while 循環(huán),從標(biāo)準(zhǔn)輸入獲取個字符串,直到遇到換行符結(jié)束。 最后就是把獲取
    的頭像 發(fā)表于 12-18 09:14 ?188次閱讀

    CNC系統(tǒng)一般可用幾種編程語言

    。CNC系統(tǒng)廣泛應(yīng)用于機(jī)械制造、汽車制造、航空航天等領(lǐng)域。  CNC系統(tǒng)的編程語言是實現(xiàn)CNC系統(tǒng)控制功能的關(guān)鍵技術(shù)之。以下是對CNC系統(tǒng)可用編程語言的詳細(xì)介紹:  G代碼(G-co
    的頭像 發(fā)表于 10-23 15:52 ?585次閱讀

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda來加速圖像處理

    有沒有大佬知道NI vision 有沒有辦法通過gpu和cuda來加速圖像處理
    發(fā)表于 10-20 09:14

    怎么在TMDSEVM6678: 6678自帶的FFT接口和CUDA提供CUFFT函數(shù)庫選擇?

    請教下gpgpu上包括4個Riscv cpu和個DPU, 沒有6678,要替換原來信號處理用的6678,該怎么在6678自帶的FFT接口和CUDA提供CUFFT函數(shù)庫選擇?
    發(fā)表于 09-27 07:20

    反射內(nèi)存卡工作環(huán)境介紹

    電子發(fā)燒友網(wǎng)站提供《反射內(nèi)存卡工作環(huán)境介紹.docx》資料免費(fèi)下載
    發(fā)表于 09-14 09:17 ?0次下載

    統(tǒng)一多云管理平臺怎么用?

     統(tǒng)一多云管理平臺的使用主要涉及資源納管、費(fèi)用控制和智能運(yùn)維等方面。統(tǒng)一多云管理平臺是種能夠同時管理多種公有云、私有云以及傳統(tǒng)IT環(huán)境的資源,并實現(xiàn)自動化和服務(wù)化交付的工具。它為企業(yè)提供了強(qiáng)大
    的頭像 發(fā)表于 08-14 11:28 ?291次閱讀

    打破英偉達(dá)CUDA壁壘?AMD顯卡現(xiàn)在也能無縫適配CUDA

    電子發(fā)燒友網(wǎng)報道(文/梁浩斌)直以來,圍繞CUDA打造的軟件生態(tài),是英偉達(dá)在GPU領(lǐng)域最大的護(hù)城河,尤其是隨著目前AI領(lǐng)域的發(fā)展加速,市場火爆,英偉達(dá)GPU+CUDA的開發(fā)生態(tài)則更加穩(wěn)固,AMD
    的頭像 發(fā)表于 07-19 00:16 ?5085次閱讀

    英國公司實現(xiàn)英偉達(dá)CUDA軟件在AMD GPU上的無縫運(yùn)行

    7月18日最新資訊,英國創(chuàng)新科技企業(yè)Spectral Compute震撼發(fā)布了其革命性GPGPU編程工具包——“SCALE”,該工具包實現(xiàn)了英偉達(dá)CUDA軟件在AMD GPU上的無縫遷移與運(yùn)行,標(biāo)志著在GPU計算領(lǐng)域,NVIDIA長期以來的市場壟斷地位或?qū)⒂瓉碇卮筇魬?zhàn)。
    的頭像 發(fā)表于 07-18 14:40 ?755次閱讀

    龍芯CPU統(tǒng)一系統(tǒng)架構(gòu)規(guī)范及參考設(shè)計下載

    *附件:LoongArch 系統(tǒng)調(diào)用(syscall)ABI.pdf *附件:龍芯 CPU 統(tǒng)一系統(tǒng)架構(gòu)規(guī)范(適用于 LA 架構(gòu)通用 PC、服務(wù)器系列)-v4.1.0.pdf *附件:龍芯CPU統(tǒng)一
    發(fā)表于 06-20 14:42

    軟件生態(tài)上超越CUDA,究竟有多難?

    神壇的,還是圍繞CUDA打造的系列軟件生態(tài)。 ? 英偉達(dá)——CUDA的絕對統(tǒng)治 ? 相信對GPU有過定了解的都知道,英偉達(dá)的最大護(hù)城河就是CUD
    的頭像 發(fā)表于 06-20 00:09 ?3860次閱讀

    cnc系統(tǒng)一般可用幾種編程語言

    。CNC系統(tǒng)廣泛應(yīng)用于機(jī)械制造、汽車制造、航空航天等領(lǐng)域。 CNC系統(tǒng)的編程語言是實現(xiàn)CNC系統(tǒng)控制功能的關(guān)鍵技術(shù)之。以下是對CNC系統(tǒng)可用編程語言的詳細(xì)介紹: G代碼(G-code
    的頭像 發(fā)表于 06-14 15:54 ?1345次閱讀

    Keil使用AC6編譯提示CUDA版本過高怎么解決?

    \' ArmClang: warning: Unknown CUDA version 10.2. Assuming the latest supported version 10.1
    發(fā)表于 04-11 07:56

    PyTorch高效編程實戰(zhàn)指南

    CUDA內(nèi)存池是對齊分配的,使用分散的block會帶來內(nèi)存碎片,同時對于相同操作,可以直接對contiguous buffer進(jìn)行操作,減少了更多的算子下發(fā),大塊計算效率也會更高。
    發(fā)表于 03-25 10:04 ?1590次閱讀
    PyTorch高效<b class='flag-5'>編程</b>實戰(zhàn)指南

    摩爾線程MUSA/MUSIFY與英偉達(dá)CUDA無依賴,開發(fā)者無憂

    首先,摩爾線程MUSA/MUSIFY并不受到英偉達(dá)CUDA這項條款的限制,使用者可以放心地使用其相關(guān)內(nèi)容。MUSA即摩爾線程自行研發(fā),享有高度自主知識產(chǎn)權(quán)的全功能GPU先進(jìn)計算統(tǒng)一系統(tǒng)架構(gòu);
    的頭像 發(fā)表于 03-06 09:22 ?1457次閱讀
    主站蜘蛛池模板: 欧美一级高清黄图片 | 久久精品国产99精品国产2021 | 22sihu国产精品视频影视资讯 | 久久国产精品久久久久久久久久 | 人人人人凹人人爽人人澡 | 人人插人人插 | 激情综合五月网 | 天堂最新版资源www在线 | 成熟女人免费一级毛片 | 欧美一级视频在线观看 | 高清不卡毛片免费观看 | 午夜性福利 | 日本午夜三级 | 伊人狼人在线 | 国产免费好大好硬视频 | 在线天堂在线 | 69老司机亚洲精品一区 | 一级视频免费观看 | 亚洲精品福利你懂 | 伊人天天干 | 国内精品久久久久久影院老狼 | 妹子干综合网 | 久久综合婷婷 | 久久精品国产夜色 | 日本午夜影院 | 亚洲一区二区三区高清 | 亚洲不卡在线播放 | 岛国最新资源网站 | 日韩欧美亚洲一区 | 成人窝窝午夜看片 | 黄色片视频网 | 亚洲欧美色图 | 国产小视频在线免费观看 | 亚欧洲乱码专区视频 | 黄色片 720p 黄色片链接 | 一区二区视频网 | 日韩黄色录像 | 性欧美大战久久久久久久野外 | 国产三级网站在线观看 | 久久婷婷午色综合夜啪 | bt磁力在线搜索 |