Comments (18)
Hey @nyue, can you try modifying the following in openvdb_ax/openvdb_ax/CMakeLists.txt
:
openvdb/openvdb_ax/openvdb_ax/CMakeLists.txt
Lines 108 to 114 in 9153c12
and simply remove the first branch to become:
llvm_map_components_to_libnames(_llvm_libs
native core executionengine support mcjit passes)
set(LLVM_LIBS "${_llvm_libs}")
from openvdb.
Still not working
nyue@head0:~/projects/OpenVDB/11.0.0/build$ ninja
[232/328] Linking CXX executable openvdb_cmd/vdb_ax/vdb_ax
FAILED: openvdb_cmd/vdb_ax/vdb_ax
: && /usr/bin/c++ -O3 -DNDEBUG openvdb_cmd/vdb_ax/CMakeFiles/vdb_ax.dir/main.cc.o -o openvdb_cmd/vdb_ax/vdb_ax -L/home/nyue/systems/TBB/2020.3.0/lib -Wl,-rpath,/home/nyue/systems/TBB/2020.3.0/lib:/home/nyue/projects/OpenVDB/11.0.0/build/openvdb_ax/openvdb_ax:/opt/sesi/hfs19.5.773/dsolib:/home/nyue/projects/OpenVDB/11.0.0/build/openvdb/openvdb:/home/nyue/systems/boost/1.81.0-py3.9/lib: openvdb_ax/openvdb_ax/libopenvdb_ax.so.11.0.0 /opt/sesi/hfs19.5.773/dsolib/libjemalloc.so openvdb/openvdb/libopenvdb.so.11.0.0 /home/nyue/systems/TBB/2020.3.0/lib/libtbb.so.2 /opt/sesi/hfs19.5.773/dsolib/libblosc.so /usr/lib/x86_64-linux-gnu/libz.so -pthread /home/nyue/systems/boost/1.81.0-py3.9/lib/libboost_iostreams.so.1.81.0 /home/nyue/systems/llvm/10.0.1/lib/libLLVMMCJIT.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMExecutionEngine.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMRuntimeDyld.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMPasses.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMipo.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMInstrumentation.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMVectorize.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMIRReader.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMAsmParser.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMLinker.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86CodeGen.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMAsmPrinter.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMDebugInfoDWARF.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMCFGuard.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMGlobalISel.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMSelectionDAG.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMCodeGen.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMTarget.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMScalarOpts.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMAggressiveInstCombine.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMInstCombine.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMBitWriter.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMTransformUtils.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMAnalysis.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMProfileData.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86AsmParser.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86Desc.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMObject.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMMCParser.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMBitReader.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMCore.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMRemarks.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMBitstreamReader.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMTextAPI.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86Disassembler.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMMCDisassembler.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMMC.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMBinaryFormat.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMDebugInfoCodeView.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMDebugInfoMSF.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86Info.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMX86Utils.a /home/nyue/systems/llvm/10.0.1/lib/libLLVMSupport.a -lz -lrt -ldl -ltinfo -lpthread -lm /home/nyue/systems/llvm/10.0.1/lib/libLLVMDemangle.a && :
openvdb_ax/openvdb_ax/libopenvdb_ax.so.11.0.0: undefined reference to `llvm::sys::getDefaultTargetTriple()'
collect2: error: ld returned 1 exit status
[237/328] Building CXX object openvdb_houdini/openvdb_houdini/CMakeFiles/SOP_OpenVDB_Combine.dir/SOP_OpenVDB_Combine.cc.o
ninja: build stopped: subcommand failed.
from openvdb.
Hey @nyue, thanks for trying that - I'm at a bit of a loss, the right libraries seem to be there. How did you install llvm? Could you also provide the full cmake
configure and all ninja
build output and I'll see if I can investigate.
from openvdb.
Hi, i had same error like @nyue , but its all working now, but i have sop_openvdb_ax error when i am staring houdini.
Houdini DSO error on '/root/houdini19.5/dso/SOP_OpenVDB_AX.so'
/root/houdini19.5/dso/SOP_OpenVDB_AX.so: undefined symbol: _ZTIN7openvdb9v9_1_sesi2ax7codegen8FunctionE
Building openvdb11 with ABI9, for houdini 19.5.773
Compile for openvdb, openvdb_ax, openvdb_cmd, and openvdb_houdini was fine.
I attached 2 txt file with compile output first openvdb core, openvdb_ax, and openvdb_cmd, and second houdini
openvdb-vdb_ax_compile_part01.txt
openvdb-vdb_ax_compile_part02.txt
from openvdb.
@Idclip for the runtime link error that @CeeGee describe, would it help if OpenVDB build static libraries in addition to shared library and when building the Houdini plugin, it links with the static version.
This may alleviate the Houdini plugin from loading SESI's build of OpenVDB
from openvdb.
Hi @CeeGee:
Hi, i had same error like @nyue , but its all working now
Good to hear, what was the problem in the end?
but i have sop_openvdb_ax error when i am staring houdini.
Houdini DSO error on '/root/houdini19.5/dso/SOP_OpenVDB_AX.so'
/root/houdini19.5/dso/SOP_OpenVDB_AX.so: undefined symbol: _ZTIN7openvdb9v9_1_sesi2ax7codegen8FunctionE
Houdini's version of OpenVDB does not include AX symbols or headers. So the fact that it's trying to find openvdb::v9_1_sesi::ax::codegen::Function
at runtime to me means that when you compiled SOP_OpenVDB_AX
, your build picked up the Houdini headers first instead of your local headers. The Houdini openvdb headers will export their openvdb namespace v9_1_sesi
- if this is found first on the include path, it will cause SOP_OpenVDB_AX to look for v9_1_sesi
symbols at runtime, which won't exist. For example, on MacOS H19.5.773:
cat /Applications/Houdini/Current/Frameworks/Houdini.framework/Versions/19.5/Resources/toolkit/include/openvdb/version.h | grep OPENVDB_VERSION_NAME
#define OPENVDB_VERSION_NAME v9_1_sesi
#define OPENVDB_VERSION_NAME v9_1_sesi_abi9
@CeeGee - instead of doing two builds, could you try a single install of OpenVDB Core/Ax/Cmd/Houdini? And if that fails, could you send your CMake
command and output and verbose make
output (build with make VERBOSE=1
).
@Idclip for the runtime link error that @CeeGee describe, would it help if OpenVDB build static libraries in addition to shared library and when building the Houdini plugin, it links with the static version.
@nyue - there actually shouldn't be any runtime clashing of libopenvdb and libopenvdb_sesi AFAIK. As mentioned above, both libraries export entirely different symbols; ours will export openvdb::vXX
and Houdini's will export openvdb::vXX_sesi
. So you can have both loaded at runtime without any problems. The important thing is to use the matching ABI and correct namespace at build time when building your plugins against OpenVDB and Houdini. Our CMake should be doing this but there may be a bug there
from openvdb.
Hi @Idclip
I think on my side was due some LLVM library, that i install on Ubuntu 22.04, at the end i reinstall system and used proper LLVM
I am new in compile world, i am more FX artist, but wanted to go more into vdbPoints, not just for caching heavy flip and wwater sim, but also to be able to use them in other section, that why i wanted to first test openVDB points for mantra
some examples you can find here, 1bil points render, raasterize 2.6bil voxels using vdbPoints and vdbrasterize
https://www.dropbox.com/scl/fo/a7gjdvy870bznyrfex1xw/h?rlkey=dftr1nzyl9ehxv91oscm40hys&dl=0
and then to explore VDB AX, and see how it can help and boost my current setups, and also to do some free tutorials on this topic, to show other artist how powerfull this can be, personaly think it bit under radar for most artists.
Here is single build and install:
01 - cmake command and also ouput from cmake with all -D options
02 - make and install, everything goes fine till 99%, then SOP_OpenVDB_AX.so some error and vdb_ax tool errors
after i copy all compiled files and when i start houdini i get for example
SOP_OpenVDB_From_Particles.so: undefined symbol: _ZN7openvdb9v11_0abi98GridBase15vecTypeToStringENS0_7VecTypeE
wich i dont get any of this if i compile separate
Hope this help, and sorry if i missed something.
Thanks a lot for help.
from openvdb.
Thanks @CeeGee - I think I know whats going on. @nyue I also have a suspicion with regards to the undefined symbol issue with llvm::sys::getDefaultTargetTriple()
from all the above info - see below.
@CeeGee - your main issue is that there are some conflicting installations of some libraries on your system (tbb
, blosc
, libz
). We should be able to get around this by telling CMake to use the libraries from Houdini. Try adding the following to your CMake command:
-D Tbb_INCLUDE_DIR=/opt/hfs19.5.773/toolkit/include
-D TBB_LIBRARYDIR=/opt/hfs19.5.773/dsolib
-D DISABLE_CMAKE_SEARCH_PATHS=ON
You may need to manually provide the location of boost
if CMake complains about that too:
-DBoost_DIR=/usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/
I've also spotted the llvm::sys::getDefaultTargetTriple
issue in your log too. See below to solve this one.
@nyue - I believe the the llvm::sys::getDefaultTargetTriple
symbol issue is to do with GCC's dual ABI. This is a bit complex, but essentially there's an ABI difference with the version of std::string
and std::list
provided by your system and what Houdini 19.5 expects. OpenVDB uses the same ABI as Houdini, but a default build of LLVM will have used the systems ABI. llvm::sys::getDefaultTargetTriple
returns a std::string
, so the symbol differs between the OpenVDB build vs the system LLVM version.
We only use this in one place in libopenvdb_ax
:
openvdb/openvdb_ax/openvdb_ax/compiler/Compiler.cc
Lines 74 to 76 in 9153c12
Can you please try and replace llvm::sys::getDefaultTargetTriple()
with LLVMGetDefaultTargetTriple()
(the C variant). If it can't find the function, you may also need to include #include <llvm-c/TargetMachine.h>
(but my tests worked without this).
from openvdb.
@Idclip The use of LLVMGetDefaultTargetTriple() resolved my issues. I can build everything cleanly without errors on Ubuntu 18.04 + Houdini 19.5, thank you.
from openvdb.
Hi @Idclip
After your suggestion, everything compile without anyproblem, only one part of AX give me some warning
warning: type qualifiers ignored on cast result type [-Wignored-qualifiers] , you can see in txt file
compile03.txt
But after when i want to use openVDB sop plugins in houdini i get this error
/opt/hfs19.5.773/bin/houdini-bin: symbol lookup error: /home/user/houdini19.5/dso/SOP_OpenVDB_Create.so: undefined symbol: _ZN15openvdb_houdini18createVdbPrimitiveER9GU_DetailSt10shared_ptrIN7openvdb9v11_0abi98GridBaseEEPKc
Maybe i should reinstall my ubuntu 22.04, and tried install all librarys again.
from openvdb.
@CeeGee you probably need to make sure libopenvdb_houdini.so
is added to your runtime path, I don't think our CMake does that automatically. libopenvdb_houdini.so
is installed into your Houdini lib
folder. To check, in your log, you should see something like this:
-- Installing: /root/houdini19.5/lib/libopenvdb_houdini.so.11.0.0
-- Installing: /root/houdini19.5/lib/libopenvdb_houdini.so.11.0
-- Installing: /root/houdini19.5/lib/libopenvdb_houdini.so
So in this example, you should append /root/houdini19.5/lib
to your LD_LIBRARY_PATH
before launching Houdini. In a bash terminal, that would look like this:
> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/houdini19.5/lib/
> houdini
from openvdb.
@Idclip aaa yes i forgot about that part, to much compile, delete tests
Its all working now, but only VDB AX is crashing houdini, you add node, its all good, if you want to type some simple expresion, or use houdini_example scene from openvdb page, instant crash, you can see in txt file
compile04.txt
from openvdb.
Hey @CeeGee, it looks like this issue with the dual ABI is more involved than I thought. I need to investigate this a bit more. There are two things you could try, but I haven't had a chance to test either yet, I'm hoping to this week:
- Install LLVM from source and build it with the old ABI using
-D_GLIBCXX_USE_CXX11_ABI=0
. For you, it would look something like this:
> git clone https://github.com/llvm/llvm-project.git llvm-project
> cd llvm-project/llvm
> git checkout llvmorg-13.0.0 # Chosen to build LLVM 13
> mkdir .build
> cd .build
# CMAKE_INSTALL_PREFIX will install it into a local `llvm-project/install` folder, as you probably don't want to install it to your system
# -D_GLIBCXX_USE_CXX11_ABI=0 is the important one - this builds with the compatible C++ ABI
> cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/../install -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" ..
> make install -j4
And then, when building VDB, add the path to your new compatible build:
cmake -DLLVM_DIR=<path/to/llvm>/install <rest of your commands>
- OR, try with Houdini 20! From Houdini 20 SideFX has support for both the old and new C++ ABI. For linux you'll see two install options for Houdini 20, one with GCC9.3, the other with GCC11.2. The ones with GCC11.2 will use the newer ABI, for example see the outlined ones below:
I should note that we don't even have any tests with Houdini 20 yet so you may run into other issues with this approach.
from openvdb.
@Idclip Thanks a lot for all tips and guide informations, i will try and let you know.
from openvdb.
@Idclip and @nyue
Everything is working now, thanks a lot for all help.
from openvdb.
@Idclip One small question,
Where is good place to ask question about some houdini_openvdb_ax examples, google group or here on discussion tab.
For example i am trying to create flip preview with vdb ax. with color. Here is my vex vs vdb ax, i only miss color ramp, i tried but no luck for now
Thanks
from openvdb.
Hey @CeeGee, the discussion tab on github is the best place for these types of questions, or you can email the public OpenVDB email group too: [email protected]
Interesting, I took a look and have it working for me, see below:
Although AX doesn't natively support ch
and chramp
expressions, the OpenVDB AX SOP in Houdini does support them! You won't be able to use those functions outside of Houdini, but I took a look at your VEX code and you should be able to use the identical VEX and parameter interface (including the ramp) on an AX SOP.
Let me know if you still can't get it to work
from openvdb.
@Idclip aaa yes its working now, maybe some type error on my side was problem.
I was just making preview setup for flip and wwater caches, and some simple solution how you can use vdb_ax to help
with vdbrasterize, to tweak data that you have in wwater caches and create new att based on age, faomdensity, speed...
so far works great. Thanks for helping.
from openvdb.
Related Issues (20)
- [BUG] I cannot compile my code using NanoVDB
- Loosing surface in level set when decreasing voxel size HOT 2
- [BUG] Unresolved References when building without explicit instantiation HOT 1
- [BUG] VolumeHDDA with a semi-infinite ray that misses, marches off in an infinite loop.
- [BUG] I cannot compile my code using NanoVDB HOT 1
- dilate voxels from a PointDataGrid HOT 2
- [BUILD] Windows - Visual Studio 2019 : fatal error LNK1248 HOT 3
- [BUG] OpAccumulator does not compile with C++20 HOT 2
- [BUILD] Python module failure to build on MSVC 2022 with numpy: ssize_t: undeclared identifier HOT 2
- wasm build in dockerfile
- ThreadSanitizer issue in fillWithSpheres() function HOT 1
- [BUG] Remove FindOpenEXR.cmake
- [BUG] Remove FindTBB.cmake
- [BUG] Numpy array to openvdb conversion returns a shuffled volume HOT 2
- [BUILD] How do I enable BLOSC compression codec?
- [BUG] MINIMUM_GCC_VERSION is incorrect HOT 2
- [REQUEST] SDF Xor operation HOT 1
- pyopenvdb file streaming HOT 2
- [BUG] New and exciting linking errors with 11 and previously working code HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openvdb.