日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

OpenCL 第10课:kernel,work_item和workgroup

發布時間:2023/12/15 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 OpenCL 第10课:kernel,work_item和workgroup 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:http://www.cmnsoft.com/wordpress/?p=1429

前幾節我們一起學習了幾個用OPENCL完成任務的簡單例子,從這節起我們將更詳細的對OPENCL進行一些“理論”學習。

kernel:是指一個用opencl c語言編寫的、代表一個單一執行實例的代碼單元。opencl c語言看起來跟C語言函數非常相像,都有一個參數列表“局部”變量定義和標準控制流結構。opencl術語中把這種kernel實例稱為work-item(工作項)。但opencl kernel與c語方函數的區別在于其并行語義。

work_item:是定義在一個很大的并行執行空間中的一小部分。是并行操作中每一部分的實例化。通俗來說,可以理解為kernel里定義的執行函數。當kernel啟動后會創建大量work_item來同時執行,以完成并行任務。work_item根所其數據結構大小可分為一維、二維和三維數據。work_item之是的運行是相互獨立的,不同步的。

work_group:opencl將全局執行空間劃分為大量大小相等的,一維、二維、三維的work_item集合,這個集合就是work_group。在work_group內部,各個work_item之間允許一定程度的通信。而有work_group保證并發執行來允許其內部的work_item之間的本地同步。

在實際編寫內核中,要了解線程調度的維度數,work_group的大小是很重要的,這有利于我們優化編寫的內核程序。opencl提供了一此非常有用的函數供我們調用(在內核中調用)。

uint get_work_dim(): 返回線程調度的維度數。

uint get_global_size(uint dimension): 返回在所請求維度上work_item的總數。

uint get_global_id(uint dimension): 返回在所請求的維度上當前work_item在全局空間中的索引。

uint get_local_size(uint dimension): 返回在所請求的維度上work-group的大小。

uint get_local_id(uint dimension): 返回在所請求的維度上,當前work_item在work_group中的索引。

uint get_number_groups(uint dimension): 返回在所請求維度上work-group的數目,這個值等于get_global_size 除以 get_local_size。

uint get_group_id(uint dimension): 返回在所請求的維度上當前wrok_group在全局空間中的索引。

關于使用這些函數,我們舉一個之前學過的例子。在第7課《旋轉變換(1)》中的內核程序中原文是這樣的。


__kernel void rotation(__global int* A,
                    __global int* B,
                    int width,
                    int height,
                    float sinangle,
                    float cosangle)
{
    //獲取索引號,這里是二維的,所以可以取兩個
    //否則另一個永遠是0
    int col = get_global_id(0);
    int row = get_global_id(1);
 
    //計算圖形中心點
    float cx = ((float)width)/2;
    float cy = ((float)height)/2;
 
    int nx = (int)(cx + cosangle * ((float)col-cx) + sinangle * ((float)row-cy));
    int ny = (int)(cy + (-1*sinangle) * ((float)col-cx) + cosangle * ((float)row-cy));
 
    //邊界檢測
    if(nx>=0 && nx<width && ny>=0 && ny<height)
    {
        B[nx + ny*width] = A[col + row*width];
    }
 
}

這里傳遞的width和height大小是一樣的,表示圖像數據長寬的大小。其實也就是維度上work_item的總數,我們可以把代碼改成。

__kernel void rotation(__global int* A,
                    __global int* B,
                    int width,
                    int height,
                    float sinangle,
                    float cosangle)
{
    //獲取索引號,這里是二維的,所以可以取兩個
    //否則另一個永遠是0
    int col = get_global_id(0);
    int row = get_global_id(1);
 
    //計算圖形中心點
    float cx = ((float)get_global_size(0))/2;
    float cy = ((float)get_global_size(0))/2;
 
    int nx = (int)(cx + cosangle * ((float)col-cx) + sinangle * ((float)row-cy));
    int ny = (int)(cy + (-1*sinangle) * ((float)col-cx) + cosangle * ((float)row-cy));
 
    //邊界檢測
    if(nx>=0 && nx<get_global_size(0) && ny>=0 && ny<get_global_size(0))
    {
        B[nx + ny*get_global_size(0)] = A[col + row*get_global_size(0)];
    }
 
}

把所有的width和heigh全部改成get_global_size(0),程序運行結果是一樣的。而且我們還可以少傳遞兩個參數。節省空間,提高效率。大家看下以前的例子,看看那些代碼我們還可以優化呢。

總結

以上是生活随笔為你收集整理的OpenCL 第10课:kernel,work_item和workgroup的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线免费视频 | 欧美专区一区 | 久久机热| 激情文学88 | 成人做爰视频www网站小优视频 | 无码国产伦一区二区三区视频 | 人人干97 | 9l视频自拍九色9l视频成人 | 中文字幕欧美日韩 | 国产精品调教视频 | 嫩草一区| 在线观看国产一区二区 | 久久色播| 尤物网站在线 | www.偷拍.com | 欧美怡红院 | 老鸭窝成人 | 自拍偷拍电影 | 久久密| 草草视频在线观看 | 亚洲美女一区 | 国产成人一区二区三区电影 | 无码人妻丰满熟妇区毛片蜜桃精品 | 国产情趣视频 | 性欧美欧美巨大69 | 噜啪啪 | 一区二区三区四区人妻 | 中国免费毛片 | 91tv在线观看| 在线欧美色| 久草福利资源在线 | 深夜福利麻豆 | 欧美xxxx69| а√天堂资源在线 | 嫩草影院av | 亚洲不卡中文字幕无码 | 国产美女网| 久久久久在线观看 | 欧美三级a| 国产操 | 欧美乱做爰xxxⅹ久久久 | 免费99视频| 国产一卡二卡三卡四卡 | 九九热在线观看 | 国产成人一区 | 强行侵犯视频在线观看 | 激情成人综合 | 免费黄色小说视频 | 一本色道久久88加勒比—综合 | 日韩免费高清一区二区 | 天天射夜夜 | 在线观看一区二区三区四区 | 在线观看欧美成人 | 综合爱爱网 | 色哟哟免费在线观看 | 久久久久久久九九九九 | 中文字幕免费高清在线 | 免费亚洲婷婷 | 99情趣网 | 欧美激情成人在线 | 成人精品一区二区三区电影黑人 | 欧美亚洲另类小说 | 中文字幕无线精品亚洲乱码一区 | av作品在线 | 在线观看福利网站 | 日本视频黄 | 日本韩国欧美一区二区三区 | 久久人人爽人人爽人人片av高清 | 亚洲操片| 国产不卡在线播放 | 欧美黑人巨大xxx极品 | 粉嫩av一区二区白浆 | 国产精品羞羞答答在线 | 欧美性吧| 精品欧美乱码久久久久久 | 日本黄色大片视频 | 国产一极毛片 | 亚洲无码高清精品 | 成人免费毛片糖心 | 天天射综合 | 麻豆蜜桃wwww精品无码 | 美女网站黄页 | 情侣作爱视频网站 | 二区三区视频 | 一级做a视频 | 日本综合视频 | 深爱激情丁香 | 日韩国产一区二区三区 | 亚洲校园激情 | 五月婷综合网 | 国产奶水涨喷在线播放 | 国模小黎自慰gogo人体 | 午夜精品视频一区 | 欧美性猛交xxxx偷拍洗澡 | 大奶一区二区 | 亚洲aⅴ乱码精品成人区 | 天堂视频免费在线观看 | 精产国品一二三产区m553麻豆 | 日韩电影在线一区二区 |