589
社区成员




#include <stdio.h>
#include <cuda_runtime.h>
#include <cutil_inline.h>
#include <process.h>
#include <windows.h>
#define GRD 45
#define BLK 16
#define SIZE (GRD * GRD * BLK * BLK)
DWORD test(void *tid)
{
char *src_g;
char *src_c;
int id = (int)tid;
printf("before cudaSetDevice(%d)\n", id);
cutilSafeCall(cudaSetDevice(0));
printf("before cudaMalloc(%d)\n", id);
cutilSafeCall(cudaMalloc((void**) &src_g, SIZE));
cutilSafeCall(cudaFree(src_g));
printf("thread %d ok.\n", id);
return 1;
}
int main(int argc, char *argv[])
{
HANDLE h1 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)test, (void*)1, 0, 0);
HANDLE h2 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)test, (void*)2, 0, 0);
test(0);
// wait other threads
WaitForSingleObject(h1, INFINITE);
WaitForSingleObject(h2, INFINITE);
CloseHandle(h1);
CloseHandle(h2);
return 0;
}