原创 CUDA並行規約(交錯配對-完全展開-終極版)

通過前面的文章,我們對32以下的迭代循環進行了展開處理,實際上,由於線程塊的長度限制(GTX1050Ti是1024),可以說循環次數是確定的,因此可以將循環完全展開, 即 1024 512 256 128 64 都可以展開計算,唯一需要注

原创 Python入門到實踐(9)-類的繼承

# -*- coding: utf-8 -*- """ Created on Mon Dec 04 21:22:37 2017 @author: Echo """ #類的繼承 class Car():#父類 """一次模擬汽車

原创 CUDA並行規約(交錯配對-展開規約)

之前的規約計算,每個線程塊負責一個對應的數據塊。現在將每個線程塊負責兩個數據塊的規約,從而達到消除指令消耗,增加更多的獨立指令的調度,來提高性能。下面是展開因子爲2的示意圖,將相鄰的數據塊加到當前線程塊對應的數據塊,然後進行規約求和。

原创 Python入門到實踐(9)-導入類

將類Car,ElectricCar的定義文件保存爲car.py from car import Car 導入單個類 from car import Car,ElectricCar 導入多個類 from car import * 導入所有類

原创 CUDA並行規約(相鄰配對)

#include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> #include "math.h" #include "stdlib.

原创 CUDA並行規約(交錯配對-展開線程)

當線程執行規約函數的循環時,當只剩下一個線程束(warp=32,),甚至更少的時候,可以將後續的循環展開,及32 16 8 4 2 1的循環直接展開書寫。 這樣處理可以避免循環控制和線程同步邏輯。 之所以可以這樣處理的原因在於: 假設線程

原创 編譯支持anaconda3-python3.7的vim8

問題: 由於vim7版本較低,升級vim8,嘗試了vim8.2和vim8.0 均不行。8.2編譯安裝後依然不支持python3.7.8.0編譯過程就報錯,提示python3.7lib的頭文件錯誤 。後嘗試8.1版本。(ftp://ftp.

原创 多線程並行數組求和(交錯配對模式)

利用OpenMP的多線程,對數組進行分組求和,最後對每個線程的局部求和結果進行求和。 這裏採用交錯配對(下文還有相鄰配對),如圖所示。 #include"iostream" #include"omp.h" using namespac

原创 vim插件youcompleteme 安裝,(mac,ubuntu,centos)

在anaconda環境下,升級vim8.1,安裝youcompleteme插件。 1.升級/安裝vim8.1,參見上一篇blogs。 2.其餘部分按照youcompleme部分執行。 https://www.jianshu.com/p/

原创 CUDA並行規約(相鄰配對-優化)

前文CUDA的並行規約算法的示意圖如下,分析可知,相鄰之間的線程執行不同的路徑,存在線程束分化。 爲了使得線程束不存在分化,每個warp(32個線程)執行同一指令,可調整相鄰的線程的數組索引實現優化。示意圖如下圖所示,數組的存儲位置沒

原创 Python入門到實踐(9)-類

# -*- coding: utf-8 -*- """ Created on Mon Dec 04 20:43:31 2017 @author: Echo """ #創建和使用類 Dog類 #創建 class Dog():

原创 CUDA 規約計算性能對比

通過前文,已經把整個規約計算的過程給出了。這裏是工程文件,開發環境win1064bit+VS2017+CUDA9.0+1050Ti :http://download.csdn.net/download/qq_17239003/101625

原创 VS2015 動態鏈接庫&&靜態鏈接庫

首先介紹一下靜態庫(靜態鏈接庫)、動態庫(動態鏈接庫)的概念,首先兩者都是代碼共享的方式。 靜態庫:在鏈接步驟中,連接器將從庫文件取得所需的代碼,複製到生成的可執行文件中,這種庫稱爲靜態庫,其特點是可執行文件中包含了庫代碼的一份完整拷貝;

原创 C++AMP學習(2)-數據array&array_view詳解

本節將分別介紹AMP中最重要的數據類型array&array_view。通常情況下,數據存儲於主機端,處理過程要在設備端執行。AMP提供了兩種數據類型,用於核函數的輸入。 (1)array數組:array是實實在在存儲在設備端的數據,類似

原创 CUDA並行規約(交錯配對)

按照前文多線程的交錯配對方式實現並行規約求和方式,實現CUDA版本的並行規約求和,由於這種方式的規約可以避免線程束的分化,因此不需要進行類似於相鄰配對那種方式的優化。 交錯與優化相鄰模式相比,計算效率提升到1.14倍,性能提高有限,這主要