【发布时间】:2017-05-11 09:40:57
【问题描述】:
我尝试使用nvcc来构建以下由“gcc -pthread a.c”构建的多线程程序:
$ cat a.c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *myThreadFun(void *vargp)
{
printf("myThreadFun \n");
return NULL;
}
int main()
{
pthread_t tid;
printf("Before Thread\n");
pthread_create(&tid, NULL, myThreadFun, NULL);
pthread_join(tid, NULL);
printf("After Thread\n");
exit(0);
}
执行“nvcc -pthread a.c”:
$ nvcc -pthread a.c
nvcc fatal : Unknown option 'pthread'
这个topic 说nvcc 支持在不使用-pthread 选项的情况下构建多线程程序。而且我的测试似乎也正确:
$ nvcc a.c
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
$ ldd a.out
linux-vdso.so.1 (0x00007ffcff79e000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007fd4f5a43000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fd4f5825000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fd4f5621000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fd4f5299000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fd4f4f86000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fd4f4d6f000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd4f49cb000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd4f5c4b000)
但是我找不到来自nvcc官方document的证明。谁能帮忙确认一下?
【问题讨论】:
-
nvcc 不是编译器,nvcc 也没有编译该代码
-
@talonmies 我知道 nvcc 是 CUDA 编译套件的包装器。你能详细说明你的cmets吗?谢谢!