高性能计算
holyprince
目前主要研究领域:冷冻电镜与高性能计算
展开
-
TensorCore使用
目前有两个库使用了TensorCore技术:cuBLAS与cuDNN。cuBLAS主要加速了GEMM计算,cuDNN里主要用来加速卷积和RNN而如何cuBLAS与cuDNN无法满足需求,也可以直接调用Tensor Cores进行编程。Tensor Cores的调用API在nvcuda::wmma命名空间里。通过调用API进行数值初始化,进行矩阵乘加(MMA)操作然后再把数值存回内存。c...原创 2019-12-31 13:20:25 · 4948 阅读 · 0 评论 -
高性能与并行计算领域一些期刊与会议及资料阅读列表
IEEE transactions on parallel and distributed systems (TPDS)主页:https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=71归档文件:https://dblp.uni-trier.de/db/journals/tpds/Journal of Parallel and ...原创 2019-09-22 20:06:21 · 2777 阅读 · 1 评论 -
MPI_Gatherv 的使用 发送接收不同大小的数据块
MPI_Gatherv可以从不同进程收集大小不同的数据块,但是在网上看到的都是发送固定大小,偏移量不同的例子,而官网给出的例子,虽然大小可变,但是需要重新定义数据类型,对于连续数据比较麻烦。下面的代码按照如下思路1.每个进程根据进程号初始化一块数据,发送数据大小与进程号有关(myid+1)2.首先使用Gather将每个进程要发送数据大小发给root进程,以方便偏移量的计算3.在ro...原创 2019-01-15 10:38:59 · 2964 阅读 · 0 评论 -
MPI_Scatterv 的使用 散发不同大小的数据块
如果需要将一个进程中的数据分发到不同进程,可以使用这个函数而每个进程如果需要的数目不同,则需要如下操作:1.首先根进程得到每个进程需要的数目(通过组收集gather)2.然后计算发送的数据不同的偏移(根据每个进程需要的数目计算)3.组分发 int main(int argc, char *argv[]){ int myid; //process i...原创 2019-01-15 23:31:24 · 3441 阅读 · 0 评论 -
MPI_多节点执行程序
有的时候MPI需要使用多节点,那么测试哪些进程在哪些机器上就比较重要,如下可以简单测试一下。#include <unistd.h>#include <stdio.h>#include <mpi.h>int main (int argc, char* argv[]) { char hostname[100]; int rank, size;...原创 2019-01-22 15:15:23 · 10260 阅读 · 0 评论 -
多GPU编程可能遇到的一些问题
最近在写一个多GPU编程的程序,按照传统的写法写了之后,程序一直卡在核函数运行之后,没有任何输出// includes, project#include <cuda_runtime.h>#include <device_launch_parameters.h>#include <cufft.h>#include <cuComplex.h>...原创 2019-09-04 10:28:18 · 438 阅读 · 0 评论 -
以cufftPlanMany为例FFT变换中embed,stride,dist的解释与设置
关于FFT的自定义数据分布进行变换,之前每次都是用的写demo,这次搞明白之后记录一下,以便以后查阅。比如需要对一个二维数组里的每一行或者每一列进行傅里叶变换,那么需要对cufftPlanMany进行设置,然后进行批量处理。cufftPlanMany的函数声明如下cufftResult cufftPlanMany(cufftHandle *plan, int rank, int *n...原创 2019-09-08 23:35:59 · 7536 阅读 · 13 评论