那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過三個簡單步驟來設置數據流

MATLAB ? 來源:MATLAB ? 作者:MATLAB ? 2021-09-10 10:03 ? 次閱讀

MathWorks信號處理系統設計往往涉及復雜的算法或者數據密集型應用,因此通常具有較高的計算復雜度。構建和仿真這些復雜系統可能相當耗時。Simulink 中的數據流執行域功能是減少模型仿真時間的方法之一。該功能可以對 Simulink 模型自動分區,然后使用主機上閑置的 CPU 內核并行執行各分區,從而加速仿真。本文說明如何通過三個簡單步驟來設置數據流。然后,我們用無線電模型作為示例來演示數據流的實際運用,并比較啟用和未啟用數據流的模型仿真時間。此示例中使用的模型可以直接點擊文末“閱讀原文”下載

數據流使用的并行機制類型

為進行模型分區和并行執行,數據流會采用以下數據和任務并行機制組合之一(圖 1):

顯式并行機制通過不同算法處理不同數據集。

展開并行機制通過同一算法處理一個數據流的連續幀。

管道并行機制通過不同算法處理同一數據的不同部分。

設置數據流

要在 Simulink 模型中啟用數據流執行域,首先要實現子系統。實現方式取決于您的具體設計進度。如果您的設計剛剛開始,請使用 DSP System Toolbox 中的 Dataflow Subsystem 模塊(圖 2)。該模塊經過預配置,可以直接使用。您只需將它拖到 Simulink 模型中,然后在其中填充算法組件。 如果您的設計模型已構建完畢,請將表示要并行化的算法的模塊放在子系統中,并按如下方式設置數據流:

選擇您剛剛創建的子系統。

在屬性檢查器的“執行”選項卡下,勾選設置執行域復選框。

將域選項設置為數據流。

在子系統內部,左下角的 》 圖標表示子系統設置為數據流執行域。數據流執行域首先通過在單線程上運行模型來分析模型,然后自動進行子系統分區以用于多線程執行。

數據流的實際運用

該示例模型對無線電發射機和接收機進行仿真。它包含數字上變頻器和下變頻器來調整信號頻率,并實現調制器和解調器(圖 3)。輸入是以 8 kHz 采樣的錄制語音。輸出是兩個頻譜分析儀和一個音頻接收端。

首先,我們測量在不啟用數據流的情況下仿真該模型所需的時間1。我們可以注釋掉輸出模塊,以便專注于仿真算法,而不受運行示波器和音頻輸出所需的固定時長的限制。(1. 所有仿真都在 Windows 桌面計算機上運行,該計算機采用 Intel Xeon CPU W-2133 @ 3.6 GHz 6 核 12 線程處理器。)我們使用 tic-toc 命令測量仿真時間:

modelname = ‘mono_radiomodel’;

tic;

simData = sim(modelname);

t = toc

運行該模型的執行時間為 3.67 秒。現在我們引入數據流。我們將表示算法的模塊放入子系統中,并將域設置為數據流(圖 4)。

助手建議的更改之一是添加延遲。當數據流發現并行機制可能增大吞吐量時,通常會向模型添加延遲。沿信號線添加的延遲用 z-n 標簽表示。我們接受更改,并將啟用了數據流的模型保存為 mono_radiomodel_dataflow。然后,我們使用與之前相同的 tic-toc 命令來測量新子系統的執行時間。

modelname = ‘mono_radiomodel_dataflow’;

tic;

simData2 = sim(modelname);

t_Dataflow = toc

啟用數據流后的執行時間為 2.5 秒,比正常的單線程執行速度快 1.7 倍。加速得益于編譯器優化、模型設置更改和數據流添加的延遲。然而,該模型僅在單線程上執行,加速并不顯著。這是因為大部分計算負載都集中在上下變頻器模塊中。當計算負載分散在整個模型中時,數據流效果最佳,因為這為創建并行線程提供了更多機會。在下一節中,我們將擴展模型,展示數據流的實現如何進一步提高仿真性能。

處理大型模型

我們通過引入多通道音頻輸入信號來增大模型的計算復雜度。這會使需要處理的數據量倍增,也為數據流提供了更多優化仿真性能的機會。圖 6 顯示經過修改、采用立體聲音頻輸入的模型,運行時間為 18.6 秒。通過啟用信號維度信息疊加,我們可以看到信號輸入確實有兩個音頻通道。

在啟用數據流并重新運行模型后,我們觀察到模型在 5 個并發線程上運行,執行時間為 4.5 秒,幾乎實現了 4 倍加速(圖 7)。

使用數據流的多線程代碼生成數據流支持使用 Simulink Coder 和 Embedded Coder 的單核和多核 C/C++ 代碼生成。首先在 Simulink 模型的“求解器”窗格中啟用允許任務在目標上并發執行參數,然后使用 Ctrl + B 生成代碼。為桌面目標生成的代碼通過 OpenMP 實現多線程化。為 Embedded Coder 目標生成的代碼通過 POSIX 實現多線程化。圖 8 顯示基于以上無線電模型生成的 OpenMP C 代碼,包括由數據流創建的并發任務。

數據流的限制

雖然數據流有助于加速大多數仿真,但它對有些模型可能并不適用,例如較小的模型、不太復雜的模型,或者計算負載集中在少數幾個模塊中的模型。在這些情況下,數據流實現的速度提升不會抵消在并行線程上同步和執行模型所需的開銷。如無線電模型示例所示,當計算負載在模型中均勻分布時,數據流效果最佳,因為均勻分布的負載意味著有更多機會進行模型分區和并行執行。就建模限制而言,從版本 2020b 開始,數據流不支持連續模塊、可變大小信號或虛擬 Simulink 總線的多線程仿真。

小結

通過數據流執行域,您可以在 Simulink 模型中識別可以分布到多個線程中并行執行的建模模式。這種方法可利用主機 CPU 上閑置的處理能力,優化吞吐量,并減少模型仿真時間。數據流執行域最適合計算負載分散在整個模型中的情形(此時可引入并行機制),并且只能處理離散信號。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真
    +關注

    關注

    50

    文章

    4124

    瀏覽量

    133993
  • 信號
    +關注

    關注

    11

    文章

    2804

    瀏覽量

    77104
  • 模型
    +關注

    關注

    1

    文章

    3307

    瀏覽量

    49223

原文標題:加速 Simulink 模型中的信號處理算法仿真

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用ADS1281做調制器,兩調制器都是輸出1位的數據流,那合并之后數據流是幾位的呢?

    ]). 現在有以下兩問題: 1.兩調制器都是輸出1位的數據流,那合并之后數據流是幾位的呢? 2.如果取所有可能的情況,Y[n]的輸出范圍就是-24~+25,這個又要怎么理解呢?
    發表于 02-05 09:10

    適用于Oracle的SSIS數據流組件:提供快速導入及導出功能

    使用SSIS 數據流組件,通過與關鍵數據庫和云服務的 Oracle 數據集成改進您的 ETL 流程,這些組件提供快捷和可靠的
    的頭像 發表于 01-15 10:51 ?229次閱讀
    適用于Oracle的SSIS<b class='flag-5'>數據流</b>組件:提供快速導入及導出功能

    TMETRIC:簡單步驟將工作區連接到時間跟蹤應用程序

    將計時器按鈕添加到組合門票 完成這三個簡單步驟以在 Assembla 中啟用時間跟蹤。設置時間不超過 3 分鐘。 注冊 TMetric 具有高級計費和報告功能的時間跟蹤應用程序 安裝瀏覽器擴展
    的頭像 發表于 01-07 09:23 ?123次閱讀
    TMETRIC:<b class='flag-5'>簡單步驟</b>將工作區連接到時間跟蹤應用程序

    Devart SSIS數據流組件

    Devart SSIS 數據流組件是功能強大的工具,旨在簡化 SQL Server Integration Services (SSIS) 包內的 ETL 流程,使用戶無需編寫復雜的代碼即可通過
    的頭像 發表于 01-05 11:08 ?203次閱讀
    Devart SSIS<b class='flag-5'>數據流</b>組件

    理解ECU數據流的分析方法

    隨著汽車電子化程度的提高,ECU在車輛中扮演的角色越來越重要。它們不僅控制著發動機管理、變速箱、制動系統等關鍵功能,還涉及到車輛的舒適性和安全性。 ECU數據流分析的重要性 故障診斷 :通過
    的頭像 發表于 11-05 11:07 ?560次閱讀

    簡述光刻工藝的三個主要步驟

    “ 光刻作為半導體中的關鍵工藝,其中包括3大步驟的工藝:涂膠、曝光、顯影。三個步驟有一異常,整個光刻工藝都需要返工處理,因此現場異常的處理顯得尤為關鍵”
    的頭像 發表于 10-22 13:52 ?835次閱讀

    220v單管自激最簡單三個步驟是什么

    對于220V單管自激電路,雖然“最簡單三個步驟”可能因具體電路設計和應用需求而有所不同,但我可以概括出一般性的、簡化的步驟,這些步驟旨在提供
    的頭像 發表于 09-18 11:28 ?790次閱讀

    快速確定升壓轉換器最大輸出電流的三個步驟

    電子發燒友網站提供《快速確定升壓轉換器最大輸出電流的三個步驟.pdf》資料免費下載
    發表于 09-07 10:42 ?0次下載
    快速確定升壓轉換器最大輸出電流的<b class='flag-5'>三個</b><b class='flag-5'>步驟</b>

    統一日志數據流

    統一日志數據流圖 日志系統數據流圖 系統進行日志收集的過程可以分為三個環節: (1)日志收集和導入ElasticSearch (2)ElasticSearch進行索引等處理 (3)可視化操作,查詢等
    的頭像 發表于 08-21 15:00 ?355次閱讀
    統一日志<b class='flag-5'>數據流</b>圖

    示波器電流探頭最簡單三個步驟是什么

    具有重要意義。下面介紹示波器電流探頭的三個簡單步驟步驟一:選擇合適的電流探頭 確定測量范圍 :首先,需要根據待測電路的電流大小選擇合適的電流探頭。電流探頭通常有不同的量程,如10A、100A、1000A等,選擇一
    的頭像 發表于 08-09 14:24 ?731次閱讀

    電源時序器最簡單三個步驟是什么

    電源時序器是一種用于控制多個電源設備按特定順序開啟和關閉的設備。它可以廣泛應用于各種電子設備、舞臺音響、照明系統等領域。以下是電源時序器最簡單三個步驟的介紹: 連接電源時序器 在開始使用電源時序器
    的頭像 發表于 07-08 14:39 ?1606次閱讀

    建立神經網絡模型的三個步驟

    建立神經網絡模型是一復雜的過程,涉及到多個步驟和細節。以下是對建立神經網絡模型的三個主要步驟的介紹: 第一步:數據準備 1.1
    的頭像 發表于 07-02 11:20 ?1143次閱讀

    變頻器快慢調速最簡單三個步驟

    調速的三個簡單步驟。 一、變頻器的基本原理 在了解變頻器快慢調速的步驟之前,我們首先需要了解變頻器的基本原理。變頻器是一種將工頻電源轉換為可調頻率電源的電氣設備,通過改變輸出頻率的大
    的頭像 發表于 06-17 15:17 ?2579次閱讀

    研控8線步進電機最簡單三個步驟

    步進電機是一種將電脈沖信號轉換為機械角位移的電機,廣泛應用于各種自動化設備和機器人中。研控8線步進電機是一種常見的步進電機類型,具有較高的精度和穩定性。本文將詳細介紹研控8線步進電機的三個簡單步驟
    的頭像 發表于 06-12 09:16 ?1397次閱讀

    RISC-V的中斷處理 中斷操作三個步驟

    中斷操作三個步驟: 1、中斷初始化 2、trap處理 3、用戶中斷處理
    的頭像 發表于 05-20 16:38 ?1381次閱讀
    大发8888迅雷下载免费| 欧洲娱乐场| 太阳城百家乐官网坡解| 圣淘沙百家乐官网游戏| 百家乐官网用品| 皇冠博彩| 皇家娱乐城| 克什克腾旗| 百家乐官网画哪个路单| 百家乐真人投注网站| 华泰百家乐的玩法技巧和规则| 安桌百家乐游戏百家乐 | 尊爵娱乐| 百家乐官网庄闲桌子| 涂山百家乐官网的玩法技巧和规则 | 澳门百家乐官网| 百家乐断缆赢钱| 百家乐丽| 百家乐官网开庄概率| 宝马会百家乐现金网| 金盛娱乐| 百家乐在线怎么玩| 双色球大赢家| 百家乐官网规则以及玩法 | 百家乐怎么玩| 百家乐游戏群号| 大发888平台| 真钱百家乐官网五湖四海全讯网| 免费百家乐官网统计| 金博士娱乐城优惠| 百家乐官网国际娱乐网| 威尼斯人娱乐场钓鱼网站| 百家乐官网千术道具| 澳门百家乐实战视频| 鄂伦春自治旗| 百家乐透明牌靴| 噢门百家乐官网注码技巧| 真人版百家乐试玩| 利都百家乐官网国际赌场娱乐网规则| 大发888古怪猴子| 风水8闰24山|