小编Pie*_*erV的帖子

CUDA math API:函数和内在函数之间的区别

根据CUDA数学APi,许多数学函数,如正弦和余弦,都在软件(函数)和硬件(内在函数)中实现.这些内在函数可能使用GPU的特殊功能单元,那么软件实现的重点是什么?这不比硬件实现慢吗?

cuda

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

Django百日草禁用评论或使用替代品

我正在为一个初级建筑师制作一个小型的个人django网站,其中包括博客功能.我一直想知道我是否应该使用现有的博客应用程序或编写自己的应用程序.

当然有许多可能的应用程序可供使用,对我来说,百日草看起来很有前途.但是,我确实对注释的实现方式有疑问.据我所知,它是使用Django的评论框架实现的,但根据Django文档,这是不推荐使用的(并且应该被自定义解决方案或类似Disqus的东西取代).

所以我的问题是:有没有办法完全禁用百日草的评论(因为我很可能不需要它).而且,是否有可能在百日草中使用Disqus?因为我在他们的文档中找不到任何相关内容.

django django-comments zinnia

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

julia源代码中jl_value_t的含义

我正试图找到我对Julia源代码的看法,即codegen.cpp.他们使用一个jl_value_t引用自身的结构:

#define JL_DATA_TYPE \
    struct _jl_value_t *type;

typedef struct _jl_value_t {
    JL_DATA_TYPE
} jl_value_t;
Run Code Online (Sandbox Code Playgroud)

在eclipse中调试源代码时,这似乎不包含任何有用的信息,但它经常被使用.我该如何解释这个结构?它包含哪些信息?

eclipse compilation julia

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

CUDA:使用NVPTX编译LLVM IR

对于我的项目,我正在以两种不同的方式为某些功能生成PTX指令.第一种方法使用CUDA C来实现函数,使用nvcc来编译它们 nvcc -ptx <file>.cu -o <file>.ptx.另一种方法用不同的语言编写代码,从中生成LLVM IR,并使用NVPTX后端将其编译为ptx.我在这里遇到的问题是某些功能在第二种情况下表现更差.其他功能导致或多或少的可比性能.

现在我想知道为什么某些函数的性能存在这样的差异(以及为什么其他函数没有),但是使用nsight进行分析并没有给我任何好的想法.

我发现的唯一区别是寄存器使用情况.在生成的ptx代码中,我可以看到以下内容:

使用nvcc编译

.reg .u32 %r<8>;
.reg .u64 %rd<17>;
.reg .f32 %f<8>;
.reg .pred %p<5>;
Run Code Online (Sandbox Code Playgroud)

使用nvptx编译

.reg .pred %p<396>;
.reg .s16 %rc<396>;
.reg .s16 %rs<396>;
.reg .s32 %r<396>;
.reg .s64 %rl<396>;
.reg .f64 %fl<396>;
Run Code Online (Sandbox Code Playgroud)

据我所知,这表示使用的虚拟寄存器的数量和类型,但正如您可以清楚地看到的,在第二种情况下这是不正确的.在使用nsight进行性能分析后,我可以看到实际使用的寄存器/线程的数量在第一种情况下为8,在第二种情况下为31.当然,这可能表明为什么第二种情况下的代码速度较慢,但​​问题是我使用NVPTX从LLVM IR编译到ptx的所有函数都存在这个问题.它们都有396个使用过的虚拟寄存器和nsight报告31个所有寄存器/线程,尽管某些函数产生的性能几乎与第一种情况完全相同.

这个注册是我减速的问题吗?为什么它不影响所有功能?如果不是,可能导致经济放缓的原因是什么?你能给出我应该看的方向的任何提示吗?

谢谢!

(使用的LLVM版本是3.3)

编辑:我注意到的另一个不同之处是失速原因:

NVCC:

停止nvcc编译代码的原因

NVPTX:

停止nvptx编译代码的原因

显然,"其他"原因相对增加.也许这可以解释这个问题?

编辑:添加了ptx源代码

此处显示的函数将数据从全局内存复制到共享内存.然后每个线程将其自己的元素和前一个元素与数组中的最后一个元素进行比较.如果比较为正,则将索引写入输出数组.

1)使用NVPTX将LLVM IR编译为PTX

// .globl   julia_cuda_find_weighted_median18585
.entry julia_cuda_find_weighted_median18585(
    .param .u64 .ptr .global .align 4 julia_cuda_find_weighted_median18585_param_0,
    .param .u64 .ptr .global .align 4 julia_cuda_find_weighted_median18585_param_1
)                                       // @julia_cuda_find_weighted_median18585
{
    .reg …
Run Code Online (Sandbox Code Playgroud)

cuda llvm ptx

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

C:如何访问不同类型的匿名或未命名的嵌套结构

我注意到有几种方法可以在C中的其他结构中定义结构:

struct s {
    int abc;

    struct {
        int a;
    };

    struct {
        int b;
    } intern;

    struct i {
        int c;
    };

    struct i2 {
        int d;
    } intern2;

    struct i3 {
        int e;
    };
    struct i3 intern3;
};
Run Code Online (Sandbox Code Playgroud)

这个结构使用gcc或g ++编译很好,所以我假设所有参数都可以通过某种方式访问​​.我试过这样的:

int main(int argc, char const *argv[])
{
    struct s mystruct;

    mystruct.abc = 0;
    mystruct.a = 1;
    mystruct.intern.b = 2;
    mystruct.c = 3; // <-- does not compile
    mystruct.intern2.d = 4;
    mystruct.intern3.e = 5;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

除了访问mystruct.c …

c struct anonymous-struct

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

cuda api cu和cuda有什么区别......?

例如cudaMemcpycuMemcpy?我可以看到函数定义不同,但我的意思是API.为什么有api开头,cu...一个开头cuda...?应该何时使用每个API?

api cuda

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

标签 统计

cuda ×3

anonymous-struct ×1

api ×1

c ×1

compilation ×1

django ×1

django-comments ×1

eclipse ×1

julia ×1

llvm ×1

ptx ×1

struct ×1

zinnia ×1