小编use*_*358的帖子

Cuda C - 链接器错误 - 未定义的引用

我很难编译一个只包含两个文件的简单cuda程序.

main.c看起来像这样:

#include "my_cuda.h"

int main(int argc, char** argv){
   dummy_gpu();
}
Run Code Online (Sandbox Code Playgroud)

cuda.h看起来像这样:

#ifndef MY_DUMMY
#define MY_DUMMY

void dummy_gpu();

#endif
Run Code Online (Sandbox Code Playgroud)

并且my_cuda.cu文件像这样松散:

#include <cuda_runtime.h>
#include "my_cuda.h"

__global__ void dummy_gpu_kernel(){
   //do something
}

void dummy_gpu(){
   dummy_gpu_kernel<<<128,128>>>();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我编译我总是收到以下错误:

gcc  -I/usr/local/cuda/5.0.35/include/ -c main.c
nvcc  -c my_cuda.cu
gcc  -L/usr/local_rwth/sw/cuda/5.0.35/lib64 -lcuda -lcudart -o md.exe main.o my_cuda.o 
main.o: In function `main':
main.c:(.text+0x15): undefined reference to `dummy_gpu'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

c cuda linker-errors

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

如何安装丢失的Qt模块?

如何在Mac OS下安装/添加缺少的Qt模块?我安装了Qt Creator并正在运行,但是一个新项目会出现以下错误:

Project ERROR: Unknown module(s) in QT: charts
Run Code Online (Sandbox Code Playgroud)

我可以下载并安装缺少的模块,还是必须重新安装Qt并选择缺少的模块?谢谢

qt

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

与cython的numpy数组

我正在尝试将一些python代码移植到cython中,我遇到了一些小问题.

您可以在下面看到代码的代码段(简化示例).

cimport numpy as np
cimport cython
@cython.boundscheck(False) # turn of bounds-checking for entire function
@cython.wraparound(False)
@cython.nonecheck(False)
def Interpolation(cells, int nmbcellsx):
    cdef np.ndarray[float,ndim=1] celle
    cdef int cellnonzero
    cdef int i,l
    for i in range(nmbcellsx):
          celle = cells[i].e
          cellnonzero = cells[i].nonzero
          for l in range(cellnonzero):
               celle[l] = celle[l] * celle[l]
Run Code Online (Sandbox Code Playgroud)

我不明白为什么最内层循环没有完全转换为C代码(即最后一行,celle [l] = ...),请参阅以下输出cython -a feedback:

在此输入图像描述

我在这里错过了什么?

非常感谢.

python numpy cython

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

pypy支持cython扩展吗?

我有一个运行的项目是在pypy中运行的(并且已经实现了比其python对应的更好的加速).但是,我确实有一个函数的Cython实现,它比pypy版本更快.所以我想包括这个功能.

问题是pypy似乎没有找到这个模块(即使.so与执行的.py脚本位于同一个文件夹中):

ImportError: No module named foo
Run Code Online (Sandbox Code Playgroud)

因此,pypy支持cython吗?谢谢.

python pypy cython

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

是否可以即时(jit)编译CUDA内核?

CUDA是否支持CUDA内核的JIT编译?

我知道OpenCL提供此功能。

我有一些在运行时不会更改的变量(即仅取决于输入文件),因此我想在内核编译时(即在运行时)使用宏定义这些值。

如果我在编译时手动定义这些值,我的寄存器使用率将从53下降到46,这将大大提高性能。

jit cuda

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

流固有降低了性能

我正在玩_mm_stream_ps内在函数,我在理解其性能方面遇到了一些麻烦.

这是我正在使用的代码片段...流版本:

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <omp.h>

#include <immintrin.h>

#define NUM_ELEMENTS 10000000L

static void copy_temporal(float* restrict x, float* restrict y)
{
   for(uint64_t i = 0; i < NUM_ELEMENTS/2; ++i){
      _mm_store_ps(y,_mm_load_ps(x));
      _mm_store_ps(y+4,_mm_load_ps(x+4));
      x+=8;
      y+=8;
   }
}
static void copy_nontemporal(float* restrict x, float* restrict y)
{
   for(uint64_t i = 0; i < NUM_ELEMENTS/2; ++i){
      _mm_stream_ps(y,_mm_load_ps(x));
      _mm_stream_ps(y+4,_mm_load_ps(x+4));
      x+=8;
      y+=8;
   }
}

int main(int argc, char** argv)
{
   uint64_t sizeX = sizeof(float) * 4 * NUM_ELEMENTS;
   float *x = (float*) _mm_malloc(sizeX,32); …
Run Code Online (Sandbox Code Playgroud)

assembly sse vectorization intrinsics avx

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

将两个32位整数的向量相乘,产生一个32位结果元素的向量

将两个_mm256i寄存器的每个32位条目相互乘以的最佳方法是什么?

_mm256_mul_epu32不是我想要的,因为它产生64位输出.我想为每个32位输入元素提供32位结果.

而且,我确信两个32位值的乘法不会溢出.

谢谢!

x86 sse intrinsics avx avx2

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

标签 统计

avx ×2

cuda ×2

cython ×2

intrinsics ×2

python ×2

sse ×2

assembly ×1

avx2 ×1

c ×1

jit ×1

linker-errors ×1

numpy ×1

pypy ×1

qt ×1

vectorization ×1

x86 ×1