-
Notifications
You must be signed in to change notification settings - Fork 206
gcc 6 issue #343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This is a CUDA issue, not a Gunrock issue. CUDA only supports certain combinations of OS+compiler. |
But I have installed toolkit 9.1 with that version without any problem! The document is described at medium. |
We have repeatedly seen that issues with building and running Gunrock on compiler/OS combinations not on this list (https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) are actually issues with the compiler/OS combination. I'm glad other stuff works for you. Gunrock uses a fair amount of C++11 features and CUDA 9 features and perhaps we stress the compiler/OS combination more than other packages. |
And to add to that, you don't have to downgrade gcc, just use update-alternatives and add a gcc-6 installation in there along with others. That will make all of your CUDA 9 features work, and you can switch to the newest gcc-7 for all your other needs. |
OK I ran the following commands to explicitly set CC and CXX to gcc-6 and g++-6, respectively. However, I now get a new error message.
Does the error mean that gunrock doesn't support cuda 9.1?! That is odd because cmake said |
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/i 8000 ndex.html says for Ubuntu 17.10, you need gcc 7.2.0. |
@mahmoodn the error that you have is still in CUDA because you don't have the right gcc support. You cannot mix and match the gcc and cuda versions as you like, please follow their wiki guide for the appropriate version you need and then use update-alternatives to set the gcc version instead of exporting it. Exporting doesn't always guarantee it (even if it shows up if you run gcc --v). We have no issues running gunrock on CUDA 9.1, with our Ubuntu 16.04 and gcc 5.4.0. |
@jowens: That document is about cuda 9.2. However, as I said before, I have installed cuda 9.1 on Ubuntu 17.10 at the time that 9.2 had not been released. I haven't upgraded cuda yet. So, at the time that I decided to installed cuda 9.1, it said that gcc7 is unsupported. So, I used gcc 6 and it went smoothly and I am actually able to build some other programs using gcc6, nvcc and other staffs. If you say that installed cuda is incompatible with gcc, then how it was possible to built the toolkit?! If there is any mismatch between the gcc command and cuda, then all programs must fail. However, I have built some programs with makefiles and nvcc. @neoblizz: I really don't want to use any version as I like... again let me summarize: Please see below that although I have specified the alternatives and I am able to build some cuda examples, the gunrock fails
I think cmake wrongly set or forget somethings about the correct gcc version. Therefore, during the compilation it uses gcc-7. Though, this is a guess. |
@mahmoodn cmake is using the right gcc-6, if you say it is supported. Please navigate to |
EDIT: @mahmoodn before that, could you try using boost 1.58.0 instead? |
@neoblizz
Although internal compiler errors are related to gcc, I would like to test another version of boost, e.g. 1.60.0 |
@mahmoodn more on this: h2oai/h2o4gpu#607 |
From the looks of it, they have taken care of a lot of issues within 9.1 in CUDA 9.2, and that makes sense because subversions usually means that there were bugs significant enough (like the one you see), to release a new version. |
We have also seen this same issue, here: #334 |
Yes I removed -std=c++11 option. |
@mahmoodn have you tried running ctest on it? |
Yes it was fine. I also went to the dataset folder and made hollywood. I am trying to run one of the datasets. The document for simple example (here), seems to be a dev document. Is that the first step to understand gunrock? |
@mahmoodn great, running a dataset is fairly simple. For example: |
Consider the following run
I want to know |
The average elapsed time, min elapsed and max elapsed are GPU measurements. Preprocessing and post processing and before and after the computation as the name suggest. Nvidia-smi maybe isn't the best way to check GPU utilization when the process is only 130ms long. Are you running nvidia-smi in a different window? What GPU are you using? I don't quite understand why you'd need that control, because after the work is set by the CPU, it doesn't do much. We don't have an api allowing such control, and there didn't seem any use case. What are you trying to do there? |
When the task is offloaded to gpu, what does min and max elapsed mean? Is that related to more than one iteration for running the program? For the threads, I just want to measure some gpu features for research. So, I would like to know what happens when two or eight bfs threads compete on the gpu resource? Just to measure some architectural features. Currently at some initial steps are cores reach 100% then one one bfs threads is seen. |
Min and max elapsed is due to the multiple runs, yes, more than one iterations averaged out for the avg elapsed. I believe you are able to do so, we don't have an api for that as far as I know. @sgpyc might be able to comment on this. Also worth looking is the |
The problem is gcc version. following this Selection Path Priority Status
Press to keep the current choice[*], or type selection number: 0 Selection Path Priority Status
|
@neoblizz - we are ready to go with cuda10 against gunrock? |
@archenroot yes, I have tested gunrock on CUDA 10 and latest NVIDIA drivers, work perfectly. |
@mahmoodn - just for your info, I am testing Gunrock Java interface (to finally merge it into JavaCPP presets) and as Gentoo user I already migrated to GCC 7. By facing similar issues as you did. I finally found following setup which compiles gunrock. So my env is:
Still after this I had some issues in boost: I found these discussed at Torch repos: torch/cutorch#797 So I did not nice, but dirty change: note sedinplace is a bash function defined in JavaCPP presets to help custimizing the code to be wrapped by Java access layer (JNI in this case):
I just add another custom NVCC_FLAG into existing defintiion: -D__CUDA_NO_HALF_OPERATORS__ which fixed/removed the error reported from boost. So in this setup (although not supported by Nvidia) works, I am just not sure why I didn't faced your issue with version as soon as I have in my crt/host_config.h still these lines:
Additionally I had to disable VER check in CUDA:
I think this latest one is something with Gunrock build system, but devs are stable, so it is again something to do with my setup. Still I made it working. And I am also going to do now the merge request regarding Java API for Gunrock :-) |
|
@jowens - was receiving in my env exactly this: Not sure what I did, but don't receive it anymore, so don't need to comment out the line in *.h file...not sure what caused this originally (I did yesterday multiple changes to env)... |
If the problem persist, you can hack these defines as well, by just defining them yourself. Or passing it during compile |
Uh oh!
There was an error while loading. Please reload this page.
Is there any way to workaround gcc-6 without downgrading the whole gcc version? When I run make, I get the following error
The cuda is 9.1 and ubuntu is 17.10. Any idea about that?
The text was updated successfully, but these errors were encountered: