小编ein*_*ica的帖子

用CUDA求解密集线性系统AX = B.

我可以使用新的cuSOLVER库(CUDA 7)来解决表单的线性系统

AX = B 
Run Code Online (Sandbox Code Playgroud)

在那里A,X并且BNxN密集矩阵?

cuda gpu cusolver

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

为什么要使用mmap而不是fread?

为什么/何时使用更好mmap(),而不是fread()从块中的文件流转换为字节数组?

uint8_t my_buffer[MY_BUFFER_SIZE];
size_t bytes_read;
bytes_read = fread(my_buffer, 1, sizeof(my_buffer), input_file);
if (MY_BUFFER_SIZE != bytes_read) {
    fprintf(stderr, "File read failed: %s\n", filepath);
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

c streaming mmap file

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

CUDA 流与设备相关吗?如何获取流的设备?

我有一个 CUDA 流,有人递给我 - 一个cudaStream_t值。CUDA运行时 API似乎没有指示我如何获取与该流关联的设备的索引。

现在,我知道这cudaStream_t只是一个指向驱动程序级流结构的指针,但我不太愿意深入研究驱动程序。有一个惯用的方法来做到这一点吗?或者有什么好的理由不想这样做?

编辑:这个问题的另一个方面是流是否确实与设备相关联,在这种方式中,CUDA 驱动程序本身可以根据给定的指向结构确定设备的标识。

cuda multi-gpu cuda-streams

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

如何让 bash 从 stdin 执行 ELF 二进制文件?

由于一些晦涩的原因,我编写了一个 bash 脚本,它生成一些源代码,然后使用

... whatever ... | gcc -x c -o /dev/stdout
Run Code Online (Sandbox Code Playgroud)

现在,我想在编译上执行结果。我怎样才能做到这一点?请不要使用文件。

bash pipeline execution

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

CUDA动态并行,性能不佳

使用CUDA Dynamic Parallelism时,我们遇到了性能问题.目前,CDP的表现比传统方法慢至少3倍.我们制作了最简单的可重现代码来显示这个问题,即将数组的所有元素的值增加+1.即

a[0,0,0,0,0,0,0,.....,0] --> kernel +1 --> a[1,1,1,1,1,1,1,1,1]
Run Code Online (Sandbox Code Playgroud)

这个简单示例的目的只是为了查看CDP是否可以像其他CDP一样执行,或者是否存在严重的开销.

代码在这里:

#include <stdio.h>
#include <cuda.h>
#define BLOCKSIZE 512

__global__ void kernel_parent(int *a, int n, int N);
__global__ void kernel_simple(int *a, int n, int N, int offset);


// N is the total array size
// n is the worksize for a kernel (one third of N)
__global__ void kernel_parent(int *a, int n, int N){
    cudaStream_t s1, s2;
    cudaStreamCreateWithFlags(&s1, cudaStreamNonBlocking);
    cudaStreamCreateWithFlags(&s2, cudaStreamNonBlocking);

    int tid = blockIdx.x * blockDim.x + threadIdx.x;
    if(tid == …
Run Code Online (Sandbox Code Playgroud)

c++ cuda dynamic-parallelism cuda-streams

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

为什么不将std :: array的operator ==()标记为constexpr?

想要在编译时进行比较是很自然的std::array ; 它operator==()显然是constexpr'能够的.然而 - 它没有标记constexpr.这是故意还是疏忽?而且 - 它是什么原因留下来的(显然也是在C++ 17中)?

comparison constexpr c++11 stdarray

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

如何将我的git合并冲突变成类似diff的格式?

我正在合并两个git更改集(或者可能 - 在git rebase'ing,合并更改集的过程中)涉及文件foo,并且有一些合并冲突.该文件看起来像这样:

text appearing in all changesets
<<<<<<< HEAD
text added on the head
=======
something else added on another changeset
>>>>>>> 1babf8ed... commit comment here
more text appearing in all changesets
added text, no conflicts
yet more appearing in all changesets
Run Code Online (Sandbox Code Playgroud)

我的问题:

对于特定文件(foo如上所述)如何显示冲突内容,以便HEAD修订版显示为已删除的文本,另一个更改集(在我的示例中)显示为添加的文本?换句话说,我怎样才能使一些工具处理之间的部分<<<<<=====作为前缀-的部分>>>>>=====作为前缀的部分+,或者反过来?

笔记:

  • 最好的事情就是对标准输出流进行类似差异的输出,因为我可以将其输入到另一个工具中.但是与git的diff相关工具有更多搭配的东西也是相关的.如果我可以合理地避免它,我宁愿不必下载一些自定义实用程序/应用程序.
  • HEAD和其他提交版本的并排显示也很有用

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

为什么range :: ostream_iterator默认可构造?

这个问题在这里的评论中进行了讨论。

在Eric Niebler的ranges-v3库(某种程度上已成为C ++ 20标准的一部分)中,它ranges::ostream_iterator默认可构造的 -没有ostream。

怎么来的?

我认为后来具有有效构造的“虚拟”构造是C ++中的反模式,我们逐渐摆脱了这种疣。std::ostream iterator 只能使用流构造(目前-在C ++ 20之前)。而且,似乎我们无法使用默认构造的东西做任何事情range::ostream_iterator。。。所以,这是怎么回事?

c++ iterator ostream range-v3 c++20

6
推荐指数
2
解决办法
147
查看次数

在宏中用下划线替换空格?

我可以编写一个单参数宏,它采用由空格分隔的单词/标记序列,并生成相同的序列,但每个单词/标记之间有下划线?

例如

MAGIC_MACRO(brave new  world)
Run Code Online (Sandbox Code Playgroud)

将评估为

brave_new_world
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我不介意每个空白字符是否变成下划线,只是至少使用一个。
  • 如果我不能做到这一点,我至少想知道这是否可以用两个词来实现。

macros c-preprocessor

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

-Wformat-truncation - 我可以避免它而不是禁用警告吗?

我正在编写这段代码,其中包含以下行:

\n\n
snprintf(target, 11, "%02ld-%02ld-19%02ld", day, month, year);\n
Run Code Online (Sandbox Code Playgroud)\n\n

...在验证所有 3 个值都有效后执行;具体来说,该年份介于 0 到 99 之间。

\n\n

然而,最新版本的 GCC 在使用 运行时-Wextra会抱怨:

\n\n
warning: \xe2\x80\x98%02ld\xe2\x80\x99 directive output may be truncated writing between 2 and 20 bytes\ninto a region of size 3 [-Wformat-truncation=]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我宁愿不完全禁用此警告;甚至也不能在本地禁用它。相反,我想知道是否可以以某种方式“说服”GCC 这三个参数的值范围,从而防止出现警告。

\n\n

是的,这是相当丑陋的重新发明轮子的代码,应该使用特定于区域设置的日期格式化例程,不需要教训我;不是我的代码。

\n

c printf gcc-warning format-truncation

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