小编Hla*_*son的帖子

CUDA合并了对全局内存的访问

我读过CUDA编程指南,但我错过了一件事.假设我在全局内存中有32位int数组,我想将它复制到具有合并访问权限的共享内存中.全局数组的索引从0到1024,假设我有4个块,每个块有256个线程.

__shared__ int sData[256];
Run Code Online (Sandbox Code Playgroud)

何时进行合并访问?

1.

sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y];
Run Code Online (Sandbox Code Playgroud)

全局内存中的地址从0到255复制,每个地址由32个线程进行warp,所以这里可以吗?

2.

sData[threadIdx.x] = gData[threadIdx.x * blockIdx.x+gridDim.x*blockIdx.y + someIndex];
Run Code Online (Sandbox Code Playgroud)

如果someIndex不是32的倍数,它不会合并?地址错位?那是对的吗?

memory cuda copy coalescing

8
推荐指数
2
解决办法
6416
查看次数

在C#中搜索字节数组中的最长模式

我需要编写有效且快速的方法来搜索给定模式的字节数组.我这样写,你怎么想,怎么改进?它有一个bug,它不能返回长度为1的匹配.

public static bool SearchByteByByte(byte[] bytes, byte[] pattern)
    {
        bool found = false;
        int matchedBytes = 0;
        for (int i = 0; i < bytes.Length; i++)
        {
            if (pattern[0] == bytes[i] && bytes.Length - i >= pattern.Length)
            {
                for (int j = 1; j < pattern.Length; j++)
                {
                    if (bytes[i + j] == pattern[j])
                    {
                        matchedBytes++;
                        if (matchedBytes == pattern.Length - 1)
                        {
                            return true;
                        }
                        continue;
                    }
                    else
                    {
                        matchedBytes = 0;
                        break;
                    }
                }
            }
        }
        return found; …
Run Code Online (Sandbox Code Playgroud)

c# arrays byte design-patterns match

5
推荐指数
1
解决办法
2977
查看次数

使用BinaryWriter将一个位写入二进制文件

我想将一个位写入二进制文件.

using (FileStream fileStream = new FileStream(@"myfile.bin", FileMode.Create))
using (BinaryWriter binaryWriter = new BinaryWriter(fileStream))
{
    binaryWriter.Write((bool)10);
}
Run Code Online (Sandbox Code Playgroud)

binaryWriter.Write((bit)1);
我使用binaryWriter.Write((bool)1)文件时有一个字节,但我想写一个字节.这可能吗?

c# byte bit writer binarywriter

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

CUDA共享内存不比全球快?

嗨我有内核功能,我需要比较字节.我想要搜索的区域被分成块,因此4k字节的数组被分成4k/256 = 16个块.块中的每个线程都在idx上读取数组,并将其与另一个数组进行比较,这就是我想要搜索的内容.我通过两种方式做到了这一点:

1.比较全局内存中的数据,但块中的线程通常需要读取相同的地址.

2.将数据从全局内存复制到共享内存,并以与上述相同的方式比较共享内存中的字节.读同一地址仍有问题.复制到共享内存如下所示:

myArray[idx] = global[someIndex-idx];
whatToSearch[idx] = global[someIndex+idx];
Run Code Online (Sandbox Code Playgroud)

其余的代码是一样的.仅在共享阵列中执行对示例2中的数据的操作.

但是第一个选项比共享内存快10%左右,为什么?谢谢你的解释.

arrays shared cuda compare find

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

通过设备中的阵列并行减少CUDA

我需要执行并行缩减以在CUDA设备上找到数组的最小值或最大值.我找到了一个很好的图书馆,称为Thrust.您似乎只能在主机内存中对阵列执行并行缩减.我的数据在设备内存中.是否可以减少设备内存中的数据?我无法想象如何做到这一点.以下是Thrust的文档:http://code.google.com/p/thrust/wiki/QuickStartGuide#Reductions.谢谢大家.

cuda reduction thrust

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

在C++中将字节写入ofstream

我有char数组,我想把它写到txt文件,但是以字节为单位.

ofstream sw("C:\\Test.txt");
for(int i = 0; i < 256; i++)
{
  sw << (byte)myArray[i]; 
}
Run Code Online (Sandbox Code Playgroud)

这会将字符写入文件,但我想写字节.如果有char'a'我想写'97'.谢谢.

c++ byte file char

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

C#正则表达式为/"在字符串末尾

我有一个url的集合,我需要编写正则表达式来过滤所需的内容.

/数据/ 43492-someText /"

/数据/ 221639-anotherText /"

/数据/ 116345-differentText /"

/数据/ 6630-boooring /"

/数据/ 220742-富/"

我需要的只是没有/"最后的字符串,所以

/数据/ 220742-FOO

我的正则表达式如下所示:

@"/data/[0-9]{1,10}-.*""\s"
Run Code Online (Sandbox Code Playgroud)

注意:由于我的项目存在一些限制,我不想使用字符串替换来执行此操作.

c# regex parsing double-quotes

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