我一直在研究如何减少因CPU和GPU来回传输数据而导致的延迟.当我第一次开始使用CUDA时,我注意到CPU和GPU之间的数据传输确实需要几秒钟,但我并不在乎,因为这对我正在编写的小程序来说并不是一个真正的问题.实际上,对于绝大多数使用GPU,包括视频游戏的程序来说,延迟可能不是一个大问题,因为它们仍然比在CPU上运行的速度快得多.
然而,我是HPC爱好者的一员,当我看到天河一号理论峰值FLOPS与实际LINPACK测量性能之间的巨大差异时,我开始关注我的研究方向.这引起了我对我是否采取正确的职业道路的担忧.
通过使用cudaHostAlloc()函数来使用固定内存(页面锁定)内存是一种减少延迟的方法(非常有效),但还有其他任何我不知道的技术吗?要说清楚,我说的是优化代码,而不是硬件本身(那是NVIDIA和AMD的工作).
作为一个侧面问题,我知道戴尔和惠普销售的是特斯拉服务器.我很好奇GPU如何利用数据库应用程序,您需要从硬盘驱动器(HDD或SSD)中不断读取,这只是CPU可以执行的操作,
是否可以使用着色器计算某些值,然后将它们返回以供进一步使用?
例如,我将网格向下发送到GPU,有一些关于如何修改它的参数(改变顶点的位置),并收回结果网格?我认为这是不可能的,因为我没有看到任何从着色器到CPU的通信变量.我正在使用GLSL,所以只有统一,属性和变化.我应该使用属性还是制服,渲染后它们是否仍然有效?我可以更改这些变量的值并在CPU中读回吗?有一些方法可以在GPU中映射数据但是这些方法会被更改和有效吗?
这是我正在考虑的方式,虽然可能有其他方式,这对我来说是不可知的.如果有人能解释我的话,我会很高兴,因为我刚读了一些关于GLSL的书,现在我想编写更复杂的着色器,我不想放弃目前不可能的方法.
谢谢
我希望将Android智能手机收集的实时传感器数据传输到我的电脑,并在我的电脑上进行信号处理.我怎么能实现这一目标?任何有用的教程链接都非常受欢迎.
无论是通过无线方式还是USB电缆都可以接受.
传输数据时,计算机如何处理它们?
我熟悉Python,因此使用Python来处理即将到来的数据.
Python是否有可能不断接受新来的数据并对其进行处理?
一个有效的 JSON语法是什么样的东西:
{
"username": "admin",
"password": "123"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想传输一组"用户"(给定示例)而不是单个"用户"呢?
根据规范,代码是否有效JSON?
[{
"username": "admin",
"password": "123"
}, {
"username": "bbvb",
"password": "sdfsdf"
}, {
"username": "asd",
"password": "222"
}]
Run Code Online (Sandbox Code Playgroud)
如果没有,使用JSON传输值数组的最佳方法是什么?(并且用'最好的方式',我的意思是语法上的)
我想在JavaScript中比较两个相同的字符串,但是相等运算符==返回false.一个字符串包含一个特殊字符(例如丹麦语å).
JavaScript代码:
var filenameFromJS = "Designhåndbog.pdf";
var filenameFromServer = "Designhåndbog.pdf";
print(filenameFromJS == filenameFromServer); // This prints false why?
Run Code Online (Sandbox Code Playgroud)
解决方案 对我来说有用的是unicode规范化,正如slevithan指出的那样.
我分叉了我原来的jsfiddle使用slevithan建议的规范化lib来制作一个版本.链接:http://jsfiddle.net/GWZ8j/1/.
javascript string unicode data-transfer unicode-normalization
Yamaha InfoSound和ShopKick应用程序使用允许使用超声波传输数据的技术.这是一个听不见的信号(> 18kHz),现代手机(iOS,Android)可以播放.
这些技术使用的方法是什么?他们使用什么样的调制?
如何在两台设备之间传输数据?我想在不同平台(android,iphone)之间传输数据(主要是图像文件).是否可以使用p2p或我应该使用客户端服务器?
任何帮助将不胜感激.
尝试dataTransfer在拖放序列期间将jQuery对象传递给属性.将属性添加到jQuert.event.props数组后我可以分配它,但它在drop事件期间返回undefined .不知道我在这里缺少什么 - 看起来真的很简单.
使用Javascript:
function dragClip(clip, event){
event.dataTransfer.el = clip;
/* Console confirms event.dataTransfer.el is the jQuery object */
}
function dropClip(target, event){
target.append(event.dataTransfer.el);
/* event.dataTransfer.el no longer has the object... where'd it go?? */
}
jQuery.event.props.push('dataTransfer');
$('#titles')
.bind('dragenter dragover', false)
.bind('drop', function(event){
dropClip($(this), event);
});
$('.clip').bind('dragstart', function(event){
dragClip($(this), event);
});
Run Code Online (Sandbox Code Playgroud)
更新:
重写以删除冗长.已经包含了其他东西,但匿名函数会做得很好:
jQuery.event.props.push('dataTransfer');
$('#titles')
.bind('dragenter dragover', false)
.bind('drop', function(event){
$(this).append(event.dataTransfer.el);
});
$('.clip').bind('dragstart', function(event){
event.dataTransfer.el = $(this);
});
Run Code Online (Sandbox Code Playgroud)
UPDATE
根据@ barney的最终答案,我的最终工作代码.我注意到使用原始事件不允许我将对象作为数据传递,因此我应用了ID并在drop上重建了jQuery对象.通过摆脱声明的功能也收紧了一切.代码少,结果相同.
$('#titles')
.bind('dragenter …Run Code Online (Sandbox Code Playgroud) 我目前正在实现一个iOS应用程序,它使用CoreBluetooth在两个设备之间传输数据.例如,要将数据从中央发送到外设,我使用以下代码:
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:nil];
NSLog(@"Writing data of length %d", [data length]);
[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
Run Code Online (Sandbox Code Playgroud)
这个工作绝对正常,但问题是我已经多次读过,因为特性一次最多可以传输20个字节.此外,当我查看Apple的BTLE示例代码时, 他们实现了一种将数据拆分为20字节块的机制.但是上面的代码打印出类似Writing data of length 124的东西- 数据在其他设备上很好地到达.
那么:为什么这个工作呢?更重要的是,我担心这会在某些时候破裂,特别是当非iOS设备发挥作用时.
data-transfer objective-c ios core-bluetooth bluetooth-lowenergy
假设:可以访问file://的本地HTML/Javascript网页
在可拖动HTML元素的拖动开始时,在事件处理函数中dragStart(e),如何添加File对象以使其被识别为文件并最终在dataTransfer.files列表中?
例如:
function dragStart(e){
var file = getSomeFileObjFromSomewhere();
e.originalEvent.dataTransfer.effectAllowed = "all";
e.originalEvent.dataTransfer.setData("file", file);
console.log("\nFiles:");
i = 0;
var files = e.originalEvent.dataTransfer.files,
len = files.length;
for (; i < len; i++) {
console.log("\nIndex: " + i + "\nFilename: " + files[i].name);
console.log("Type: " + files[i].type);
console.log("Size: " + files[i].size + " bytes");
console.dir(files[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
具体来说,它需要在Chrome/Chromium上运行.并且,我们可以假设该文件存在于本地驱动器上.基本上,当文件从Windows资源管理器拖动到可放置元素的HTML页面时,我想要相同的数据.
我知道这存在于Chrome中:
e.originalEvent.dataTransfer.setData("DownloadURL", fileType + ":" + name + ":" + filePath);
Run Code Online (Sandbox Code Playgroud)
下载文件.但这不是我想要的,因为我想假设这是一个现有文件,并且必须访问原始文件.
javascript drag-and-drop data-transfer file data-transfer-objects
data-transfer ×10
android ×3
ios ×2
javascript ×2
audio ×1
cuda ×1
events ×1
file ×1
glsl ×1
iphone ×1
jquery ×1
json ×1
latency ×1
memory ×1
object ×1
objective-c ×1
optimization ×1
p2p ×1
python ×1
shader ×1
string ×1
transmission ×1
unicode ×1