咲 ⁧!喵⁧‭ 2024-07-26 23:34 采纳率: 50%
浏览 25

编译cuda文件发生错误Command-line error #571: invalid option: --orig_src_path_name

编译cuda文件发生错误
nvcc -arch=sm_60 --output-file astralpathcuda.exe D:\project\AstralPathCuda\AstralPathCuda\temp\20240
7262323.cu
202407262323.cu
Command-line error #571: invalid option: --orig_src_path_name

img

好像不是cu文件的问题

#include<stdio.h>
#include <cuda_runtime.h>
using namespace std;
//现在开始全局变量书写
     int N = 1;//global
//现在开始全局内存书写
__device__  int d_z[10] =  {};//length:10
__global__ void sum(int *d_x,int N) {
        const int tid = threadIdx.x;
        const int bid = blockIdx.x;
__shared__ int __shared__s_x[128];
        const int n = bid * blockDim.x + tid;
        int x = 0;
        if(n < N) {
            __shared__s_x[n] = d_x[n];
        }
        __syncthreads();
        for (int offset = blockDim.x >> 1; offset >= 32; offset >>= 1)
        {
            if (tid < offset)
            {
                __shared__s_x[tid] += __shared__s_x[tid + offset];
            }
            __syncthreads();
        }
        x = __shared__s_x[tid];
        for (int offset = 16; offset > 0; offset >>= 1)
        {
            x += __shfl_down_sync(0xffffffff,x, offset);
        }


        if (tid == 0)
        {

            atomicAdd(&d_z[0], x);
        }
}
int main(int argc, char* argv[]) {
        N = argc - 1;
        int *a = (int*) malloc(sizeof(int)*N);
        int *b = (int *) malloc(sizeof(int)*10);
        for (int x = 0 ;x < N;x ++) {
            a[x] = atoi(argv[x + 1]);
        }
        int *d_x;
        cudaMalloc((void **)&d_x,sizeof(int)*N);
        cudaMemcpy(d_x,a,sizeof(int)*N,cudaMemcpyHostToDevice);
        const int block_size = 128;
        const int grid_size =  (N + block_size - 1) / block_size;
        cudaEvent_t start ;
        cudaEvent_t stop ;
        cudaEventCreate(&start);
        cudaEventCreate(&stop);
        cudaEventRecord(start);

        sum<<<grid_size,block_size>>>(d_x,N);
        cudaDeviceSynchronize();

        cudaEventRecord(stop);
        cudaEventSynchronize(stop);
        float elapsed_time = 0;
        cudaEventElapsedTime(&elapsed_time,start,stop);
        printf("Time:%g ms\n",elapsed_time);

        cudaDeviceSynchronize();
        cudaMemcpyFromSymbol(b,d_z,sizeof(int)*10);
        printf("x:%d \n",b[0]);

        free(a);
        free(b);
        cudaFree(d_x);
}
  • 写回答

2条回答 默认 最新

  • IT工程师_二师兄 2024-07-27 10:42
    关注

    你把报错和运行记录复制发于我

    评论

报告相同问题?

问题事件

  • 创建了问题 7月26日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?