我正在关注本教程:http: //simpleopencl.blogspot.com.br/2013/06/tutorial-simple-start-with-opencl-and-c.html
我有3个错误:
错误1) - 解决了
cl::Context context({default_device}); //original code
Run Code Online (Sandbox Code Playgroud)
我刚刚脱下牙箍,没关系.
错误2) - 解决了
if(program.build(default_device)!=CL_SUCCESS){
Run Code Online (Sandbox Code Playgroud)
我只是将"default_device"替换为"all_devices",这没关系.
错误3) - 没有解决
sources.push_back({kernel_code.c_str(),kernel_code.length()});
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么办.Visual Studio指向此错误消息: "IntelliSense:期望表达式"
这是我正在谈论的代码片段:
cl::Device default_device = all_devices[0];
std::cout<< "Using device: "<<default_device.getInfo<CL_DEVICE_NAME>()<<"\n";
cl::Context context(default_device);
cl::Program::Sources sources;
// kernel calculates for each element C=A+B
std::string kernel_code=
"void kernel simple_add(global const int* A, global const int* B, global int* C)"
"{"
"C[get_global_id(0)]=A[get_global_id(0)]+B[get_global_id(0)];"
"}";
sources.push_back({kernel_code.c_str(),kernel_code.length()});
cl::Program program(context,sources);
if(program.build(all_devices)!=CL_SUCCESS){
std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n";
exit(1);
}
Run Code Online (Sandbox Code Playgroud) 我在这个例子之后使用键盘事件:
from kivy.core.window import Window
class PongGame(Widget):
ball = ObjectProperty(None)
player1 = ObjectProperty(None)
player2 = ObjectProperty(None)
def __init__(self, **kwargs):
super(PongGame, self).__init__(**kwargs)
self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
self._keyboard.bind(on_key_down=self._on_keyboard_down)
def _keyboard_closed(self):
self._keyboard.unbind(on_key_down=self._on_keyboard_down)
self._keyboard = None
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
if keycode[1] == 'w':
self.player1.center_y += 10
elif keycode[1] == 's':
self.player1.center_y -= 10
elif keycode[1] == 'up':
self.player2.center_y += 10
elif keycode[1] == 'down':
self.player2.center_y -= 10
return True
Run Code Online (Sandbox Code Playgroud)
来源: 你如何用kivy检查键盘事件?
但有时当我按下时esc,即使我没有命令应用程序执行此操作,应用程序仍然存在.是否存在Kivy的内置方法,可以在按下时关闭应用程序esc?有没有办法禁用它?
shell中出现的日志:
[INFO] [基础]正在申请中......
编辑:我使用屏幕管理器(kivy.uix.screenmanager …
今天,我自动写了一些像这样的东西:
class Foo():
def __init__(self, x):
self.x = x
s = [Foo(1), Foo(2), Foo(3)]
sum_x = sum(s, key = lambda foo: foo.x)
Run Code Online (Sandbox Code Playgroud)
得到了这个:
TypeError:sum()不带关键字参数
sum()没有keyarg 有什么特殊原因吗?
是否有一个内置类,function其实例是标准 PHP 函数?PHP 函数是对象吗?
在Python中我可以这样测试它:
from inspect import isclass
def foo():
pass
isclass(type(foo))
>>> True
Run Code Online (Sandbox Code Playgroud)
PHP 中的这个函数怎么样:
function foo(){
return null;
}
Run Code Online (Sandbox Code Playgroud) 我有这个结构:
struct Foo {
int a;
int* b;
};
Run Code Online (Sandbox Code Playgroud)
然后我就像这样为它创建一个实例:
int x [] = { 5, 6 };
Foo y = { 2, x };
Run Code Online (Sandbox Code Playgroud)
但是,我想创建x内联数组,可能是这样的:
struct Foo y = { 2, (int[]) { 5, 6 } };
Run Code Online (Sandbox Code Playgroud)
但上面的例子不起作用......我怎样才能做到这一点?
---------编辑:
我从intellisense得到这个错误:
转换为不完整的数组类型"int []"是不允许的
构建错误:
错误C4576括号类型后跟初始化列表是非标准显式类型转换语法
我正在使用Visual Studio 2015(v140).
我有这种情况:
#include <vector>
template<typename T, typename U = T>
U f(T data) {
return U();
}
int main() {
std::vector<int> vec = {1,2,3};
return f<std::vector<int>, int>(vec);
}
Run Code Online (Sandbox Code Playgroud)
T始终是模板化类型,U并且始终是T依赖的类型。有没有办法让U从T为了不明确的int两次f通话?
我尝试了以下方法,但是没有用:
#include <vector>
template<template<class> class T, class U>
U f(T<U> data) {
return U();
}
int main() {
std::vector<int> vec = {1,2,3};
return f<std::vector, int>(vec);
}
Run Code Online (Sandbox Code Playgroud) 为什么下面的代码不起作用?
class A {};
void f(A* a) {
shared_ptr<A> c(a);
}
int main() {
auto a = make_shared<A>();
auto b = a.get();
f(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在范围的最后f,我的程序崩溃了.可能是什么导致了这个?有什么东西试图被删除而且不存在吗?
编译器可以在多线程程序上下文中优化静态存储对象吗?我问它是否知道例如声明为静态的变量在线程中调用的函数中使用时是否会产生副作用。
bool flag = false; // static storage duration object
void f(){ //function called in a thread
flag = false;
// do some work...
flag = true;
}
//a possible representation of the code above after optimization
void f(){
flag = true;
// do some work...
} // is this possible to happen?
Run Code Online (Sandbox Code Playgroud)
我从这里阅读了一些答案,但没有找到任何可以帮助的内容。
我有以下代码:
#include <iostream>
void f(void* buffer) {
int x = static_cast<bool>(*(char*)buffer);
int y = static_cast<bool>(*(bool*)buffer);
std::cout << x << " " << y;
}
int main() {
int a = 255;
f(&a);
}
Run Code Online (Sandbox Code Playgroud)
在GCC 9.1上,我得到以下输出:
1255
在这种情况下,为什么将强制转换bool为(char*)强制转换结果x为1,并将强制强制转换bool为(bool*)强制转换结果y为255?
今天,我使用PyImport_AppendInittab追加C语言内置的python模块。PyImport_AppendInittab需要在之前调用Py_Initialize。我无法完成并再次初始化引擎。问题是现在我需要在Py_Initialize. 有办法做到吗?
我正在使用Python 3.6。