小编smu*_*kes的帖子

合理化我的简单OpenCL内核中的全局内存

const char programSource[] =
        "__kernel void vecAdd(__global int *a, __global int *b, __global int *c)"
        "{"
        "    int gid = get_global_id(0);"
        "for(int i=0; i<10; i++){"
        "    a[gid] = b[gid] + c[gid];}"
        "}";
Run Code Online (Sandbox Code Playgroud)

上面的内核是每个循环执行十次的向量加法.我已经使用编程指南和堆栈溢出来弄清楚全局内存是如何工作的,但是如果我以一种好的方式访问全局内存,我仍然无法通过查看我的代码来弄清楚.我以连续的方式访问它,我正在以一种统一的方式猜测.该卡是否为阵列a,b和c加载128kb的全局内存块?然后是否为每个处理的32个gid索引加载一次128kb的每个数组块?(4*32 = 128)好像那时我没有浪费任何全局内存带宽吗?

顺便说一句,计算分析器显示gld和gst效率为1.00003,这看起来很奇怪,我认为如果所有的商店和负载都合并,那只会是1.0.它是如何高于1.0的?

memory cuda nvidia opencl

4
推荐指数
1
解决办法
592
查看次数

关于OpenCL中cl_mem的问题

我一直在我的一些OpenCL样板代码中使用cl_mem,但我一直在通过上下文使用它,而不是对它究竟是什么有深刻的理解.我一直在使用它作为内存的一种类型我推进和离开板,到目前为止浮动.我试着查看OpenCL文档,但cl_mem没有显示(是吗?).是否有任何文件,或者它是否简单,有人可以解释.

memory types boilerplate opencl

4
推荐指数
2
解决办法
9908
查看次数

如何在OpenCL/CUDA语法中关闭Eclipse中的错误/警告?

我使用Eclipse作为OpenCL的编辑器,我开启了*.cl文件的语法突出显示,使其行为类似于C++代码.它工作得很好,但我的所有代码都加下划线为语法错误.有没有办法让我的语法突出显示并关闭我的*.cl文件的错误/警告?

eclipse cuda syntax-highlighting nvidia opencl

4
推荐指数
1
解决办法
3023
查看次数

在OpenCL 1.1中,我对函数min()的调用是模糊的,我无法弄清楚为什么

我刚从OpenCL 1.0升级到1.1.当我调用min()函数时,我得到错误输出:

    <program source>:45:44: error: call to 'min' is ambiguous
            int nFramesThisKernelIngests = min(nFramesToIngest  - nAvg*nPP*get_global_id(2), nAvg*nPP);

<built-in>:3569:27: note: candidate function
double16 __OVERLOADABLE__ min(double16, double16);                                               
                           ^
<built-in>:3568:26: note: candidate function
double8 __OVERLOADABLE__ min(double8, double8);   
Run Code Online (Sandbox Code Playgroud)

对于具有不同类型的更多行,错误输出将继续.

当我试图隔离问题时,get_global_id(2)似乎是问题所在.我认为将get_global_id(2)从一个uint(我相信它返回一个uint)转换为int会解决问题,但事实并非如此.有人知道发生了什么吗?我看了1.0和1.1规格,我仍然感到困惑,为什么会发生这种情况.

opencl

3
推荐指数
1
解决办法
6135
查看次数

如何减轻OpenCL/CUDA中的主机+设备内存传输瓶颈

如果我的算法由主机到设备和设备的瓶颈来承载内存传输,那么唯一的解决方案是不同的还是修改过的算法?

memory cuda nvidia opencl

3
推荐指数
1
解决办法
2363
查看次数

为什么这个Java String.replaceAll()代码不起作用?

我之前在Java中使用过string.replaceAll()并没有遇到任何麻烦,但我对此感到难过.我认为它只是工作,因为没有"/"或"$"字符.这是我想要做的:

String testString = "__constant float* windowArray";
String result = testString.replaceAll("__constant float* windowArray", "__global float* windowArray");
Run Code Online (Sandbox Code Playgroud)

变量结果看起来与testString相同.我不明白为什么没有变化,请帮忙.

java string api replaceall

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

当泛型失败时,我能得到一个例子吗?

我只是对泛型有一个普遍的问题.我已经使用它们多年了,并且听说它们不完美,因为它们在编译时被剥离了它们的类型(对吗?).我很难找到导致它们失败的特定代码的示例或解释.任何人都可以提供代码示例和/或解释吗?

java generics

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

LoggerFactor.getLogger 无法解析为类型

我设置了一个基本的 Java 程序,我正在关注本教程并拥有以下确切代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}
Run Code Online (Sandbox Code Playgroud)

我的构建路径上有 jars slf4j-api-1.7.5.jar 和 slf4j-log4j12-1.7.5 jar。我不明白是什么给出的,getLogger 方法存在于 LoggerFactory 类中,我可以 F3(源代码查找)到它。我对此进行了 Google 搜索,似乎是唯一解决此问题的方法。有任何想法吗?

这是我用于 Eclipse 的 .classpath:

<xml version="1.0" encoding="UTF-8"?>
<classpath>
   <classpathentry kind="src" path="src"/>
   <classpathentry kind="con" path="org.eclipse.jdit..../>
   <classpathentry kind="lib" path="/home/Desktop/slf4j-api-1.7.5.jar" sourcepath="/home/Desktop/slf4j-api-1.7.5.jar"/>
   <classpathentry kind="lib" path="slf4j-log4j12-1.7.5.jar"/>
   <classpathentry kind="lib" path="log4j-1.2.17.jar"/>
   <classpathentry kind="output" path="bin"/>
</classpath>
Run Code Online (Sandbox Code Playgroud)

java eclipse logging slf4j buildpath

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

如何从CLI停止Yarn Package Manager脚本

https://yarnpkg.com/en/docs/cli/

有没有办法停止从"纱线运行"命令开始的东西?我唯一的选择是查找进程号并在其上调用kill?

linux node.js yarnpkg

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

命名FlinkKafka消费者或生产者

DataStreamSink类具有一个名称字段。为什么FlinkKafkaConsumer和FlinkKafkaProducer没有相似的字段?在“ Flink仪表板”中,我的洗手池所有人都说“未命名”

apache-flink flink-streaming

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