减少#1的结果是错误的

时间:2017-05-22 08:23:19

标签: cuda

我用Mark Harris的着名幻灯片实现了缩减#1,但结果是0。我在输入数组中填充了幻灯片中显示的相同值。我使用命令nvcc reduction1.cu -o red1使用cuda 7.0编译。哪里出错了?感谢。

Observable.zip(Observable.interval(1, TimeUnit.SECONDS), Observable.fromIterable(iterableRequests),
        new BiFunction<Long, RequestInput, RequestResult>() {
            @Override
            public RequestResult apply(@NonNull Long aLong,
                                       @NonNull final RequestInput request) throws Exception {
                return request;
            }
        })
        .flatMap(new Function<RequestResult, ObservableSource<?>>() {
            @Override
            public ObservableSource<?> apply(RequestResult requestResult) throws Exception {
                return createObservableFromRequest(requestResult)
                        .retryWhen(new Function<Observable<Throwable>, ObservableSource<?>>() {
                            // return throwable observable
                        })
            }
        })
        .subscribe(new Observer<ObservableSource<?>>() {
            //.. onSubscribe {}
            //.. onError {}
            //.. onComplete {}
            @Override
            public void onNext(ObservableSource<?> observableSource) {
                //do something with each network result request emission
            }
        });

1 个答案:

答案 0 :(得分:1)

正如talonmies所说,你正在使用动态共享内存,但你没有为它分配任何内存空间。您必须将此内存的大小指定为内核执行配置的第三个参数。

reduce1<<<1, THREADS_PER_BLOCK, 64>>>(deviceInput, deviceOutput);
                                ^^

修复此代码的另一种方法是使用静态共享内存。像这样声明你的共享内存:

__shared__ int sdata[16];

在向CUDA提问之前,请先阅读this