小编use*_*062的帖子

这是Java编译器错误还是正确的语句?

几天前,我在Java代码中打了一个错字,但是它可以编译并且运行良好。(尽管结果很奇怪。)

我的代码是:

public  static  void    main(String args[])  {
    String  strOut;
    char    cSEP = '|';
    String  sSEP = "|";

    strOut = "AA" + cSEP + "BB";    // Correct assignment
    System.out.println(strOut);     // The result is "AA|BB". This is OK.

    strOut = "AA" + + cSEP + "BB";  // No Error : no token between two +
    System.out.println(strOut);     // The result is "AA124BB"

    strOut = "AA" + + sSEP + "BB";  // This is compiler error !!!
    System.out.println(strOut);
}
Run Code Online (Sandbox Code Playgroud)

我找不到第二个作业为什么没有错误并打印124的原因。(当然,“ |”在ASCII代码中为124。但是为什么是“ 124”,而不是“ |”?) …

java

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

CUDA全局内存副本

CUDA C编程指南(p.70)说,

全局存储器驻留在设备存储器中,并且通过32,64或128字节存储器事务访问设备存储器.这些内存事务必须自然对齐:只有与其大小对齐的设备内存的32,64或128字节段(即其第一个地址是其大小的倍数)可以由内存事务读取或写入.

因此,如果我想在设备功能中一次访问32,64或128个连续字节,(例如,复制到共享内存)这个操作最合适的功能(或赋值)是什么?

传统的C memcpy函数似乎一次不能访问32个字节(非常慢).因为这不是矢量数据,所以我希望单个线程一次读取这些数据.


到dbaupp

memcpy效果很好,但我说的是速度.例如,假设我有设备内存指针p并在设备功能中运行以下代码.

a)char c [8]; memcpy(c,p,8);

b)char c [8];*(double*)c =*(double*)p;

对于上述两种情况,结果相同,但情况b比情况a(我在我的代码中测试和确认)快近8倍.

而且,仅供参考,cudaMemcpy功能在设备功能中不起作用.

所以,我想知道的是,是否有任何方法可以在单个操作中复制16个字节.(希望比memcpy快16倍(c,p,16);)

cuda

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

标签 统计

cuda ×1

java ×1