CUDA默認流的同步行為

默認流
對于需要指定 cudaStream_t參數的 cuda API,如果將 0作為實參傳入,則視為使用默認流;對于不需要指定 cudaStream_t參數的 cuda API,則也視為使用默認流。
cuda中,默認流有兩種類型,一種是 legacy默認流,一種是 per-thread默認流,這兩種默認流的同步行為不一樣,在使用的時候需要注意一下。具體使用哪種默認流,有以下三種方式進行指定:

  1. 不指定,默認使用 legacy默認流;
  2. 在編譯 cuda程序時,通過 nvcc--default-stream進行指定,可選的取值是:{legacy|per-thread}
  3. 在需要傳入 cudaStream_t/ CUstream參數的時候,指定:cudaStreamLegacy/ CU_STREAM_LEGACYlegacy默認流),或 cudaStreamPerThread/ CU_STREAM_PER_THREADper-thread默認流)。
    下面重點介紹一下 legacy默認流和 per-thread默認流在同步行為上的差異。

legacy 默認流
legacy默認流會與同一個 CUcontext(如果是使用 runtimeAPI,則每個設備對應一個 CUcontext)中的其他流都進行同步,但 non-blocking的流除外。也即是,在執行 legacy默認流中的任務之前,會先等待其他所有 blocking的流執行完成,然后開始執行 legacy默認流中的任務,并且在 legacy默認流后面出現的其他 blocking流中的任務,會先等待 legacy默認流中的任務執行完成,再開始執行。

假設,下面的代碼在流 slaunch了核函數 k_1,在 legacy默認流中 launch了核函數 k_2,在流 slaunch了核函數 k_3

cudaStream_t s;
cudaStreamCreate(&s);
k_1<<<1, 1, 0, s>>>();
k_2<<<1, 1>>>();
k_3<<<1, 1, 0, s>>>();

則上述代碼的同步行為是 k_2會被 k_1阻塞,k_3會被 k_2阻塞。

但如果是 non-blocking流,則不會出現上述同步行為,也即是,下面三個核函數會存在并行執行的情況,例如:

cudaStream_t s;
cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking);
k_1<<<1, 1, 0, s>>>();
k_2<<<1, 1>>>();
k_3<<<1, 1, 0, s>>>();

per-thread 默認流
在一個 CUcontext內,每個線程都有一個 per-thread默認流,這個流不與其他流進行同步(就像是一個顯式創建的流那樣),但如果在一個程序中同時使用了 legacy默認流和 per-thread默認流,則 per-thread默認流會與 legacy默認流保持同步。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921459.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921459.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921459.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

「數據獲取」《中國電力統計年鑒》(1993-2024)(含中國電力年鑒)

01、數據簡介一、《中國電力統計年鑒》作為全面系統反映中國電力領域發展狀況的權威性年度統計資料&#xff0c;涵蓋了電力建設、生產、消費及供需等全鏈條關鍵信息。其編制工作有著深厚的歷史積淀&#xff0c;可追溯至 20 世紀 50 年代&#xff0c;歷經數十年的積累與完善&…

《AI大模型應知應會100篇》第68篇:移動應用中的大模型功能開發 —— 用 React Native 打造你的語音筆記摘要 App

&#x1f4f1; 第68篇&#xff1a;移動應用中的大模型功能開發 —— 用 React Native 打造你的語音筆記摘要 App &#x1f3af; 核心目標&#xff1a;零門檻集成大模型&#xff0c;5步開發跨平臺智能功能 &#x1f9e9; 適用人群&#xff1a;前端開發者、產品經理、獨立開發者 …

FPGA ad9248驅動

ad9248的最高時鐘頻率65mhz&#xff0c;采用cmos3.3v電壓的并行io接口&#xff0c;做成電子模塊后一般為雙通道adc&#xff0c;有兩個對外輸出時鐘cha_clk與chb_clk&#xff0c;一個并行輸入端口&#xff0c;14分辨率的ddr_data&#xff0c;其模塊邏輯如下&#xff0c;首先向ad…

Spring MVC 處理請求的流程

Spring MVC 處理請求的流程流程步驟詳解第1步&#xff1a;發起請求 (HTTP Request)第2步&#xff1a;映射處理器 (Handler Mapping)第3步&#xff1a;獲取適配器 (Handler Adapter)第4步&#xff1a;執行攔截器前置處理 (Interceptors - preHandle)第5步&#xff1a;真正調用處…

敏捷scrum管理實戰經驗總結

1.敏捷 敏捷的構成 敏捷由實踐來源、應用場景、組織文化、領導力、團隊、需求、管理、技術、質量、度量、交付、過程改進、大型項目組合管理以及受監管行業中的敏捷等構成 敏捷開發的特點 短發布周期小批量的方式、開展從需求到實現的開發工作高層級的預先規劃結合詳細的即時規…

南科大適應、協同與規劃的完美融合!P3:邁向多功能的具身智能體

作者&#xff1a;Shengli Zhou1^{1}1, Xiangchen Wang1^{1}1, Jinrui Zhang1^{1}1, Ruozai Tian2^{2}2, Rongtao Xu2,3^{2,3}2,3, Feng Zheng1,2^{1,2}1,2單位&#xff1a;1^{1}1南方科技大學&#xff0c;2^{2}2時空智能&#xff0c;3^{3}3穆罕默德本扎耶德人工智能大學論文標題…

自動化流水線

import React, { useState, useEffect } from ‘react’; import { ChevronRight, CheckCircle, Circle, AlertCircle, Clock, Play, Pause, Settings, Code, Server, Shield, Database, Globe, Zap, FileText, Users, GitBranch, Package, Monitor, ChevronDown } from ‘luci…

【高等數學】第十一章 曲線積分與曲面積分——第三節 格林公式及其應用

上一節&#xff1a;【高等數學】第十一章 曲線積分與曲面積分——第二節 對坐標的曲線積分 總目錄&#xff1a;【高等數學】 目錄 文章目錄1. 格林公式2. 平面上曲線積分與路徑無關的條件3. 二元函數的全微分求積4. 曲線積分的基本定理1. 格林公式 單連通與復連通區域 設 DDD …

Boost電路:平均狀態空間建模

電路特征介紹如圖所示是一個非理想情況下的boost電路&#xff0c;其中L1L_{1}L1?和RL1R_{L1}RL1?是分別是電感和串聯電阻&#xff1b;C1C_{1}C1?和RC1R_{C1}RC1?是輸出電容和串聯電阻&#xff1b;Q1Q_{1}Q1?是MOS管&#xff0c;其導通電阻是RonR_{on}Ron?&#xff1b;D1D…

免費網站模板/網站模板建站的優勢/如何下載網站模板搭建網站?

在網站建設領域&#xff0c;“網站模板” 是降低技術門檻、提升建站效率的核心工具&#xff0c;尤其適合非專業開發者或追求低成本、快上線的需求場景。下面從定義、核心優勢兩方面展開詳細解析&#xff0c;幫助你全面理解其價值。 一、什么是網站模板&#xff1f; 網站模板&am…

【MATLAB例程】平面上的組合導航例程,使用EKF融合IMU和GNSS數據,8維狀態量和2維觀測量,附代碼下載鏈接

文章目錄程序詳解概述系統架構核心數學模型性能評估算法特點運行結果MATLAB源代碼程序詳解 概述 本代碼實現基于擴展卡爾曼濾波器&#xff08;EKF&#xff09;的二維組合導航系統&#xff0c;融合IMU&#xff08;慣性測量單元&#xff09;和GNSS&#xff08;全球導航衛星系統…

react生命周期,詳細版本

React 組件的生命周期分為三個階段:掛載(Mounting)、更新(Updating) 和 卸載(Unmounting)。以下是類組件生命周期的詳細說明(基于 React 16.3+ 版本): 一、掛載階段(Mounting) 組件實例被創建并插入 DOM 時的流程: constructor(props) ○ 用途:初始化狀態(this…

騰訊最新開源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架構,重新定義視頻音效新SOTA!

一、模型介紹HunyuanVideo-Foley 是騰訊混元團隊在2025年8月底開源的一款端到端視頻音效生成模型。它旨在解決AI生成視頻“有畫無聲”的痛點&#xff0c;通過輸入視頻和文本描述&#xff0c;就能自動生成電影級別的同步音效&#xff0c;顯著提升視頻的沉浸感。它是專為視頻內容…

計算機原理(二)

計算機原理系列 歡迎大家關注「海拉魯知識大陸」 多交流不迷路 計算機原理&#xff08;一&#xff09; 繼續上一篇計算機原理&#xff08;一&#xff09;深入了解程序執行部分&#xff0c;進一步說說程序在馮諾依曼模型上如何執行。如果沒有了解的童鞋可以查看我上一篇文章。…

【設計模式】 工廠方法模式

系列文章目錄 文章目錄系列文章目錄需要了解工廠制造細節嗎&#xff1f;簡單工廠模式實現工廠方法模式的實現簡單方法&#xff1f; 工廠方法&#xff1f;總結需要了解工廠制造細節嗎&#xff1f; 我們在前面的文章中為大家介紹了簡單工廠模式&#xff0c;我們知道 簡單工廠模式…

詳解 Java 中的 CopyOnWriteArrayList

目錄 【1】CopyOnWriteArrayList 簡介 【2】核心原理 1.底層數據結構 2.寫時復制機制 【3】CopyOnWriteArrayList常用方法及實例 1.添加元素方法 add () 2.獲取元素方法 get () 3.刪除元素方法remove() 【4】優缺點分析 【5】適用場景 【6】總結 【1】CopyOnWriteAr…

新手SEO優化快速起步教程

本教程專為SEO新手設計&#xff0c;幫助您快速上手優化工作。我們將一步步帶您了解基礎概念&#xff0c;包括高效挖掘關鍵詞的方法、內容優化的核心技巧&#xff0c;以及網站基礎設置的關鍵步驟。后續還會講解提升排名的實用策略、如何監控效果并進行調整&#xff0c;確保您能系…

Minecraft圖片搜索技巧

以下是更多專注 Minecraft 內容的高質量社區平臺&#xff0c;涵蓋建筑展示、模組/材質分享、實機截圖、藝術創作等方向&#xff0c;按類型分類整理&#xff1a;---一、國際知名綜合社區平臺 特點 鏈接 CurseForge 模組/材質/數據包第一倉庫&#xff0c;作者更新快&#xff0c;支…

數學建模-非線性規劃(NLP)

1-理論知識介紹應用2-基于matlab實現非線性規劃1&#xff09;例1% 清除工作臺和命令行 clear;clc; x0[0 0 0]; A [-1 1 -1]; b 0; [x,value] fmincon(f1,x0,A,b,[],[],[],[],nonlfun1) function f f1(x)f x(1)^2x(2)^2x(3)^28; end function [c,ceq] nonlfun1(x)c [x(1)…

人工智能學習:什么是seq2seq模型

一、seq2seq模型 Seq2Seq(Sequence-to-Sequence)模型是一種用于處理序列轉換問題的深度學習模型,廣泛應用于機器翻譯、文本摘要、對話系統、語音識別等領域。Seq2Seq模型的核心思想是通過一個編碼器(Encoder)將輸入序列編碼為一個固定長度的上下文向量(Context Vector),…