CUDA學習之五(通用執行時元件)

2021-05-22 12:48:52 字數 3799 閱讀 6411

主機和裝置函式均可使用通用執行時元件。

內建向量型別

char1

、uchar1

、char2

、uchar2

、char3

、uchar3

、char4

、uchar4

、short1

、ushort1

、short2

、ushort2

、short3

、ushort3

、short4

、ushort4

、int1

、uint1

、int2

、uint2

、int3

、uint3

、int4

、uint4

、long1

、ulong1

、long2

、ulong2

、long3

、ulong3

、long4

、ulong4

、float1

、float2

、float3

、float4

、double2

dim3

型別:此型別是一種整形向量型別,基於用於指定維度的

uint3

。在定義型別為

dim3

的變數時,未指定的任何元件都將初始化為1。

數學函式:包含了當前支援的

c/c++

標準庫數學函式的完整列表,還分別給出了在裝置上執行時的誤差範圍。

在主機**中執行時,給定函式將在可用的前提下使用

c 執行時實現。

計時函式

clock_t clock();

在裝置**中執行時,返回隨每一次時鐘週期而遞增的每個多處理器計數器的值。在核心啟動和結束時對此計數器取樣,確定兩次取樣的差別,然後為每個執行緒記錄下結果,這為各執行緒提供一種度量方法,可度量裝置為了完全執行執行緒而占用的時鐘週期數,但不是裝置在執行執行緒指令時而實際使用的時鐘週期數。前乙個數字要比後乙個數字大得多,因為執行緒是分時的。

紋理型別

cuda

支援gpu

用於圖形的紋理硬體子集,使之可訪問紋理儲存器。從紋理儲存器而非全域性儲存器讀取資料可帶來多方面的效能收益。

核心使用稱為紋理獲取(

texture fetch

)的裝置函式讀取紋理儲存器。紋理獲取的第乙個引數指定稱為紋理參考的物件。

紋理參考定義獲取哪部分的紋理儲存器。必須通過主機執行時函式(將其繫結到儲存器的某些區域(即紋理),之後才能供核心使用。多個不同的紋理參考可繫結到同乙個紋理,也可繫結到在儲存器中存在重疊的紋理。

紋理參考有一些屬性。其中之一就是其維度,指定紋理是使用乙個紋理座標(

texture coordinate

)將紋理作為一維陣列定址、使用兩個紋理座標作為二維陣列定址,還是使用三個紋理座標作為三維陣列定址。陣列的元素稱為

texel

,即「texture elements

(紋理元素)」的簡寫。

其他屬性定義紋理獲取的輸入和輸出資料型別,並指定如何介紹輸入座標、應進行怎樣的處理。

紋理參考的部分屬性是不變的,在編譯時必須為已知,這些屬性是在宣告紋理參考時指定的。紋理參考在檔案作用域內宣告,形式為

texture

型別的變數:

texturetexref;

其中:type

指定獲取紋理時所返回的資料型別;

type

僅限於基本整型、單精度浮點型別和第

4.3.1.1

節定義的

1 元件、

2 元件和4

元件向量型別;

dim

指定紋理參考的維度,其值為1、

2 或3;

dim

是乙個可選的引數,預設值為1;

readmode

等於cudareadmodenormalizedfloat

或cudareadmodeelementtype

;如果是

cudareadmodenormalizedfloat

,且type

為16

位或8

位整型型別,則值將作為浮點型別返回,對於所有整型資料而言,無符號整型將對映為

[0.0, 1.0]

,有符號整型將對映為

[-1.0, 1.0]

,例如,乙個值為

0xff

的無符號

8 位紋理元素將被讀取為

1;如果是

cudareadmodeelementtype

,則不執行任何轉換操作;

readmode

是乙個可選的引數,預設值為

cudareadmodeelementtype

。預設情況下,使用

[0, n

)範圍內的浮點座標引用紋理,其中的

n 是紋理在對應於座標的維度中的大小。例如,有乙個大小為

64x32

的紋理,在x 和

y 維度引用此紋理時座標分別處於

[0, 63]

和[0, 31]

範圍內。規範化的紋理座標將在

[0.0, 1.0)

的範圍內指定,而非

[0, n)

,因此在規範化的座標內,同一

64x32

紋理的定址範圍在x 和

y 維度均為

[0, 1)

。一般情況下,紋理座標與紋理大小無關,規範化的紋理座標通常足以滿足一些應用程式的需求。

定址模式定義在紋理座標超出範圍時將出現怎樣的情況。在使用非規範化紋理座標時,超出

[0, n)

範圍的紋理座標將被調整:小於

0 的值被設定為

0,大於或等於

n 的值被設定為

n-1。在使用規範化紋理座標時,預設定址模式也是調整座標:小於

0.0

或大於1.0

的值將被調整到範圍

[0.0, 1.0)

內。對於規範化座標,「

warp

塊」的定址模式也可指定。

warp

塊定址往往在紋理包含週期訊號時使用。它僅使用紋理座標的一部分,例如,

1.25

被視為0.25

,-1.25

被視為0.75.

線性紋理過濾只能對配置為返回浮點資料的紋理進行。這將在相鄰

texel

間執行低精度插值。在啟用時,位於紋理獲取位置周圍的

texel

將被讀取,紋理獲取的返回值將根據紋理座標在

texel

間的位置進行插值。對於一維紋理執行簡單的線性插值,而對於二維紋理則執行雙線性插值。

紋理可以是線性儲存器或

cuda

陣列的任意區域。

維度僅能為1;

不支援紋理過濾;

僅可使用非規範化整型紋理座標定址;

不支援多種定址模式:超出範圍的紋理訪問將返回零。

硬體會對紋理基址實施對齊要求。為了抽象這種來自程式設計師的對齊要求,繫結裝置儲存器上的紋理參考的函式將傳回乙個位元組偏移,必須將其應用到紋理獲取,之後才能讀取所需的儲存器。

cuda

分配例程返回的基址指標符合這種對齊限制,因此應用程式可通過向

cudabindtexture()/cutexrefsetaddress()

傳遞所分配的指標來完全避免偏移。

五 通用支援 spring中事務使用

4 1 什麼是事務所謂的事務,表示一次不可再分的操作序列 這些操作序列中的所有操作 要麼都執行,要麼都不執行 它是乙個不可分割的完整的工作單元 4 2 傳統資料庫的事務特性acid c i d 4 3 spring事務特性 一般用於增刪改操作 supports 一般用於查詢操作一般不會單獨使用,會與...

STM32學習筆記(五) 通用定時器計數延時

stm32f40x系列總共最多有14個定時器,定時器分為三類 基本定時器 通用定時器和高階定時器。它們的都是通過計數來達到定時的目的,和51的定時器差不多,基本原理都是一樣的,就是功能多了一些,這些計數器都是自動重新裝載初值的,使用起來非常方便,而且計數時鐘頻率可以通過分頻係數來設定。本文章將介紹使...

STM32學習筆記(五) 通用定時器計數延時

stm32f40x系列總共最多有14個定時器,定時器分為三類 基本定時器 通用定時器和高階定時器。它們的都是通過計數來達到定時的目的,和51的定時器差不多,基本原理都是一樣的,就是功能多了一些,這些計數器都是自動重新裝載初值的,使用起來非常方便,而且計數時鐘頻率可以通過分頻係數來設定。本文章將介紹使...