标签: gpu-programming

对齐图像卷积(OpenCL/CUDA)内核的GPU内存访问

为了理解如何确保对齐要求得到满足,我多次阅读以下文章,从OpenCL p.no:157中的异构计算一书.这显示了如何为图像卷积中的问题填充填充(假设工作组大小为16 x 16).

对齐记忆访问

NVIDIA和AMD GPU的性能均受益于全局内存中的数据对齐.特别是对于NVIDIA,在128字节边界上对齐访问和访问128字节段将理想地映射到存储器硬件.但是,在这个例子中,16宽工作组将只访问64字节段,因此数据应该对齐到64字节的地址.这意味着每个工作组访问的第一列应该从64字节对齐的地址开始.在此示例中,使边框像素不生成值的选择确定所有工作组的偏移量将是工作组维度的倍数(即,对于16 x 16工作组,工作组将开始访问列N*16处的数据) .为确保每个工作组正确对齐,

1 - 任何人都可以帮助我理解填充每个工作组访问的第一列后是如何从64字节对齐的地址开始的(上述段落中提到的要求,对吧?)?

2 - 该图也是正确的声明:对于16 x 16工作组,工作组将开始访问N*16列的数据.

如果正确,图中所示的工作组1,2应该开始访问第1x16列的数据,这与图中所示的相反.我完全糊涂了!! :(

更新: Q-2现在对我来说很清楚. 实际上图中显示的工作组是2,1(在opencl惯例中,第一列),所以它完全正确:2x16 = 32而不是我想的1x16.

但问题不是.1仍然没有答案.

在此输入图像描述

cuda gpgpu memory-alignment opencl gpu-programming

12
推荐指数
1
解决办法
3148
查看次数

OpenCL和GPU编程路线图

我想开始说我对OpenCL/GPU编程一无所知,但我是一名高级C#(通用.Net)程序员而不用担心C++,我想学习OpenCL/GPU编程......我的问题是...我从哪里开始?!?我应该下载什么?!?有没有办法在Visual Studio上编程OpenCL/GPU(在C#上)!?!喜欢...你好世界的东西......全部

c# gpu opencl gpu-programming opencl.net

11
推荐指数
2
解决办法
8306
查看次数

关于数据并行编程和算法的好书和资源

我已经阅读了以下和大多数NVIDIA手册和其他内容.我去年也参加了GTC的论文和会谈.

CUDA示例:通用GPU编程简介

大规模并行处理器编程:实践方法

我知道最新的GPU Computing Gems Emerald Edition但尚未阅读.

您会推荐哪些其他书籍和资源?例如,我确信80年代的第一波数据并行编程(连接机器等)有一些很棒的内容.我知道对这一代硬件的数据并行算法进行了大量研究.

跟进... 30/Mar/2011

我还发现GPU Gems第1-3册有一些关于GPU计算的章节,而不仅仅是图形.它们可以在线免费获得,http://developer.nvidia.com/object/gpu_gems_home.html.我还没有机会读它们.

algorithm design-patterns gpu gpgpu gpu-programming

11
推荐指数
1
解决办法
1414
查看次数

通过Web浏览器访问GPU

我今天早些时候(在TechCrunch.com上)遇到了这个概念证明,并且对于他们如何设法完成最终结果感到震惊和好奇.他们表示他们不使用webGL或任何插件,但他们能够直接与GPU交互并使用Javascript以高达60 fps的速度呈现3D视觉效果.任何想法如何做到这一点,或如何在不使用插件的情况下从Javascript访问GPU?

网站地址是:famo.us

ps:尝试使用箭头键将方向移向远方!

javascript 3d gpu gpu-programming famo.us

11
推荐指数
2
解决办法
1万
查看次数

我可以使用Julia来编程我的GPU和CPU吗?

我的系统有显卡.我不玩游戏.

我想编写一些高性能计算的东西以获得乐趣.

我可以使用JULIA lang来利用我的硬件吗?

gpu opencl gpu-programming julia julia-gpu

11
推荐指数
2
解决办法
3534
查看次数

使TensorFlow使用通过自定义CUDA例程即时生成的训练数据

假设我们生成了自己的训练数据(例如,从某个扩散过程中采样并计算了一些感兴趣的量),并且我们拥有自己的CUDA例程,称为generate_data,该例程在GPU内存中为给定的一组输入生成标签。

因此,我们处于一种特殊的设置中,可以“在线”方式生成任意数量的训练数据(在每个批次迭代中,我们都调用generate_data例程以生成新批次并丢弃旧批次)。

由于数据是在GPU上生成的,有没有办法使TensorFlow(Python API)在训练过程中直接使用它?(例如填充一个占位符)这样,这样的管道将是有效的。

我的理解是,当前您需要在这样的设置中将数据从GPU复制到CPU,然后让TensorFlow将数据再次从CPU复制到GPU,这在执行不必要的复制时非常浪费。

编辑:如果有帮助,我们可以假定CUDA例程是使用Numba的CUDA JIT编译器实现的。

python gpu-programming tensorflow

11
推荐指数
1
解决办法
214
查看次数

在Mac上远程登录时,如何在GPU上测试OpenCL?

当我在控制台登录时,我的OpenCL程序可以找到GPU设备,但是当我使用ssh远程登录时却找不到.此外,如果我在ssh会话中以root身份运行程序,程序可以找到GPU.

这款电脑是配备GeForce 9400 GPU的Snow Leopard Mac.

如果我从控制台或以root身份运行程序(见下文),输出如下(注意"GeForce 9400"行):

2 devices found
Device #0 name = GeForce 9400
Device #1 name = Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz
Run Code Online (Sandbox Code Playgroud)

但如果只是我,在ssh上,没有GeForce 9400条目:

1 devices found
Device #0 name = Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz
Run Code Online (Sandbox Code Playgroud)

我想在GPU上测试我的代码,而不必是root.那可能吗?简化的GPU查找程序如下:

#include <stdio.h>
#include <OpenCL/opencl.h>

int main(int argc, char** argv) {
    char dname[500];
    size_t namesize;
    cl_device_id devices[10];
    cl_uint num_devices;
    int d;

    clGetDeviceIDs(0, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices);
    printf("%d devices found\n", num_devices);
    for (d = 0; d < …
Run Code Online (Sandbox Code Playgroud)

macos opencl gpu-programming

10
推荐指数
1
解决办法
4144
查看次数

直接从TensorFlow访问PyTorch GPU矩阵

我有一个用PyTorch编写的神经网络,它a在GPU上输出一些Tensor .我想继续a使用高效的TensorFlow层进行处理.

据我所知,唯一的方法是a从GPU内存转移到CPU内存,转换为numpy,然后将其输入TensorFlow.一个简化的例子:

import torch
import tensorflow as tf

# output of some neural network written in PyTorch
a = torch.ones((10, 10), dtype=torch.float32).cuda()

# move to CPU / pinned memory
c = a.to('cpu', non_blocking=True)

# setup TensorFlow stuff (only needs to happen once)
sess = tf.Session()
c_ph = tf.placeholder(tf.float32, shape=c.shape)
c_mean = tf.reduce_mean(c_ph)

# run TensorFlow
print(sess.run(c_mean, feed_dict={c_ph: c.numpy()}))
Run Code Online (Sandbox Code Playgroud)

这可能有点牵强,但有没有一种方法可以做到这一点

  1. a 永远不会留下GPU内存,或者
  2. a 从GPU内存到固定内存到GPU内存.

我尝试2.在上面使用的代码中使用,non_blocking=True但我不确定它是否符合我的预期(即将其移至固定内存).

理想情况下,我的TensorFlow图将直接在PyTorch张量占用的内存上运行,但我认为这是不可能的?

gpu gpu-programming tensorflow pytorch

10
推荐指数
1
解决办法
374
查看次数

是否有可能在F sharp下使用CUDA编写GPU应用程序?

我有兴趣使用F#进行数值计算.如何在F#下使用NVIDIA的CUDA标准访问GPU?

.net f# cuda gpu-programming

9
推荐指数
4
解决办法
1927
查看次数

PTX - 什么是CTA?

我正在研究PTX,我不明白CTA(计算线程数组)与CUDA块的不同之处.

它们是一样的吗?在我看来,现在(我只是在PTX文件的开头)他们是一样的

cuda nvidia gpu-programming ptx

9
推荐指数
2
解决办法
2541
查看次数