CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Mueller-Roemer, Johannes Sebastian

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel +49 6151 155-606  |  Fax +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Robert Maynard
As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\" 



On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" value="+496151155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" value="+496151155139" target="_blank">+49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Mueller-Roemer, Johannes Sebastian

If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).

If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

 

Or am I misunderstanding what you mean?

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel +49 6151 155-606  |  Fax +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\" 

 

 

On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:&#43;49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:&#43;49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Robert Maynard
Yes I was responding to comment 3.

I am curious, does the longer form signature "-gencode arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work correctly? CMake has to parse the gencode flags and move them to special msbuild entries, and I wonder if there is a bug when parsing multiple code options. 

On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).

If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

 

Or am I misunderstanding what you mean?

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" value="+496151155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" value="+496151155139" target="_blank">+49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\" 

 

 

On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

 



--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Mueller-Roemer, Johannes Sebastian

The long form fills the Code Generation field with compute_20,sm_20;compute_20,compute_20 (the default without gencode parameters is compute_20,sm_20) and results in the following command line:

 

D:\jsroemer\projects\cuda-pdb-test\build\a>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_20,code=\"compute_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

 

Which is somewhat redundant

 

MSVC turns compute_20,sm_20 into -gencode=arch=compute_20,code=\"sm_20,compute_20\" and compute_20,compute_20 into -gencode=arch=compute_20,code=\"compute_20,compute_20\"

 

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel +49 6151 155-606  |  Fax +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 16:44
To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

Yes I was responding to comment 3.

 

I am curious, does the longer form signature "-gencode arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work correctly? CMake has to parse the gencode flags and move them to special msbuild entries, and I wonder if there is a bug when parsing multiple code options. 

 

On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).

If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

 

Or am I misunderstanding what you mean?

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:&#43;49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:&#43;49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\" 

 

 

On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:&#43;49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:&#43;49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

 

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Robert Maynard
So it works when they are separate gen-code options, but fails when they are combined. Is that correct?


On Wed, Sep 6, 2017 at 11:16 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

The long form fills the Code Generation field with compute_20,sm_20;compute_20,compute_20 (the default without gencode parameters is compute_20,sm_20) and results in the following command line:

 

D:\jsroemer\projects\cuda-pdb-test\build\a>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_20,code=\"compute_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

 

Which is somewhat redundant

 

MSVC turns compute_20,sm_20 into -gencode=arch=compute_20,code=\"sm_20,compute_20\" and compute_20,compute_20 into -gencode=arch=compute_20,code=\"compute_20,compute_20\"

 

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" value="+496151155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" value="+496151155139" target="_blank">+49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 16:44


To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

Yes I was responding to comment 3.

 

I am curious, does the longer form signature "-gencode arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work correctly? CMake has to parse the gencode flags and move them to special msbuild entries, and I wonder if there is a bug when parsing multiple code options. 

 

On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).

If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

 

Or am I misunderstanding what you mean?

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 

From: Robert Maynard [mailto:[hidden email]]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]>
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

 

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\" 

 

 

On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:

I’m having two issues with debug symbols for CUDA libraries on a project:

 

1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

 

Fraunhofer-Institut für Graphische Datenverarbeitung IGD

Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany

Tel <a href="tel:+49%206151%20155606" target="_blank">+49 6151 155-606  |  Fax <a href="tel:+49%206151%20155139" target="_blank"> +49 6151 155-139

[hidden email] | www.igd.fraunhofer.de

 


--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

 

 



--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Mueller-Roemer, Johannes Sebastian
Yes

________________________________
From: Robert Maynard [[hidden email]]
Sent: Wednesday, September 06, 2017 6:58 PM
To: Mueller-Roemer, Johannes Sebastian
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

So it works when they are separate gen-code options, but fails when they are combined. Is that correct?


On Wed, Sep 6, 2017 at 11:16 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
The long form fills the Code Generation field with compute_20,sm_20;compute_20,compute_20 (the default without gencode parameters is compute_20,sm_20) and results in the following command line:

D:\jsroemer\projects\cuda-pdb-test\build\a>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_20,code=\"compute_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"

Which is somewhat redundant

MSVC turns compute_20,sm_20 into -gencode=arch=compute_20,code=\"sm_20,compute_20\" and compute_20,compute_20 into -gencode=arch=compute_20,code=\"compute_20,compute_20\"


Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>

From: Robert Maynard [mailto:[hidden email]<mailto:[hidden email]>]
Sent: Wednesday, September 6, 2017 16:44

To: Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>>
Cc: [hidden email]<mailto:[hidden email]>
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Yes I was responding to comment 3.

I am curious, does the longer form signature "-gencode arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work correctly? CMake has to parse the gencode flags and move them to special msbuild entries, and I wonder if there is a bug when parsing multiple code options.

On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).
If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

Or am I misunderstanding what you mean?

Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>

From: Robert Maynard [mailto:[hidden email]<mailto:[hidden email]>]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>>
Cc: [hidden email]<mailto:[hidden email]>
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\"



On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
I’m having two issues with debug symbols for CUDA libraries on a project:


1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu<http://a.cu>' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>


--

Powered by www.kitware.com<http://www.kitware.com>

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake



--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Robert Maynard
Okay I have opened an issue on CMake for handling multiple gencode with multiple code targets.

On Wed, Sep 6, 2017 at 3:19 PM, Mueller-Roemer, Johannes Sebastian <[hidden email]> wrote:
Yes

________________________________
From: Robert Maynard [[hidden email]]
Sent: Wednesday, September 06, 2017 6:58 PM
To: Mueller-Roemer, Johannes Sebastian
Cc: [hidden email]
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

So it works when they are separate gen-code options, but fails when they are combined. Is that correct?


On Wed, Sep 6, 2017 at 11:16 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
The long form fills the Code Generation field with compute_20,sm_20;compute_20,compute_20 (the default without gencode parameters is compute_20,sm_20) and results in the following command line:

D:\jsroemer\projects\cuda-pdb-test\build\a>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_20,code=\"compute_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"

Which is somewhat redundant

MSVC turns compute_20,sm_20 into -gencode=arch=compute_20,code=\"sm_20,compute_20\" and compute_20,compute_20 into -gencode=arch=compute_20,code=\"compute_20,compute_20\"


Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel <a href="tel:%2B49%206151%20155-606" value="+496151155606">+49 6151 155-606<tel:+49%206151%20155606>  |  Fax <a href="tel:%2B49%206151%20155-139" value="+496151155139">+49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>

From: Robert Maynard [mailto:[hidden email]<mailto:[hidden email]>]
Sent: Wednesday, September 6, 2017 16:44

To: Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>>
Cc: [hidden email]<mailto:[hidden email]>
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Yes I was responding to comment 3.

I am curious, does the longer form signature "-gencode arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work correctly? CMake has to parse the gencode flags and move them to special msbuild entries, and I wonder if there is a bug when parsing multiple code options.

On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
If the comment is wrt 3., the result is the same no matter if I use a space or an equals sign, if I double escape the quotes (e.g., use the value as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS becomes compute_20,"sm_20,compute_20" instead of compute_20,sm_20,compute_20, which is equally illegal and will cause the same error message, also double escaping should not be necessary for a subset of flags (Xcompiler works fine without it, even if the default values are pointless).
If the comment is wrt 2., this is the line automatically generated by CMake/VS when not passing in any gencode flags explicitly.

Or am I misunderstanding what you mean?

Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel <a href="tel:%2B49%206151%20155-606" value="+496151155606">+49 6151 155-606<tel:+49%206151%20155606>  |  Fax <a href="tel:%2B49%206151%20155-139" value="+496151155139">+49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>

From: Robert Maynard [mailto:[hidden email]<mailto:[hidden email]>]
Sent: Wednesday, September 6, 2017 15:38
To: Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>>
Cc: [hidden email]<mailto:[hidden email]>
Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

As far as gencode goes, your line has errors. With CUDA 8 it should look like:

-gencode arch=compute_20,code=\"sm_20,compute_20\"



On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian <[hidden email]<mailto:[hidden email]>> wrote:
I’m having two issues with debug symbols for CUDA libraries on a project:


1.       The PDBs are not placed where the linker later expects to find them (haven’t been able to replicate this in a minimal project yet)

2.       Trying to circumnavigate this issue by using “/Z7” instead of “/Zi” does not work, Zi is always used (replicable in any project with CUDA)

Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by -Z7 or /Z7. Build and see several warnings like “cl : Command line warning D9025: overriding '/Z7' with '/Zi'” in the output window.
And do the flags in the –Xcompiler make sense at all in VS? The CUDA build tools seem to determine these automatically anyways… for example I get the following call in the above scenario:

"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0  --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g   -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o A.dir\Debug\a.cu.obj "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"

3.       Also, -gencode flags do not behave as expected when given in the form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS build system to error out:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(216,9): error : Item '..\..\a\a.cu<http://a.cu>' Code Generation value is not in the expected format '[Arch],[Code]'.

The code generation value in this example is set to compute_20,sm_20,compute_20 by CMake.

Fraunhofer-Institut für Graphische Datenverarbeitung IGD
Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
Tel <a href="tel:%2B49%206151%20155-606" value="+496151155606">+49 6151 155-606<tel:+49%206151%20155606>  |  Fax <a href="tel:%2B49%206151%20155-139" value="+496151155139">+49 6151 155-139<tel:+49%206151%20155139>
[hidden email]<mailto:[hidden email]> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>


--

Powered by www.kitware.com<http://www.kitware.com>

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake





--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMake 3.9.x Visual Studio CUDA PDB/compiler flags issues

Robert Maynard
Hi,

I have a MR open for CMake that resolves this bug
(https://gitlab.kitware.com/cmake/cmake/merge_requests/1618)

On Thu, Sep 7, 2017 at 9:48 AM, Robert Maynard
<[hidden email]> wrote:

> Okay I have opened an issue on CMake for handling multiple gencode with
> multiple code targets.
>
> On Wed, Sep 6, 2017 at 3:19 PM, Mueller-Roemer, Johannes Sebastian
> <[hidden email]> wrote:
>>
>> Yes
>>
>> ________________________________
>> From: Robert Maynard [[hidden email]]
>> Sent: Wednesday, September 06, 2017 6:58 PM
>> To: Mueller-Roemer, Johannes Sebastian
>> Cc: [hidden email]
>> Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags
>> issues
>>
>> So it works when they are separate gen-code options, but fails when they
>> are combined. Is that correct?
>>
>>
>> On Wed, Sep 6, 2017 at 11:16 AM, Mueller-Roemer, Johannes Sebastian
>> <[hidden email]<mailto:[hidden email]>>
>> wrote:
>> The long form fills the Code Generation field with
>> compute_20,sm_20;compute_20,compute_20 (the default without gencode
>> parameters is compute_20,sm_20) and results in the following command line:
>>
>> D:\jsroemer\projects\cuda-pdb-test\build\a>"C:\Program Files\NVIDIA GPU
>> Computing Toolkit\CUDA\v8.0\bin\nvcc.exe"
>> -gencode=arch=compute_20,code=\"sm_20,compute_20\"
>> -gencode=arch=compute_20,code=\"compute_20,compute_20\" --use-local-env
>> --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing
>> Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing
>> Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0
>> --machine 64 --compile -cudart static -Xcompiler="/EHsc -Zi -Ob0" -g
>> -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o
>> A.dir\Debug\a.cu.obj
>> "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"
>>
>> Which is somewhat redundant
>>
>> MSVC turns compute_20,sm_20 into
>> -gencode=arch=compute_20,code=\"sm_20,compute_20\" and compute_20,compute_20
>> into -gencode=arch=compute_20,code=\"compute_20,compute_20\"
>>
>>
>> Fraunhofer-Institut für Graphische Datenverarbeitung IGD
>> Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
>> Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151
>> 155-139<tel:+49%206151%20155139>
>>
>> [hidden email]<mailto:[hidden email]>
>> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>
>>
>> From: Robert Maynard
>> [mailto:[hidden email]<mailto:[hidden email]>]
>> Sent: Wednesday, September 6, 2017 16:44
>>
>> To: Mueller-Roemer, Johannes Sebastian
>> <[hidden email]<mailto:[hidden email]>>
>> Cc: [hidden email]<mailto:[hidden email]>
>> Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags
>> issues
>>
>> Yes I was responding to comment 3.
>>
>> I am curious, does the longer form signature "-gencode
>> arch=compute_20,code=sm_20  -gencode arch=compute_20,code=compute_20" work
>> correctly? CMake has to parse the gencode flags and move them to special
>> msbuild entries, and I wonder if there is a bug when parsing multiple code
>> options.
>>
>> On Wed, Sep 6, 2017 at 10:36 AM, Mueller-Roemer, Johannes Sebastian
>> <[hidden email]<mailto:[hidden email]>>
>> wrote:
>> If the comment is wrt 3., the result is the same no matter if I use a
>> space or an equals sign, if I double escape the quotes (e.g., use the value
>> as you wrote it in the cmake-gui for CMAKE_CUDA_FLAGS), the value in VS
>> becomes compute_20,"sm_20,compute_20" instead of
>> compute_20,sm_20,compute_20, which is equally illegal and will cause the
>> same error message, also double escaping should not be necessary for a
>> subset of flags (Xcompiler works fine without it, even if the default values
>> are pointless).
>> If the comment is wrt 2., this is the line automatically generated by
>> CMake/VS when not passing in any gencode flags explicitly.
>>
>> Or am I misunderstanding what you mean?
>>
>> Fraunhofer-Institut für Graphische Datenverarbeitung IGD
>> Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
>> Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151
>> 155-139<tel:+49%206151%20155139>
>>
>> [hidden email]<mailto:[hidden email]>
>> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>
>>
>> From: Robert Maynard
>> [mailto:[hidden email]<mailto:[hidden email]>]
>> Sent: Wednesday, September 6, 2017 15:38
>> To: Mueller-Roemer, Johannes Sebastian
>> <[hidden email]<mailto:[hidden email]>>
>> Cc: [hidden email]<mailto:[hidden email]>
>> Subject: Re: [CMake] CMake 3.9.x Visual Studio CUDA PDB/compiler flags
>> issues
>>
>> As far as gencode goes, your line has errors. With CUDA 8 it should look
>> like:
>>
>> -gencode arch=compute_20,code=\"sm_20,compute_20\"
>>
>>
>>
>> On Mon, Sep 4, 2017 at 4:06 AM, Mueller-Roemer, Johannes Sebastian
>> <[hidden email]<mailto:[hidden email]>>
>> wrote:
>> I’m having two issues with debug symbols for CUDA libraries on a project:
>>
>>
>> 1.       The PDBs are not placed where the linker later expects to find
>> them (haven’t been able to replicate this in a minimal project yet)
>>
>> 2.       Trying to circumnavigate this issue by using “/Z7” instead of
>> “/Zi” does not work, Zi is always used (replicable in any project with CUDA)
>>
>> Replication steps: Replace -Zi or /Zi in CMAKE_*_FLAGS* (CUDA, CXX, C) by
>> -Z7 or /Z7. Build and see several warnings like “cl : Command line warning
>> D9025: overriding '/Z7' with '/Zi'” in the output window.
>> And do the flags in the –Xcompiler make sense at all in VS? The CUDA build
>> tools seem to determine these automatically anyways… for example I get the
>> following call in the above scenario:
>>
>> "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe"
>> -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env
>> --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\bin\amd64"  -I"C:\Program Files\NVIDIA GPU Computing
>> Toolkit\CUDA\v8.0\include" -I"C:\Program Files\NVIDIA GPU Computing
>> Toolkit\CUDA\v8.0\include"  -G   --keep-dir x64\Debug -maxrregcount=0
>> --machine 64 --compile -cudart static -Xcompiler="/EHsc -Z7 -Ob0" -g
>> -D_WINDOWS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -o
>> A.dir\Debug\a.cu.obj
>> "D:\jsroemer\projects\cuda-pdb-test\a\a.cu<http://a.cu>"
>>
>> 3.       Also, -gencode flags do not behave as expected when given in the
>> form -gencode=arch=compute_20,code="sm_20,compute_20", as this causes the VS
>> build system to error out:
>>
>> C:\Program Files
>> (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA
>> 8.0.targets(216,9): error : Item '..\..\a\a.cu<http://a.cu>' Code Generation
>> value is not in the expected format '[Arch],[Code]'.
>>
>> The code generation value in this example is set to
>> compute_20,sm_20,compute_20 by CMake.
>>
>> Fraunhofer-Institut für Graphische Datenverarbeitung IGD
>> Fraunhoferstr. 5  |  64283 Darmstadt  |  Germany
>> Tel +49 6151 155-606<tel:+49%206151%20155606>  |  Fax +49 6151
>> 155-139<tel:+49%206151%20155139>
>>
>> [hidden email]<mailto:[hidden email]>
>> | www.igd.fraunhofer.de<http://www.igd.fraunhofer.de>
>>
>>
>> --
>>
>> Powered by www.kitware.com<http://www.kitware.com>
>>
>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Kitware offers various services to support the CMake community. For more
>> information on each offering, please visit:
>>
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>>
>
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake