我想在OpenCL 2.0中使用一个功能.
我双启动Ubuntu和Mac OS(图形:GTX 670 + HD Graphics 4600).是否可以安装OpenCL 2.0?
这可能是一个愚蠢的问题 - 从我所看到的,似乎2.0兼容的驱动程序可能还没有被写入?也可能我的硬件不支持新规格?
基本上,OpenCL 2.0何时容易/可用?
排队OpenCL内核时,local_work_size可以设置为NULL,在这种情况下,OpenCL实现将确定如何将全局工作项分解为适当的工作组实例.
自动计算local_work_size似乎是一个很棒的功能(比猜测64的倍数更好).
OpenCL的工作组大小选择是否最佳?是否存在手动指定更好的情况local_work_size?
我不明白OpenCL native_前缀函数的原因.文件说:
具有native_前缀的函数可以映射到一个或多个本机设备指令,并且与相应的函数(没有native__前缀)相比通常具有更好的性能.这些函数的准确性(在某些情况下是输入范围)是实现定义的.
好吧,所以我觉得这些native_功能可能会稍快一点,而且准确性稍差.还有其他优点和缺点吗?在什么用例中我可能想要使用类似log()对手native_log()?
如果这是一个愚蠢的问题,请道歉.我想确保掌握native_功能存在的根本原因.
在发生OpenCL clEnqueueReadBuffer操作时,排队的内核是否可以继续执行?
换句话说,是clEnqueueReadBuffer设备上的阻塞操作?
在Python中,如果我想要一个特定大小的随机数组,我会:
random_array = numpy.random.randint(20, size=10)
Run Code Online (Sandbox Code Playgroud)
在Javascript中,我无法找到一个很好的单行方式来做到这一点.我尝试使用UnderscoreJS:
random_array = _.sample(_.range(20), 10);
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用Javascript 1.7数组理解和UnderscoreJS:
random_array = [Math.floor(Math.random() * 20) for (x of _.range(10))];
Run Code Online (Sandbox Code Playgroud)
第一种方法只创建唯一值,第二种方式似乎根本不起作用.有任何想法吗?做这个的最好方式是什么?
在查看内核并分配寄存器时,是否有保持编译器满意的经验法则?
编译器具有很大的灵活性,但是我担心如果我在内核中创建了500个变量,或者在很长的单行中进行了大量操作,它可能会开始使用过多的本地内存.
我知道我的程序可以真正检查特定设备上的寄存器使用的唯一方法是使用AMD SDK或NVIDIA SDK(或将汇编代码与Device的架构进行比较).不幸的是,我使用的是PyOpenCL,因此使用这些SDK是不切实际的.
我的程序生成半随机内核,我试图阻止它做一些会阻塞编译器并开始在本地内存中转储寄存器的东西.