Closed ghost closed 4 years ago
Which OS? and which g++ version?
siva@sponnusa:~$ g++ --version g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Try updating to at least g++ version 8, version 9 is better.
@valeriob01 , We updated the g++ version to 9 and tried. We got below error.
echo \"git describe --long --dirty --always
\" > version.new
diff -q -N version.new version.inc >/dev/null || mv version.new version.inc
echo Version: cat version.inc
Version: "v6.11-366-gf887d6e-dirty"
/usr/bin/g++-9 -MT Worktodo.o -MMD -MP -MF .d/Worktodo.Td -Wall -O2 -std=c++17 -c -o Worktodo.o Worktodo.cpp
In file included from Worktodo.h:6,
from Worktodo.cpp:3:
Args.h:11:31: error: ‘namespace fs = std::std::filesystem;’ conflicts with a previous declaration
11 | namespace fs = std::filesystem;
| ^
In file included from Args.h:5,
from Worktodo.h:6,
from Worktodo.cpp:3:
common.h:30:45: note: previous declaration ‘namespace fs = std::experimental::std::experimental::filesystem;’
30 | namespace fs = std::experimental::filesystem;
| ^
In file included from Worktodo.h:6,
from Worktodo.cpp:3:
Args.h:43:7: error: ‘path’ in namespace ‘fs’ does not name a type
43 | fs::path resultsFile = "results.txt";
| ^~~~
Args.h:44:7: error: ‘path’ in namespace ‘fs’ does not name a type
44 | fs::path masterDir;
| ^~~~
Args.h:45:7: error: ‘path’ in namespace ‘fs’ does not name a type
45 | fs::path tmpDir = ".";
| ^~~~
Args.h:46:7: error: ‘path’ in namespace ‘fs’ does not name a type
46 | fs::path proofResultDir = "proof";
| ^~~~
Worktodo.cpp: In static member function ‘static std::optional~~~~
Worktodo.cpp:119:36: error: ‘class Args’ has no member named ‘masterDir’
119 | fs::path globalWorktodo = args.masterDir / worktodoTxt;
| ^~~~~
Makefile:30: recipe for target 'Worktodo.o' failed
make: *** [Worktodo.o] Error 1
But I see in your previous post that you have local modifications:
sed -i 's/std::filesystem/std::experimental::filesystem/g' common.h
sed -i 's//<experimental/filesystem>/g' main.cpp
sed -i 's/std::filesystem/std::experimental::filesystem/g' main.cpp
sed -i 's//<experimental/filesystem>/g' checkpoint.cpp
sed -i 's/std::filesystem/std::experimental::filesystem/g' checkpoint.cpp
sed -i 's//<experimental/filesystem>/g' File.h
sed -i 's/std::filesystem/std::experimental::filesystem/g' File.h
sed -i 's//<experimental/filesystem>/g' common.cpp
sed -i 's//<experimental/filesystem>/g' ProofSet.h
sed -i 's//<experimental/filesystem>/g' Worktodo.cpp
that's why your version is marked as -dirty, try removing the modifications or re-clone from repository.
It is also possible that your OS lacks the the libstdc++ library.
Hi @valeriob01, After upgrading the g++ version I'm able to build and run without any modifications with ROCm 3.3 driver.
But with ROCm 3.5 driver I'm observing the below issue
/usr/bin/g++-9 -o gpuowl Pm1Plan.o GmpUtil.o Worktodo.o common.o main.o Gpu.o clwrap.o Task.o checkpoint.o timeutil.o Args.o state.o Signal.o FFTConfig.o AllocTrac.o gpuowl-wrap.o sha3.o md5.o -lstdc++fs -lOpenCL -lgmp -pthread -L/opt/rocm-3.3.0/opencl/lib/x86_64 -L/opt/rocm-3.1.0/opencl/lib/x86_64 -L/opt/rocm/opencl/lib/x86_64 -L/opt/amdgpu-pro/lib/x86_64-linux-gnu -L. /usr/bin/ld: cannot find -lOpenCL collect2: error: ld returned 1 exit status Makefile:19: recipe for target 'gpuowl' failed make: *** [gpuowl] Error 1
You have to modify your Makefile to include ROCm 3.5 path:
-L/opt/rocm-3.5.0/opencl/lib/x86_64
Okay but from ROCm 3.5 opencl .so files are present in /opt/rocm/opencl/lib not in /opt/rocm/opencl/lib/x86_64
I modified the make file accordingly and it is working fine now.
Closing this issue.
Ok, I am still running ROCm 3.3
Config details: GPU: Radeon VII Driver: ROCm 3.5
Repo steps: git clone https://github.com/preda/gpuowl.git cd gpuowl sed -i 's/std\:\:filesystem/std\:\:experimental\:\:filesystem/g' common.h/<experimental\/filesystem>/g' main.cpp
sed -i 's/std\:\:filesystem/std\:\:experimental\:\:filesystem/g' main.cpp/<experimental\/filesystem>/g' checkpoint.cpp
sed -i 's/std\:\:filesystem/std\:\:experimental\:\:filesystem/g' checkpoint.cpp
sed -i 's//<experimental\/filesystem>/g' File.h
sed -i 's/std\:\:filesystem/std\:\:experimental\:\:filesystem/g' File.h/<experimental\/filesystem>/g' common.cpp
sed -i 's//<experimental\/filesystem>/g' ProofSet.h
sed -i 's//<experimental\/filesystem>/g' Worktodo.cpp
make
sed -i 's/
sed -i 's/
sed -i 's/
Observed error g++ -MT Worktodo.o -MMD -MP -MF .d/Worktodo.Td -Wall -O2 -std=c++17 -c -o Worktodo.o Worktodo.cpp In file included from Worktodo.cpp:3:0: Worktodo.h: In static member function ‘static Task Worktodo::makeVerify(Args&, std::__cxx11::string)’: Worktodo.h:26:95: sorry, unimplemented: non-trivial designated initializers not supported static Task makeVerify(Args& args, string path) { return Task{Task::VERIFY, .verifyPath=path}; } ^ Worktodo.cpp: In function ‘std::optional {anonymous}::parse(const string&)’:
Worktodo.cpp:26:98: sorry, unimplemented: non-trivial designated initializers not supported
if (sscanf(line.c_str(), "Verify=%255s", buf) == 1) { return Task{Task::VERIFY, .verifyPath=buf}; }
^
Makefile:30: recipe for target 'Worktodo.o' failed
make: *** [Worktodo.o] Error 1
Regression details gpuowl commit ID --> 5c5dc666 --> Pass gpuowl commit ID --> efbbcbf4b --> Fail
Can someone help with this issue?