2011-01-12 10 views
10

Podczas kompilowania kodu CUDA należy wybrać, dla jakiej architektury generowany jest kod. nvcc zapewnia dwa parametry, aby określić tę architekturę, w zasadzie:Jakie są domyślne wartości opcji łuku i kodu podczas używania nvcc?

  • arch określa arquictecture wirtualny, który może być compute_10, compute_11 itd
  • code określa prawdziwą architekturę, która może być sm_10, sm_11, etc.

więc polecenie tak:

nvcc x.cu -arch=compute_13 -code=sm_13 

Generuje kod "cubin" dla urządzeń z możliwością 1.3 obliczeń. Proszę popraw mnie jeżeli się mylę. Które chciałbym wiedzieć, które są domyślne wartości dla tych dwóch parametrów? Która domyślna architektura jest używana przez nvcc, gdy nie określono wartości dlaarch lub ?

+2

Jeśli skompilujesz swój kod przy użyciu flagi "verbose", zobaczysz domyślną architekturę wirtualną. –

Odpowiedz

8

Ok, w końcu udało mi się odkryć wartości domyślne. Moja wina za nie przeczytanie całego rozdziału dotyczącego kompilacji GPU w dokumentacji NVCC od początku do samego końca. Więc

nvcc x.cu 

odpowiada za

nvcc x.cu –arch=compute_10 -code=sm_10,compute_10 

Są to wartości domyślne. Kompilacja jest wykonywana domyślnie na wirtualnej architekturze compute_10, a a.out, która wynika z kompilacji, będzie zawierać kod CUBIN dla rzeczywistej architektury sm_10 oraz kod zespołu PTX dla architektury compute_10, który zostanie ponownie skompilowany "w samą porę" przez sterownik CUDA, jeśli twoja architektura jest większa niż sm_10.

+2

Domyślna architektura [teraz zależy od wersji CUDA] (http://stackoverflow.com/questions/28932864/cuda-compute-capability-requirements), z nowszymi wersjami. –

2

Uważam, że domyślną wartością jest compute_10, ponieważ nie można używać żadnych funkcji compute_13, chyba że wyraźnie określono, że tego właśnie chcesz. (Prawdopodobnie dokumentacja NVCC dołączona do zestawu narzędzi CUDA określa, ale nie mogę znaleźć linku online).

+0

Chyba masz rację. Nie mogłem znaleźć tych informacji, kiedy zapoznałem się z dokumentacją NVCC. I tak znów będę wyglądać. – Auron

+0

Hmm, wydaje się, że domyślną wartością '-code' jest określona wartość w' -arch', ale nie mogę znaleźć, która jest domyślną wartością '-arch'. – Auron