简体   繁体   中英

VS program crashes in debug but not release mode?

I am running the following program in VS 2012 to try out the Thrust function find:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <thrust/find.h>
#include <thrust/device_vector.h>
#include <stdio.h>

int main() {
    thrust::device_vector<char> input(4);

    input[0] = 'a';
    input[1] = 'b';
    input[2] = 'c';
    input[3] = 'd';

    thrust::device_vector<char>::iterator iter;

    iter = thrust::find(input.begin(), input.end(), 'a');

    std::cout << "Index of a = " << iter - input.begin() << std::endl;

    return 0;
}

This is a modified version of a code example taken from http://docs.thrust.googlecode.com/hg/group__searching.html#ga99c7a59cef5b9f4cdbc70f37b2e221be

When I run this in Debug mode, my program crashes and I get the error Debug Error! ... R6010 - abort() has been called Debug Error! ... R6010 - abort() has been called . However, running this in Release mode I just get my expected output Index of a = 0 .

I know that the crash happens because of the line that includes the find function.

What might cause this to happen?

There are a few similar questions eg here

To quote a comment : "Thrust is known to not compile and run correctly when built for debugging"

And from the docs : "nvcc does not support device debugging Thrust code. Thrust functions compiled with (eg, nvcc -G, nvcc --device-debug 0, etc.) will likely crash."

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM